tiles :: 2.2.2 버전 web.xml 설정 세 가지 방법

Language/JSP 2012. 10. 29. 11:18

1. web.xml 의 <servlet> 태그 활용

아래는 web.xml 에 추가되야 하는 부분의 예제 코드이다.

 

 <servlet>
        <servlet-name>tiles</servlet-name>
        <servlet-class>org.apache.tiles.web.startup.TilesServlet</servlet-class>
        <init-param>
            <param-name>
                  org.apache.tiles.definition.DefinitionsFactory.DEFINITIONS_CONFIG
            </param-name>
            <param-value>
                  /WEB-INF/tiles-hello.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
 </servlet>

 

 

물론 여기서 태그 설정 파일(여기서는 tiles-hello.xml) 이 WEB-INF 폴더 밑에 있어야 한다.

그러므로 이 방법을 선택할 분은 <param-value> 이 부분을 자신이 설정한 이름에 맞게

바꿔 주면 된다.

 

 

 

 

 

2. web.xml 의 <listener> 와 <context-param> 사용하기

 

 <listener>
        <listener-class>org.apache.tiles.web.startup.TilesListener</listener-class>
 </listener>
 
 <context-param>
        <param-name>
               org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
        </param-name>
        <param-value>
               /WEB-INF/tiles-hello.xml
        </param-value>
 </context-param>

 

1번 방법과 큰 차이는 없으며 여기서도 역시 <param-value> 의 몸체에 해당하는 부분만

자신이 설정한 tiles 설정 파일의 이름에 맞게 바꿔 주면 된다.

 

 

 

 

 

3. 이제 마지막 .. 세 번째 방법.. 이거 때문에 삽질 좀 했다.

먼저 여기서는 두 개의 자바 파일이 필요하다. 아래 두 개의 자바 파일 중 첫 번째 꺼를 먼저

컴파일 한 후 두 번째꺼를 컴파일 해줘야 한다.

 

첫 번째 자바 파일(TestTilesContainerFactory.java)

첫 번째 자바 파일에서 사용자가 설정한 태그 파일(여기서는 /WEB-INF/tiles-hello.xml) 를

추가 해주는 것을 확인할 수 있다.

 

package tiles;

import java.io.IOException;
import java.util.List;
import java.util.ArrayList;
import java.net.URL;
import org.apache.tiles.factory.BasicTilesContainerFactory;
import org.apache.tiles.TilesApplicationContext;
import org.apache.tiles.context.TilesRequestContextFactory;
import org.apache.tiles.definition.DefinitionsFactoryException;

public class TestTilesContainerFactory extends BasicTilesContainerFactory {

protected List<URL> getSourceURLs(TilesApplicationContext applicationContext,   TilesRequestContextFactory contextFactory) {
        List<URL> urls = new ArrayList<URL>();
        try {
            urls.add(applicationContext.getResource("/WEB-INF/tiles-hello.xml"));
        } catch (IOException e) {
            throw new DefinitionsFactoryException("Cannot load definition URLs", e);
        }
        return urls;
    }
}

 

 

두 번째 자바 파일(TestTilesListener.java)

 

package tiles;

import tiles.TestTilesContainerFactory;
import org.apache.tiles.TilesApplicationContext;
import org.apache.tiles.web.startup.AbstractTilesListener;
import org.apache.tiles.startup.TilesInitializer;
import org.apache.tiles.startup.AbstractTilesInitializer;
import org.apache.tiles.factory.AbstractTilesContainerFactory;

 

public class TestTilesListener extends AbstractTilesListener {

    @Override
    protected TilesInitializer createTilesInitializer() {
        return new TestTilesListenerInitializer();
    }

    private static class TestTilesListenerInitializer extends AbstractTilesInitializer {

        @Override
        protected AbstractTilesContainerFactory createContainerFactory(TilesApplicationContext  context) {
            return new TestTilesContainerFactory();
        }
    }
}

 

이 두 자바 파일을 컴파일 하는데 필요한 라이브러리는 아래와 같다. 나는 이 라이브러리를

WEB-INF\lib 밑에 놔뒀다.

 

tiles-servlet-2.2.2.jar
tiles-api-2.2.2.jar
tiles-core-2.2.2.jar

servlet-api.jar

 

그래서 내가 cmd 창에서 했던 명령어는 아래와 같다.


C:\Tomcat 6.0\webapps\JSP2\WEB-INF>javac -classpath lib\tiles-servlet-2.2.2.jar -d classes src\tiles\TestTilesContainerFactory.java


C:\Tomcat 6.0\webapps\JSP2\WEB-INF>javac -classpath classes;lib\servlet-api.jar;lib\tiles-servlet-2.2.2.jar;lib\tiles-api-2.2.2.jar;lib\tiles-core-2.2.2.jar -d classes src\tiles\TestTilesListener.java

 

참고로 두 자바 파일 모두 WEB-INF/src/tiles/ 밑에 존재하고 첫번째 자바 파일을 컴파일 하면

클래스 파일은

 

WEB-INF/classes/tiles/TestTilesContainerFactory.class

 

에 생성된다.

그러므로 두 번째 컴파일 할 때

 

classpath classes;

 

라고 되 있는 것은 첫 번째 컴파일된 클래스 파일을 두 번째 자바 파일이 import 하기 때문에

추가하고 있는 것이다.

 

이렇게 두 자바 파일 모두

 

WEB-INF/classes/tiles/

 

밑에 생성되고

 

이제 web.xml 은 아래와 같이 추가 해주면 된다.

 

 <listener>
         <listener-class>tiles.TestTilesListener</listener-class>
 </listener>

 

tiles.TestTilesListener 여기서 tiles 는 패키지 명이고 TestTilesListener 가

우리가 작성한 두번째 클래스 이름이다.

 

가장 중요한 것이 web.xml  이므로 이 부분을 잘 확인해 보기 바란다.


출처 - http://blog.naver.com/myca11?Redirect=Log&logNo=80127196294

'Language > JSP' 카테고리의 다른 글

Spring MVC  (0) 2012.10.31
MyBatis-Spring  (0) 2012.10.31
struts2 튜토리얼  (0) 2012.10.23
태그라이브러리 URI  (0) 2012.10.23
[centOS] apache2.2 + tomcat6 (yum 설치 성공 통합 정리)  (0) 2012.10.12
: