..
DEV/java (42)
[sql-map] tip!!
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

[질문] SQL에 XML 문자(<, > 같은)가 들어가는 경우 해결책은?

 [답변] 두가지 방법이 있다.
(1) XML의 CDATA 섹션 사용하거나

    <statement id="getPersonsByAge" resultClass="examples.domain.Person"><![CDATA[
      SELECT *
      FROM PERSON
      WHERE AGE > #value#
    ]]></statement>

 (2) XML문자를 특수 엔터티 문자로 변환(AnyEdit 플러그인 사용하면 편함)

   <statement id="getPersonsByAge" resultClass="examples.domain.Person">
      SELECT *
      FROM PERSON
      WHERE AGE &gt; #value#
   </statement>

 [질문] SQL이 너무 많아 statement의 id 만으로는 구분이 어렵다면?

 [답변] iBatis는 namespace 개념을 지원한다. sql-map-config.xml 에서

     useStatementNamespaces 값을 true로 준다. 이제 SQL 정의 xml 파일을 여러개로

     나누고 각 파일별로 적당한 namespace를 지정한다.

* sql-map-config.xml

   <sqlMapConfig xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <settings
      cacheModelsEnabled="true"
      enhancementEnabled="true"
      useStatementNamespaces="true"
      lazyLoadingEnabled="true"
      maxRequests="512"
      maxSessions="128"
      maxTransactions="32" />

* SQL 파일에서 이렇게.

 <sqlMap namespace="Sample">

  <select id="getPersonsByAge" ...>

 * DAO 코딩 예("namespace.statement_id" 형식)

   return getSqlMapClientTemplate().queryForList("Sample.getPersonsByAge", "30");

 [질문] 실제 수행되는 쿼리 정보를 콘솔 및 로그에 찍고 싶은데?

 [답변] log4j.properties 파일에 아래처럼 설정한다.

(log4j.logger.java.sql.Connection=DEBUG 는 반드시 있어야한다.)

 log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

 아래 처럼 찍힌다.

 [2004/12/07 16:59:25] <DEBUG> sql.Connection : {conn-100003} Connection
[2004/12/07 16:59:25] <DEBUG> sql.PreparedStatement : {pstm-100004} PreparedStatement: select user_id, password, name, user_type, user_group, regist_date, status from   ws_user where user_id = ?
[2004/12/07 16:59:25] <DEBUG> sql.PreparedStatement : {pstm-100004} Parameters: [test1]
[2004/12/07 16:59:25] <DEBUG> sql.PreparedStatement : {pstm-100004} Types: [java.lang.String]
[2004/12/07 16:59:25] <DEBUG> sql.ResultSet : {rset-100005} ResultSet
[2004/12/07 16:59:25] <DEBUG> sql.ResultSet : {rset-100005} Header: [user_id, password, name, user_type, user_group, regist_date, status]
[2004/12/07 16:59:25] <DEBUG> sql.ResultSet : {rset-100005} Result: [test1, test1, 테스트유저, U, 01, 20041204, A]

[출처] iBatis SQL Map 팁|작성자 서영아빠

'DEV > java' 카테고리의 다른 글

숫자 -> 문자 문자 ->숫자 Integer.toString  (0) 2008.12.29
[sql-map] Dao : getSqlMapClientTemplate  (0) 2008.12.23
[sql-map] Dao : getSqlMapClientTemplate()  (0) 2008.12.23
  Comments,     Trackbacks
[sql-map] Dao : getSqlMapClientTemplate
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. update
getSqlMapClientTemplate().update("sqlMap-id",넘길값);

2. delete
getSqlMapClientTemplate().delete("sqlMap-id",넘길값);

3. insert
getSqlMapClientTemplate().insert("sqlMap-id",넘길값);

4. select
getSqlMapClientTemplate().queryForObject("sqlMap-id",넘길값); //반환값이 Object 형태

getSqlMapClientTemplate().queryForList("sqlMap-id",넘길값); //반환값이 List 형태

'DEV > java' 카테고리의 다른 글

[sql-map] tip!!  (0) 2008.12.23
[sql-map] Dao : getSqlMapClientTemplate()  (0) 2008.12.23
[sql-map] Dao : getSqlMapClientTemplate()  (0) 2008.12.23
  Comments,     Trackbacks
[sql-map] Dao : getSqlMapClientTemplate()
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. update
getSqlMapClientTemplate().update("sqlMap-id",넘길값);

2. delete
getSqlMapClientTemplate().delete("sqlMap-id",넘길값);

3. insert
getSqlMapClientTemplate().insert("sqlMap-id",넘길값);

4. select
getSqlMapClientTemplate().queryForObject("sqlMap-id",넘길값); //반환값이 Object 형태

getSqlMapClientTemplate().queryForList("sqlMap-id",넘길값); //반환값이 List 형태

'DEV > java' 카테고리의 다른 글

[sql-map] Dao : getSqlMapClientTemplate  (0) 2008.12.23
[sql-map] Dao : getSqlMapClientTemplate()  (0) 2008.12.23
[sql-map] isNull / isNotNull  (0) 2008.12.23
  Comments,     Trackbacks
