티스토리 뷰
1. SiteMesh의 정의
SiteMesh(http://www.sitemesh.org/)는 웹 페이지의 레이아웃을 효율적으로 처리할 수 있도록 도와주는 프레임워크입니다.
쉽게 말해서 웹사이트의 동일한 상단, 하단, 메뉴 부분을 한곳에서 관리하고 각각의 페이지는 실제 내용만을 관리할 수 있도록 해줍니다.
즉, 상단/하단/메뉴와 같이 반복되는 부분이 각 페이지마다 들어가 있으면 추후 유지보수가 어렵기 때문에
SiteMesh와 같은 프레임워크를 사용하는 것이죠.
웹사이트를 제작하던 초기에는 iframe으로 나누어서 처리하기도 했었구요.
SiteMesh 이전에는 include를 활용해서 이런 형태를 구현하기도 했었습니다.
그러나 iframe은 확장이 어렵고 지원하지 않는 브라우저도 많이 있었네요.
또한 include는 모든 페이지마다 해당 부분을 삽입해줘야 하는 이슈가 있었죠.
그래서 실제로 SiteMesh를 사용해보면 얼마나 편리한지 알 수 있을 겁니다.
2. SiteMesh의 처리 방식
SiteMesh는 기본적으로 Java Servlet 환경에서 Filter 형태로 동작하고 있으며
다음 그림과 같이 Decorator 페이지를 한번 필터링 하는 방식입니다.
기존 페이지는 웹서버가 바로 렌더링된 페이지를 보내주지만 SiteMesh에서는 Decorator 페이지를 한번 더 거치게 된다는 것이죠.
다음 그림을 보면 SiteMesh의 방식을 좀 더 자세히 이해할 수 있을 것 같네요.
미리 중간에 있는 이미지와 같이 Decorator를 정의해 둡니다.
상단의 {title}과 우측의 Body-Content만 각각의 파일들은 가지고 있으면 되는 것이죠.
즉, welcome.jsp와 search.cgi와 같은 파일에는 본문에 들어갈 내용만 가지고 있으면 되는 겁니다.
이제 Filter를 통해 decorator를 거치면서 하단과 같이 동일한 상단, 하단, 메뉴를 가지고 있는 페이지로 사용자에게 전송됩니다.
개념은 매우 간단하구요. Java 뿐만 아니라 CGI, PHP, ColdFusion 등에서도 SiteMesh를 활용할 수 있다고 합니다.
3. SiteMesh의 다운로드 및 설치
먼저 SiteMesh를 다운로드해야 하는데요. 현재 SiteMesh3 알파버전이 소개되고 있습니다.
SiteMesh2를 사용하려면 여기를 눌러서 sitemesh-2.4.2.jar 파일을 다운로드 하시면 됩니다.
설치하는 방법은 /web/WEB-INF/lib 폴더에 복사하면 됩니다. (여기에서 /web은 프로젝트의 Web Content 폴더를 의미합니다.)
그리고 /web/ 하위에 SiteMesh의 Decorator를 위한 폴더를 하나 만들고 SiteMesh를 적용할 jsp 파일을 하나 생성하면 됩니다.
/web/decorators/decorator.jsp
여기에서 decorators 폴더명이나 decorator.xml 파일명은 다른 것을 사용하셔도 됩니다.
나중에 SiteMesh 설정에서 맞춰서 지정만 해주면 되니까요.. ^^
실제 decorator.jsp에는 다음과 같은 형태로 지정하면 됩니다.
먼저 tablib를 설정해 주셔야 합니다.
그리고 <decorator:head/> <decorator:body/> 부분이 실제 페이지의 <head>와 <body>의 내용을 넣는 부분이라고 보시면 됩니다.
4. SiteMesh의 설정
이제 마지막으로 SiteMesh의 설정을 해보도록 하겠습니다.
3개의 XML 파일을 처리해 줘야 하는데요. 모두 /web/WEB-INF/ 하위에서 작업하면 됩니다.
1) web.xml
SiteMesh는 Filter 형태로 동작한다고 했으므로 web.xml에 필터 관련 설정을 해줘야 합니다.
특별히 수정할 사항 없이 그대로 지정해 주시면 됩니다.
2) sitemesh.xml
이어서 sitemesh와 관련된 설정을 해줘야 합니다.
이 부분에서도 맨 위의 <property> 부분의 value만 맞춰서 적어주시면 되는데요.
기본적으로 /web/WEB-INF/ 하위에 모든 설정파일을 둘 경우, 그대로 사용하셔도 됩니다.
3) decorator.xml
마지막으로 Decorator를 설정하는 부분을 살펴보도록 하시죠..
여기에서는 SiteMesh를 적용할 곳의 패턴들을 지정할 수 있습니다.
위 예에서는 /en과 /ko 하위의 모든 파일에 sitemesh를 적용하라는 것인데요.
excludes 를 활용해서 특정 파일이나 폴더만 제외할 수도 있습니다.
그리고 여기에서 사용하는 defaultdir 이나 page는 SiteMesh 다운로드 및 설치에서 생성한 폴더와 파일명이라는 것을 기억해 두시기 바랍니다.
SiteMesh를 자주 사용하면서도 한번도 정리한 적이 없었던 것 같아서 작성해봤네요.
처음 사용하시는 분들에게 도움이 되었으면 합니다.
Sitemesh 더 알아보기...
웹 페이지 레이아웃을 설정하는 SiteMesh 세팅 및 활용에 대하여~
Sitemesh에서 메타 태그로 Decorator에 값 전달하기~
'프로그래밍 > Java' 카테고리의 다른 글
jsoup을 활용해서 Java에서 HTML 파싱하는 방법 정리 (1) | 2012.05.31 |
---|---|
Proxy를 이용한 HTML 소스 가져오기 (0) | 2012.05.24 |
프로그래밍 주석에 대한 정리 및 몇가지 팁~ (0) | 2012.04.16 |
float와 double 타입.. (0) | 2011.11.01 |
javadoc 생성시 한글 깨질때.. (0) | 2011.10.17 |