WEB Application

자바 Tiles 프레임워크 사용법과 특징

Tech Signal 2020. 10. 12. 19:05

Tiles: view 단에서 페이지를 모듈화하는 과정에서 사용되는 프레임워크

 

- 원래는 InternalResouceViewResolver 만 썼었는데, Tiles를 사용하면 viewResolver를 여러개 쓸 수 있다.

- Tiles는 Composite View Pattern을 사용한다. 

 

출처: Tiles 

1. tiles template 만들기 (design 을 갖고 있는 jsp)

2. insertAttribute . 그 세부 jsp들을 타일처럼 꽂아 넣어

3. definition이 최종적으로 뷰가 됨. xml에서 definition 만든다

 

 http://tiles.apache.org/dtds/tiles-config_3_0.dtd

preferences-> xml catalog에 이거 추가하삼 

 

수정 전: ViewResolver 1개만 사용. (servlet-context.xml에서 IRVR) / 각 컨트롤러에서 logical viewname 을 jsp로 return

수정 후: Tiles를 적용해 하나의 definition 으로 view를 만들어서 내보내야 / 이제 tiles의 definition xml자체를 컨트롤러가 써야됨

definition 예시

1. servlet-context.xml에서 tilesConfigurer를 빈 등록. 

servlet-context.xml

2. TilesViewResolver: 등록된 definition안에서 logival view name을 찾을 수 있도록 해주는 새로운 전략이다.

servlet-context.xml

 

이제 viewResolver가 2개니까 어떤 것을 먼저 쓸지 order 지정해줘야함

servlet-context.xml/ 순서 지정

이렇게되면 1번인 TVR이 먼저 logical View name 찾고 거기 없으면 다음 viewResolver에서 찾음. 

 

IRVR이 못 찾으면 404 Error가 나오는게 맞다. 그러므로 IRVR은 view Resolver 여러개 사용할 때 무조건 맨 뒤에 있어야함. 그래서 얘는 order를 안 넣어도됨 (int가 가질수있는 가장 큰 값인 2의 4제곱 -1 가지게됨)

 

 

<xml 수정 후에 체크할 것!>

- 페이지 모듈화할땐 root element(html, body 설정 등), 동일한 script 등이 중복되지 않아야함

 

이런거랑 HTML <head>, <body> 태그지워야함

 

Spring의 messageArgument 기능 {1}
중복되는 태그들을 지우지 않으면 에러가 난다.  
web.xml / appServlet에서 welcome 파일까지 매핑해주기.

 


ViewPreparer: 동적인 메뉴 생성 가능 (leftMenu)/ 뷰 전에 사용된다. 

 

MemberViewPreparer를 쓸건데 DI 받으려면 얘가 스프링 컨테이너에 bean으로 등록되어야함.

=> ViewPreparer를 스프링에 먼저 등록하고, 그 id를 tiles xml에서 받아 써야한다.

 


사용법 요점정리

 

1.  java resource 계층 아래에 있는 *-definition.xml에 attribute를 포함한 definition 추가

2. preparer 만들고 servlet-context.xml에서 preparer 빈 등록