SiteMesh 프레임워크

박보서·2024년 2월 23일

실무에서 jsp를 사용해 화면을 그리는데 구조가 일반적으로 생각한 것과는 달라 확인해보니
sitemesh 프레임워크를 사용하고 있었다.
구현 시 사용해보니 레이아웃을 효율적으로 재사용 할 수 있는 매커니즘을 제공해 유지보수를 원활히 한다는 점에서 spa와 일부 유사하다고 느꼈다.
사용해본 적이 없는 sitemesh 프레임워크.. 이 김에 공부해보자!!


크게 동작 방식, 사용하기 위한 설정 파일, 사용 예시를 공부해 보겠다.

1. SiteMesh 동작 방식

1) 데코레이터에 전달되는 HTML 페이지는 , , 등을 포함한 완전한 HTML 페이지
데코레이터에 전달되는 HTML 페이지는 레이아웃과 관련된 내용은 포함되지 않는다
2) 데코레이터는 레이아웃 정보를 담고 있는 JSP 페이지
앞서 생성한 HTML 페이지에 저장된 (title 등의) 메타 정보와 body 태그에 포함된 내용을 추출한 뒤, 레이아웃의 알맞은 위치에 추출한 내용을 삽입하여 최종 결과를 생성

2.SiteMesh를 통한 레이아웃 적용 시 필요한 설정 파일

SiteMesh를 사용하여 웹 페이지에 레이아웃을 적용하기 위해서는 다음의 두 가지를 필요로 한다.

1) SiteMesh 설정 파일

-> web.xml 파일
/ 로 들어오는 모든 요청에 대해서 PageFilter를 적용한다고 설정.
PageFilter는 요청 URL과 매칭되는 데코레이터를 검색한 뒤, 데코레이터가 발견될 경우 결과 HTML에 매칭되는 데코레이터를 적용한다.
데코레이터가 적용되어야 하는 URL의 경우 반드시 PageFilter에 매핑시켜주어야 한다.

-> decorators.xml 설정 파일
실제 데코레이터에 대한 정보를 담고 있는 decorators.xml 파일을 작성

2) decorators.xml 설정 파일

<decorator name="submenu" page="submenu_decorator.jsp">
  <pattern>/sub/*</pattern>
</decorator>

<decorator name="main" page="main_decorator.jsp">
  <pattern>/*</pattern>
</decorator>
  • decorator 태그 당 한 개의 데코레이터를 설정
  • name : 데코레이터 이름
  • page : 데코레이터로 사용 될 jsp 페이지
  • pattern : 데코레이터 적용할 패턴

3. 데코레이터 사용 예시

1) 데코레이션 될 JSP 코드 : /sub/submain1.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
  <title>서브 메인 1</title>
  <script type="text/javascript">
  window.onload = function() {
  }
  </script>
</head>
<body>
  서브 메인 1 //=> 여기에 있는 내용이 <decoartor:body/> 에 들어가게 됨 
</body>
</html>

2) 데코레이터 JSP : /decorators/submenu_decorator.jsp


<%@ page contentType="text/html; charset=UTF-8" %>
  <%@ taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator" %>
    <html>
      <head>
        <title><decorator:title default="테크리포트" /></title>
        <decorator:head />
      </head>
      <body>
        <div>공통 헤더</div>
        <hr/>
        <decorator:body />
        <hr/>
        <div>공통 푸터</div>
      </body>
    </html>
    ```


#### - 해당 decorator:body 부분에 데코레이션 될 jsp 코드가 들어가게 된다.

3) decorators.xml 파일에 등록


<decorators defaultdir="/decorators">
    <decorator name="submenu" page="submenu_decorator.jsp">
        <pattern>/sub/*</pattern>
    </decorator>
</decorators>

     

-> page : 데코레이터 jsp
-> pattern : 데코레이터 jsp가 적용 될 파일 경로
-> defaultdir : 데코레이터 jsp가 위치할 경로
-> name : 데코레이터 이름

profile
? -> ! 보서의 지식 채굴 여정기

0개의 댓글