[sql-map] Dao : getSqlMapClientTemplate()
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
1. update
getSqlMapClientTemplate().update("sqlMap-id",넘길값);

2. delete
getSqlMapClientTemplate().delete("sqlMap-id",넘길값);

3. insert
getSqlMapClientTemplate().insert("sqlMap-id",넘길값);

4. select
getSqlMapClientTemplate().queryForObject("sqlMap-id",넘길값); //반환값이 Object 형태

getSqlMapClientTemplate().queryForList("sqlMap-id",넘길값); //반환값이 List 형태

'DEV > java' 카테고리의 다른 글

[sql-map] Dao : getSqlMapClientTemplate()  (0) 2008.12.23
[sql-map] isNull / isNotNull  (0) 2008.12.23
request.getParameter("parameter") 널값 처리  (0) 2008.12.22
  Comments,     Trackbacks
[sql-map] isNull / isNotNull
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

<isNull property="yyyymm">WHERE REGDATE BETWEEN START_DATE AND END_DATE</isNull>
//Vo에서 넘어온 값(property)가 널이라면

<isNotNull property="yyyymm">WHERE REGDATE BETWEEN '$yyyymm$'||'01' AND '$yyyymm$'||'30'</isNotNull>

'DEV > java' 카테고리의 다른 글

[sql-map] Dao : getSqlMapClientTemplate()  (0) 2008.12.23
request.getParameter("parameter") 널값 처리  (0) 2008.12.22
velocity로 java 문법 사용하기  (0) 2008.12.22
  Comments,     Trackbacks
request.getParameter("parameter") 널값 처리
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

요청시 (~~~.do?parameter=value&parameter=value)

request.getParameter("parameter") 로 파라미터 값을  받는다.

 만약!!


그 이유는!!!

'DEV > java' 카테고리의 다른 글

[sql-map] isNull / isNotNull  (0) 2008.12.23
velocity로 java 문법 사용하기  (0) 2008.12.22
implements Serializable  (0) 2008.12.20
  Comments,     Trackbacks
velocity로 java 문법 사용하기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

jsp의 경우 :

velocity의 경우 :


http://www.caucho.com/resin-3.0/jsp/velocity.xtp#foreach-statements

'DEV > java' 카테고리의 다른 글

request.getParameter("parameter") 널값 처리  (0) 2008.12.22
implements Serializable  (0) 2008.12.20
서블릿 컴파일 후에 실행이 안되요  (0) 2008.08.28
  Comments,     Trackbacks
implements Serializable
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

implements Serializable

- 자바 빈즈에 붙어 있음

시리얼가능(Serializable) 하도록 만드는 이유는
해당 개체를 직렬화해서 네트워크 전송시 혹은 개체 저장/복원시 편하게 하기 위해서입니다.
직렬화를 하지 않으면 각 정보들을 보내기 위한 구조로 재편하는 작업에서 공수가 많이 들어가는데
직렬화를 시켜버리면 그럴 필요없이 개체 그 자체를 보내도 O/S 상관없이 java 환경에서는 무조건
원상복구 시킬 수 있습니다.

빈즈가 데이터이므로 직렬화를 해두는거죠.
  Comments,     Trackbacks
서블릿 컴파일 후에 실행이 안되요
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
서블릿 파일을 만들고나서 실행을 시킨다.

Hello.java(서블릿 파일이라고 가정해 보자!)

web-inf 폴더 안에 classes 폴더 안에 Hello.java파일을 넣어 놓자.

* 톰캣 안에서 어플리 케이션을 만들려면-----------------------------------------------------------
 Tomcat 5.5 / Webapp / 안에다가 자신이 만들고자 하는 어플리케이션 이름의 폴더를 만든다.(MyApp)
 그런 다음에 web-inf 폴더를 만들고 그안에 web.xml 파일을 Root폴더 안의 web.xml파일을 복사해서 넣는
 다.

 lib - jar파일이나 자원파일을 넣어놓자. (자원파일 : 만들려는 class 파일이 필요로 하는 라이브러리 파일...)
 classes - 내가 만드는 class파일이 위치한다.

만약 서블릿 파일을 만들려고 한다면?
classes파일에다가 만들자. 그런데 html나 jsp파일은 web-inf안에다가 넣으면 실행을 못시키니까
어플리 케이션 안에 종류별로 폴더를 만들어서 관리하고 실행시켜야 한다. (MyApp안에다가)

서블릿 파일을 컴파일 시킬려면 jsp-api.jar파일이 꼭 필요한데 클래스 패스를 찾지 못할 경우에

cmd - java파일 경로 - javac -classpath "자르파일 경로" 자바파일.java 이렇게 컴파일 하면 된다.

""묶어주는 이유는 컴파일시 경로에 공백이 있으면 안되는데 묶어주면서 가능해짐.ㅋ

실행 시키려면 http://localhost:8080/MyApp/servlet/Hello

꼭 servlet을 넣어야한다.

그런데 실행이 안된다.
-----------------------------------------------------------------------------------------------------------------------

실행이 되도록 하는 방식은 web.xml파일을 건드려 보자.

서블릿을 개발하면 보통 다음과 같이 web.xml에 등록하지 않습니까?

꼭 이과정을 거치지 않고 디플로이와 동시에 서블릿을 호출할 수 있는 방법은 없을까요?

web.xml 내용을 수정하고 서버를 내리지 않고도 반영하기 위해서죠...

감사합니다.

--------------- 다음 --------------------------

 <servlet>
  <servlet-name>XXX</servlet-name>
  <servlet-class>com.intranet.XXXServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>XXX</servlet-name>
  <url-pattern>/XXX</url-pattern>
 </servlet-mapping>

출처 : Tong - truemania님의 JAVA 통

Tomcat 4.X 버전 이후부터 보안상을 이유로 서블릿을 무조건 호출하는 대신 web.xml에 개별 서블릿에 대한 클래스 및 경로를 적도록 바뀐 것으로 알고 있습니다.


님께서 쓰신 것처럼 사용하려는 클래스와 그 클래스를 호출할 수 있는 경로가 쌍으로 기술되어져야 합니다.


<servlet>
        <servlet-name>servletName</servlet-name>
        <servlet-class>package.servletClass</servlet-class>
</servlet>

<servlet-mapping>
        <servlet-name>servletName</servlet-name>
        <url-pattern>servletURL</url-pattern>
</servlet-mapping>


* servlet

servlet-name: 아래 servlet-mapping에 기술해주기 위한 식별자입니다.

servlet-class: 실제 서블릿 클래스입니다. 패키지까지 정확하게 써야 합니다.


* servlet-mapping

servlet-name: 위의 servlet에 명시한 이름입니다.

url-pattern: 어떠한 URL 경로로 접근할 수 있는지를 명시합니다.


예를 봅시다.

file 패키지 안에 DownloadServlet.java 라는 파일이 있다고 가정하고,

 <servlet>
    <servlet-name>downloadServlet</servlet-name>
    <servlet-class>file.DownloadServlet</servlet-class>
 </servlet>


이 서블릿은 /servlet/download 와 같은 URL 패턴일 때 호출됩니다.

 <servlet-mapping>
  <servlet-name>downloadServlet</servlet-name>
  <url-pattern>/servlet/download</url-pattern>
 </servlet-mapping>


물론 Tomcat 4.X 버전까지는 예전과 같은 호출 방법도 가능합니다. 5.X 버전은 잘 모르겠네요.


 <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
 </servlet-mapping>


이렇게 쓰시면 서블릿마다 일일이 web.xml에 써주지 않아도 서블릿 호출이 가능합니다.



  Comments,     Trackbacks
이클립스에서 스트럿츠 프레임 워크 세팅하기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
1. 이클립스 설치 http://eclipse.org -> Download 3.3 version
    - tomcatplugin
      http://www.sysdeo.com/eclipse 아래쪽에 tomecatplugin 클릭
      tomcatPluginV31.zip 다운
2. TomCat http://tomcat.apache.org 다운후 설치 struts도 다운

3. 이클립스에서 스트럿츠를 편리하게 사용하기 위해서는
    GEF(Graphical Editing Framework), htmleditor, strutsIDE가 필요하다.
    GEF : http://www.eclipse.org/gef/ 
    htmleditor :
    http://amateras.sourceforge.jp/cgi-bin/fswiki_en/wiki.cgi?page=EclipseHTMLEditor
    strutsIDE : https://sourceforge.jp/projects/amateras/files/?release_id=24130#24130

4. 라이브러리 다운후 각 파일을 압축을 풀고
    - GEF는 eclipse가 설치된 폴더에 붙여넣기 한다.
    - htmleditor과 strutsIDE 는 eclipse설치파일/plugins에 붙여넣기 한다.

5. 이제 프로젝트를 시작해 보자.
    이클립스를 켜고 프로젝트를 생성한다. 프로젝트 - 동적 웹

6. 프로젝트 생성 후 struts를 추가한다.
    프로젝트를 클릭후 마우스 오른쪽 - new - other을 선택
    Amateras/struts 폴더 밑에 add struts support를 선택하고 next한다.
    tiles와  validator plugin을 사용하겠다는 것!! finish 클릭

7. web-inf아래에  Struts-config파일이 생성되었다면 성공 이제 스트럿츠를 사용해 보자!!

8. 설정
<tomcat 설정>
    윈도우 - 설정 - tomcat5.5 - context file 설정 - 확인
    포트바꾸기 : tocathome\conf\server.xml 8080을 원하는것으로
<java 설정>
    윈도우 -  설정 - Java - 설치된 jre - 추가 클릭

'DEV > java' 카테고리의 다른 글

서블릿 컴파일 후에 실행이 안되요  (0) 2008.08.28
JSP 페이지 이동 4가지 방법 및 특성  (0) 2008.05.30
prodList.jsp  (0) 2008.05.24
  Comments,     Trackbacks