SiteMesh ?!

Blair·2024년 1월 28일
1

CODE SNACKS 📚

목록 보기
1/6
post-thumbnail

SiteMesh ?

contents
정의웹 페이지를 구성하는 레이아웃을 효율적으로 만들 수 있게 도와주는 프레임워크
용도웹 페이지에서 상단, 하단, 메뉴같이 공통된 부분들을 한 곳에 집중하여 처리하고, 변경되는 중간의 콘텐츠만 변경될 수 있도록 해 준다.
동작 방식공통으로 적용될 레이아웃과 구성 요소를 정의하고 있는 데코레이터를 응답 결과에 적용하는 방식으로 동작함.
구성레이아웃 코드 및 헤더와 몸체가 삽입될 위치 정보로 구성됨.어떤 생성 화면이든지 데코레이터를 적용하기만 하면 데코레이터에 정의된 레이아웃과 공통 영역이 적용된 응답 결과를 볼 수 있다.

SiteMesh vs jsp include ?

SiteMeshinclude
중복 코드 발생 가능성낮음높음
사용 방식완전한 HTML 페이지를 생성한 뒤 Decorator Pattern을 사용하여 HTML 페이지에 레이아웃을 입히는 방식전체 페이지 중 내용 부분에 해당하는 코드만을 생성하는 방식 (Tiles, Velocity)
특징레이아웃 템플릿을 만들어주는 기술 중의 하나.레이아웃 자체를 변경하거나 새로운 영역을 추가해야 할 경우 전체 jsp 페이지를 변경해주어야 하는 부담이 있음

SiteMesh 동작 방식

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

PageFilter(servelet filter) ?

💡 SiteMesh를 설정하기 위해 설정해야 하는 것
 <filter-mapping>
		 <filter-name>sitemesh</filter-name>
     <url-pattern>/*</url-pattern>
 </filter-mapping>
  • 위 예시는 / 로 들어오는 모든 요청에 대해서 PageFilter를 적용한다고 설정 한 것
  • PageFilter는 요청 URL과 매칭되는 데코레이터를 검색한 뒤, 데코레이터가 발견될 경우 결과 HTML에 매칭되는 데코레이터를 적용한다.
  • 따라서, 데코레이터가 적용되어야 하는 URL의 경우 반드시 PageFilter에 매핑시켜주어야 함.

Decoratror ?

💡 jsp 페이지로서, SiteMesh가 제공하는 커스텀 태그를 사용하여 결과 HTML 페이지를 꾸밈.
contents
<decorator:head />원본 소스에서 head 요소 부분에 있는 내용(..)을 <decorator:head /> 부분에 삽입
<decorator:body />원본 소스에서 body 요소 부분에 있는 내용(..)을 <decorator:head /> 부분에 삽입
<decorator:title [default=".."] />원본 소스에서 title 요소 안에 내용을 <decorator:title /> 부분에 삽입
<decorator:getProperty property="..." [default="..."][writeEntireProperty=".."] />원본 페이지의 프로퍼티를 가져옴
<decorator:usePage id="..." />원본 페이지의 객체에 접근할 수 있
<page:applyDecorator name=".." />decorator.xml에 decorator 등록된 name으로 해당 jsp를 적용
<page:param name=".." />decorator할 페이지에서 <decorator:getProperty />로 값을 가져올 수 있음
profile
Active 🙌 Curious 🤔 Energetic 💪

0개의 댓글