Clean Code that Works.

[Xercer 파서 다운로드] (자바용)

위에 사이트로 들어 간후 Xerces-J-bin.2.9.0.zip 파일을 다운로드 해서 압축을 푼다.
압축을 풀면 5개의 여러가지 폴더와 파일과 5개의 .jar 파일을 볼 수 있다.
이중에서 xercesImpl.jar, xml-apis.jar 파일을
자바가 설치된 폴더의 /jre/lib/ext 폴더에 압축을 푼다.
ex: C:\Program Files\Java\jdk1.6.0\jre\lib\ext
그 후  

XMLReader reader
       = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");

이러한 형식으로 사용 하면 된다.

2.3 이하의 버젼에서는 web.xml에

<taglib>
   <taglib-uri>http://itexper.com/guest-tablib</taglib-uri>
   <taglib-location>/WEB-INF/tld/guest-taglib.tld</taglib-location>
</taglib>
이렇게 사용했으면 됬지만

2.4 버젼에서는
<jsp-config>
  <taglib>
   <taglib-uri>http://itexper.com/guest-tablib</taglib-uri>
   <taglib-location>/WEB-INF/tld/guest-taglib.tld</taglib-location>
  </taglib>
</jsp-config>
이렇게 사용해야 한다.

JSTL을 등록해서 사용할 경우에는 따로 web.xml에 등록할 필요가 없고.
아파치 사이트 http://jakarta.apache.org/taglibs/ 에서 다운로드 링크를 클릭하여 다운 받을 수 있다.

그 다음에 웹애플리케이션의 /WEB-INF/lib 디렉토리에 필요한 라이브러리를 복사 하면된다.
파일 압축을 풀어 lib 디렉토리 아래에 있는 파일을 복사하면 된다.
사용할때는 아래와 같은 형식으로 사용 하면된다.
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>

커넥션 풀 설정하는 방법중에 한가지 라고 하는데 이 전 커넥션풀(jdc pool)설정은 그럭저럭 쉽게 할 수 있었는데 DBCP설정하는것은 영 어려워서 --; 이클립스로 작업하는데 이클립스 화면에서 따라할 수 있게 나온게 아니라서(그림으로 안되어 있으면 이해도가 떨어지는 1人) 좀 찾기가 어려웠다. --;

일단 DBCP를 설정할려면 4개의 jar 파일이 있어야 한다.
1. 오라클 jdbc 파일(ojcbc14.jar) : Tomcat5.5/common/lib 폴더에 위치시켜야 한다.
2. commons-collections-3.2.jar
3. commons-dbcp-1.2.2.jar
4. commons-pool-1.3.jar
1번 파일은 오라클 사이트에 들어가면 다운로드 받을 수 있고, 2~3번 파일은 아파치 사이트(Collections, DBCP, POOL)에 가면 받을 수 있다. 1번파일은 네이버에 검색해서 받는게 빠르다.(오라클 사이트 가입필요)
[2~3번 파일 받는곧]
사용자 삽입 이미지

2~3번 파일을 위의 이미지의 WebContent/WEB-INF/LIB 폴더에 위치 시키면
Java Resources:src/Libraries/Web App Libraires/ 에 3개의 파일의 있는것을 확인 할 수 있다.

이 파일들이 들어가 있는걸 확인했으면 다음 단계로 Tomcat 의 server.xml 파일과 위에 이미지의 web.xml(프로젝트의 web.xml)파일을 수정 해야 한다.
사용자 삽입 이미지

확대해서 보실려면 클릭하세요.


위와 같이 server.xml을 수정한 후 web.xml 파일에 아래와 같은 코드를 추가 해야 한다. <web-app>안에다가 추가 하면 된다.
<resource-ref>
  <description>Oracle Datasource example</description>
  <res-ref-name>jdbc/myoracle</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>
그런 다음 커넥션을 만든다음에 테스트 하면 된다.

[DBCP연결 영문 사이트] [참고 블로그]
 

DBCP Pool 테스트중 아래와 같은 에러가 발생~!!!!
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '
' for connect URL 'null'

이것은 Tomcat의 server.xml 파일이 잘못되었기 때문이다~!
server.xml 파일을 열어보면.
<Context docBase="JSP_STUDY" path="/JSP_STUDY" reloadable="true" source="org.eclipse.jst.j2ee.server:JSP_STUDY"/></HOST>

<Resource name="jdbc/myoracle" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@IPAddress:1521:orcl"
username="SCOTT" password="TIGER" maxActive="20" maxIdle="10"
maxWait="-1"/>


아마도 저렇게 되어있을 것이다.
이것을 수정 하려면 Context 안에 Resource를 포함 해야 한다.
<Context docBase="JSP_STUDY" path="/JSP_STUDY" reloadable="true" source="org.eclipse.jst.j2ee.server:JSP_STUDY">

<Resource name="jdbc/myoracle" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@IPAddress:1521:orcl"
username="SCOTT" password="TIGER" maxActive="20" maxIdle="10"
maxWait="-1"/>
</Context>
</Host>


이렇게 수정하면 완료~

오라클 10g 기준 첨부파일(ojdbc14.jar)파일을 톰캣 설치 폴더/common/lib 폴더에 복사하면 된다.
/common 디렉토리는 톰캣 서버와 모든 웹 애플리케이션이 공유하는 클래스 디렉토리이다.


