티스토리 뷰

Framework/Spring

SpringMVC + Tiles 적용하기

Su-Dong, Han 2011. 12. 6. 14:54

오늘은 SpringMVC가 적용된 프로젝트에 Tiles 적용이 가능한지 검토한 과정을 정리해 봅니다.

기존에 UrlBasedViewResolver를 사용해 Return URL을 처리해 둔 상태였고,

기존 소스는 건들지 않고 Tiles를 함께 사용하는게 목적이었습니다.

** 추가 **
Tiles 사용을 위해 라이브러리 추가가 필요합니다.
여기서 사용된 라이브러리 파일은 tiles-api-2.2.2.jar, tiles-core-2.2.2.jar, tiles-jsp-2.2.2.jar,
tiles-servlet-2.2.2.jar, tiles-template-2.2.2.jar 입니다.
라이브러리 파일은 http://tiles.apache.org 에서 다운로드 받을 수 있습니다.
********* 


이를 위해 먼저 web.xml에 servlet을 하나 추가해 줍니다.

    
        tiles
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            
                /WEB-INF/config/springmvc/dispatcher-servlet-internal.xml,
            
        
        2
    
    
        tiles
        *.tiles
    


저는 기존 servlet와 구분해서 테스트하기 위해 'tiles'를 이름으로 정했습니다.


그리고 tiles를 위한 dispatcher-servlet 설정 파일을 생성합니다.

    
        
        
        
    

    
        
    

    
        
            
                /WEB-INF/config/kpaa/tiles/tiles-defs.xml
            
        
    

tiles에서 사용할 controller을 스캔하기 위한 설정도 필요하면 추가해주고

TilesView와 TilesConfigurer에 대한 설정을 추가해 줍니다.

다음은 tiles-definitions을 추가하기 위한 tiles-defs.xml을 추가하도록 하겠습니다.

경로는 위에서 정의한 /WEB-INF/config/xxx/tiles/tiles-defs.xml 입니다.



    
        
        
        
        
        
    
    
    
        
        
    



mainLayout의 화면 구성은 4단으로 구성되면 header, left, content, footer 영역으로 나뉘어 집니다.

아래 보이는 content1은 mainLayout을 확장한 정의로 content영역의 내용만 바뀌도록 설정한 것입니다.

그리고 mainLayout에서 템플릿으로 사용하고 있는 layout.jsp 내용을 살펴 보겠습니다.

 

tiles-definitions에서 정의한 header, left, content, footer를 테이블로 정의하고 있습니다.

그리고 header.jsp, left.jsp, content.jsp, footer.jsp 파일을 생성하면 되는데 이 부분은 생략하도록 하겠습니다.

(테스트 용으로 현재 사용중인 파일들을 그냥 사용했습니다. )

여기까지 잘 따라오셨으면 Tiles를 위한 기반 작업이 거의 끝나가고 있습니다.

마지막으로 테스트를 위한 controller만 작성하면 되겠습니다.

dispatcher-servlet 설정 파일에 지정한 base-package에 controller를 생성하고, 커맨드는 *.tiles로 지정하면 됩니다.

@Controller
public class TilesTestController {

    @RequestMapping(value="/kpaa/testTiles2.in")
    public String testTiles2() throws Exception {
        return "mainLayout";
    }

}

이렇게 생성하면 /testTiles2.tiles라는 요청이 왔을때 앞에서 정의한 mainLayout의 결과화면이 보여지게 됩니다.


** UrlBasedViewResolver를 이전에 사용하고 있지 않다면 굳이 설정 파일을 안나눠도 가능하지만
   기존 설정을 살려야 했기에 조금 더 복잡한 설정이 필요했습니다.
   결국 기존에 frameset 구성을 살리기 위해 Tiles는 안쓰기로 결정했지만 좋은 경험이었습니다.
 
댓글