Tiles: view 단에서 페이지를 모듈화하는 과정에서 사용되는 프레임워크
- 원래는 InternalResouceViewResolver 만 썼었는데, Tiles를 사용하면 viewResolver를 여러개 쓸 수 있다.
- Tiles는 Composite View Pattern을 사용한다.

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자체를 컨트롤러가 써야됨

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

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

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

이렇게되면 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> 태그지워야함




ViewPreparer: 동적인 메뉴 생성 가능 (leftMenu)/ 뷰 전에 사용된다.
MemberViewPreparer를 쓸건데 DI 받으려면 얘가 스프링 컨테이너에 bean으로 등록되어야함.
=> ViewPreparer를 스프링에 먼저 등록하고, 그 id를 tiles xml에서 받아 써야한다.
사용법 요점정리
1. java resource 계층 아래에 있는 *-definition.xml에 attribute를 포함한 definition 추가
2. preparer 만들고 servlet-context.xml에서 preparer 빈 등록
'WEB Application' 카테고리의 다른 글
웹 크롤링 vs 스크레핑 차이 (0) | 2021.08.06 |
---|---|
JAVA 누적 방문자 수 체크 (0) | 2020.11.18 |
스프링 프레임워크 설치 및 테스트 (Spring) (0) | 2020.10.06 |
Front Controller Pattern 복습, CKEditor 파일 올리기 (0) | 2020.10.05 |
TIL (Command 패턴, jQuery 폼 플러그인 ) (0) | 2020.10.03 |