JDBC에 연결하려면 적어도 JDBC URL과 user 계정과 비밀번호를 알아야 한다. 이것이 제대로 맞지 않으면 아래와 같은 Exception이 발생한다.


host 주소가 맞지 않은 경우 또는 listener가 떠있지 않은 상태
java.sql.SQLException: IO 예외 상황: The Network Adapter could not establish then connection


db명(SID, 호스트 스트링)이 틀릴 경우
java.sql.SQLException: IO 예외 상황: Connection
refused(DESCRIPTION=(TMP=)(VSNNUM=135290990)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))


아이디와 패스워드가 틀릴 경우
java.sql.SQLException: 널 사용자나암호가 THIN 드라이버에서 지원되지 않습니다.

출처 : 모델 2로 다시 배우는 JSP

연결하기 전에 포트 SQL 서버 포트번호 확인하고 포토 열렸는지 확인한다.
ms-sql JDBC드라이버 설치한후 연결.테스트

<%@ page contentType = "text/html;charset=euc-kr" %>
<%@ page import = "java.sql.*" %>
<%
String dbDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbUrl = "jdbc:microsoft:sqlserver://IPAddress:1433;DatabaseName=jsp";
String dbId = "sa";
String dbPw = "password";

Connection conn = null;
Statement stmt = null;

try
{
Class.forName( dbDriver );

conn = DriverManager.getConnection( dbUrl, dbId, dbPw );

stmt = conn.createStatement();

conn.close();

out.println("mssql jdbc test: connect ok!!");
}
catch( Exception e )
{
out.println(e);
}
%>

포켓 pc 2003 에뮬레이터 인터넷 세팅하기!!

디버깅할때마다 PDA로 직접 확인 하려니 불편하더군요. 인터넷이 연결 되어 있어야 하는데 에뮬레이터로 인터넷 연결 하는 방법은 알지 못했는데 구글링 하니깐 나오더군요.

연결 하는 방법을 알아보면~ 전 Visual Studio 9.0 Code name Orcas(아직 베타) 사용중입니다.
VisualStudio2005와 큰 차이는 없어요.

ActiveSync 4.0 이상이 설치 되어 있어야 하고 다른건 별로 설정 안해줘도 됩니다.

설정 하는 방법을 보면
1. Tools -> Device Emulator Manager 를 실행시킵니다.
2. 여기있는 메뉴중에 Pocket PC 2003 SE Emulator를 선택한 후 마우스 오른쪽을 클릭 합니다.
3. 메뉴중에 디바이스에 연결이 안되어 있으면(Connect가 활성화) 연결하고 Cradle 를 클릭합니다.
4. 그 후 에뮬레이터에 있는 익스플로러를 실행시켜서 인터넷이 연결 됬는지 확인 하면 됩니다~!


[원문 블로그]
사용자 삽입 이미지

Device Emulator Manager 실행 화면


사용자 삽입 이미지

디바이스 연결

.
사용자 삽입 이미지

Cradle 선택


사용자 삽입 이미지

PDA 에뮬레이터로 블로그 접속.



SQL 서버에서 값을 받아 오는데 이게 데이터 타입이 nchar에다가 값이 "34.8 " 이렇게 되있었다.

이전 C#에서 값을 받아 올때는 인트로 받아 와야 해서. int.parse(reader.getString(0));
이렇게 했지만. 저 경우에는 값이 "2" 이런 정수.
이번에는 정수가 아니라서 한시간 동안 삽질하다가...
그냥 일단 스트링으로 받고 더블로 바꾼다음에 더블을 인트로 다시 변환 -_ -;; 좋은 방법이 있을것인데 도무지 생각이 안나더라..;;
소스를 보면.

Humi[i] = reader.GetString(0).Trim(); 스트링 형태로 앞뒤 공백을 잘라서 저장
Light[i] = Double.Parse(Humi[i]); 더블형으로 변환
Temp[i] = Convert.ToInt16(Light[i]); 인트로 다운 캐스팅

구글신에게 좀 더 검색해 보니.
int number = (int)Math.Ceiling(doubleValue);
The smallest whole number greater than or equal to doubleValue. 뭔말이냐 -ㅁ-;;
1.0 이면 1로 1.1 이면 2로 2.1 이면 3으로 이런 식으로 변환된다는 뜻~!(MSDN에 예제가 나와서 그걸 보고 -ㅁ-ㅋ)
MSDN주소 클릭하세요
int number = Convert.ToInt32(doubleValue);
rounds it to the nearest number. 이건 반올림 한다는것??

아무튼.. 늦은 시간에 갑자기 바꾸라고 그래서 -_ㅠ 집에도 늦게갔다 -ㅅ- OTL.


ps. 글 작성하면서 MSDN에서 Convert.ToInt32(String)이것도 지원하던데.. 이러면 가운데 과정을 뺄수 있나..?
어제 해본거 같기도 하고 -_-; 다시 해봐야지. 훗. -ㅁ-;

Set ConnDB = server.CreateObject("ADODB.Connection")
ConnDB.open "Driver={SQL Server};Server=IPADDRESS;Database=데이터베이스;UID=sa;PWD=1234;"

아무리 봐도 이게 가장 괜찮은거 같다.

Session.Abandon() 요고 한줄이면 세션 클리어!!
이게 생각이 안나서 --; 검색을 해봐야 하는데 검색 않고 session("변수") = "" 이렇게 했다는 --;;;