Spring 공부 2021-03-29
뉴렉처 Spring 41강
Tiles 지시서 작성하기
각각 inc 폴더에 담긴것들을 Tiles를 이용하는 방법
*Tiles 최신버전이 2017인이유는 최근에는 소규모 프로젝트를 프론트엔드에서 만들고있기때문
Tiles를 이용하기 위해서 tiles.apache.org/ 에 접속한다.
Documentation 에 Tiles 3.0x 로 들어간다.
하단의 Tutorial을 들어가 Tiles 사용법메뉴를 보도록한다.
Creating Tiles Pages로 들어가면 Tiles를 설정할수 있도록 하는 문서가 나타난다.
문서 내용을 확인해보면 Tiles를 정의할수있는 문서가 나온다.
맨 첫번째 줄을 제외하고 복사한뒤 기본적으로 /WEB-INF/tiles.xml 이라는 경로안에 두어야한다.
WEB-INF안에 tiles.xml을 만들어 준뒤 복사했던 내용을 붙여넣기해준다.
ListController를 Tiles 하기위해 반환하게될 페이지 경로를 바꾸어주도록한다.
( Tiles로 반환을 하기위함 )
일반적으로는 ( . ) 을 사용한다.
경로값을 바꾸어주었다면 tiles.xml 의 이름과 매핑이 되어야한다.
tiles.xml의 name도 바꾸어주도록한다.
detail 페이지도 tiles하려면 detail 컨트롤러와 tiles.xml또한 같은방식으로 수정,추가 해준다.
tiles.xml 을 보게되면 name 옆에는 template으로 layout 설정을 해주고
조각 페이지 내용들을 밑에 붙여주는 방식이다. (페이지가 나누어져있는것을 합쳐주는 작업)
현재 사용자가 만들어놓은 경로에 맞게 수정을 해준다.
header , footer , body는 기본적으로 만들어져있으니 value값을 수정해주고
visual과 aside 또한 추가해준다.
*body 실제 notice.list가 나타내야하는 페이지
*경로가 틀리면 404에러가 발생할수있으니 조심하도록 한다.
레이아웃 페이지 만들기와 Tiles 라이브러리 설정하기
현재 지시서는 두가지가 존재하고있다 ( ViewResolver를 이용해서 페이지를 찾아주는 지시서와 , Tiles를 사용한 지시서 )
Tiles 지시서는 Layout의 어디에다 포함할것인지 위치를 정해야한다.
위치를 정하기위해서 layout.jsp 페이지로 가준다.
tiles가 제공하는 태그라이브러리를 이용해 위치를 작성해줘야 하기때문에
pom.xml에서 tiles 라이브러리를 가져오도록한다. (Maven)
라이브러리를 추가한뒤 layout.jsp 에서 사용하기위해 taglib 를 작성(지시)해준다.
그다음 layout.jsp의 header부분으로 가서 tiles태그의 insertAttribute 를 사용한다.
insertAttribute에 사용된 name은 tiles.xml의 header 를 적용한다.
나머지 부분도 header부분과 같이 위치에 동일하게 작성해준다. ( main은 body로 작성함 )
tiles.xml에 있는 title은 tiles에 문자열 또한 저장을 할수 있기때문에 사용해 보기위해 수정해준다.
layout.jsp로 돌아가 title 부분을 tiles태그의 getAsString을 사용해 title을 작성해 준다.
Tiles ViewResolver 설정하기
Tiles로 조각난 페이지들을 맞추어주고나서 View페이지로 보내기 위해서는
dispatcher-servlet.xml 로 이동해 Resolever를 설정해주어야한다.
설정을하면 Resolever가 2개이기 때문에 우선순위를 (order) 정해 주어야한다.
tiles.xml에서 못찾으면 order 의 value ="2" 가 처리하는 방식
dispatcher-servlet.xml을 수정한다음엔 jstl 라이브러리를 추가해주도록한다
pom.xml -> Dependencies -> jstl ( 태그라이브러리(지시부)를 사용했기때문 )
추가한후에 저장하고 index페이지를 재시작한뒤
URL주소를 notice/list로 작성해보면 tiles와 resolever가 잘 작동된것을 볼수있다.
Tiles 설정에 Wildcard 사용하기
Tiles설정에 비효율적인부분 개선
list와 detail의 tiles설정은 비슷하기때문에 와일드카드(패턴)을 사용하여 tiles설정을 개선할수있다.
( * ) : 와일드카드
첫번째 와일드카드 호출 : {1}
* 와일드카드는 여러개사용할수있고 {1} {2} {3} 몇번째 위치인지 숫자로 와일드카드 문자열을 호출할수있다.
와일드카드의 여러가지 사용법은 tiles 사이트에서 확인할수있다.
다양한 방식으로 패턴을 사용할 수 있다는걸을 확인할수있다.
(EX)
Root 페이지들을 위한 Layout 페이지 만들기
index페이지의 header와 footer 를 설정하기위한 작업
Root에 존재하는 페이지들이 사용할수있는 layout 페이지를 하나 만들어준다.
index.jsp를 복사해서 루트 inc폴더안에 붙여넣기한뒤 layout으로 이름을 바꾸어준다.
layout.jsp 페이지의 header 부분과 footer 부분을 제외한 나머지부분 (content부분) 을 잘라내기해준다.
그리고 index.jsp 페이지에 첫번째 지시부를 제외하고 지워준뒤 붙여넣기를 해준다.
( notice와 같은 방식 )
그리고 layout.jsp로 돌아와 분리한 모듈을 합쳐주기위해 taglib의 tiles를 지시해준다
태그라이브러리 tiles를 이용해 notice의 layout.jsp 와 같은 방식으로 나누어진 페이지를 붙여주도록한다.
나누어진 페이지들을 붙여주는 작업은 layout.jsp에서 설정해놨으니
tiles.xml로 이동해 Root안에 있는 페이지들을 tiles 설정하도록한다.
tiles.xml에서 definition을 추가해 name설정을 일반적으로 root에있기때문에 *을 사용해도 되겟지만
*은 notice 조차 포함되어있기때문에 notice 설정한 tiles에도 영향을 끼치게된다
그렇기때문에 root.* 로 수정해주고 indexController로 돌아가 반환하는 값을 수정해준다.
tiles.xml
indexController
반환값에 root를 붙여준다 ( 단순 tiles를 거쳐가기 위함 )
실제로 index페이지를 요청해본다면 tiles가 잘 적용된것을 확인할수있다.
뉴렉처 Spring 강의 45강 완