composite view 패턴
여러개의 페이지로 view를 구성한다.
가장 많이 쓰이는 프레임웤이 apatch tiles
5개는 모델1 방식이었는데 module.do를 거쳐서 나오게 되서 모델2로 바뀜
하지만 bts는 원래 모델2였는데 굳이 module.do를 거쳐야될까?
->module.do거치면 bts서블릿에서 이미 버퍼에서 응답내보내서 에러나서 include방식으로 바꿨었음.
그렇다면 기존의 bts에서(forward) 사용할 수 있는 방법은 없을까? - 오늘할거
menuURI추가해줌
model1이면 module.do를 타고 model2이면 바로 동작하게 함.
->하지만 메뉴를 벗어남 -> 프레임워크
이렇게 하면 프레임워크 안써도 되는데 우리가 만들화면이 여러개라면(메뉴화면 나오게하는) 그때마다 이 코드가 중복됨, 수정사항 발생하면 다 고쳐야됨.
-> 프레임웤만든다.
프로퍼티스파일을 꼭 .properties로 안만들고 xml로 만들어도 됨
여기에 load-on을 1로 준다고 해도 장담못함
다른 서블릿들은 @로 실행되고 있는데 거기에 어떻게 설정되있을지 모름
->application전체를 통틀어 처음 실행되게 해야됨.
application의 이벤트 헨들러. 리스너..?
왼쪽에 있는 것들이 할 수 있는 이벤트 그 옆에 있는게 그 이벤트를 사용하려면 구현하라는 것들
제일 먼저 만들어지는건 servletContext
-> 이게 생성되는 시점에 properties를 읽어주면 됨. 이 이벤트핸들러를 이용하면됨.
리스너가 가지고 있는메서드를 보면 처리할 수 있는 이벤트를 알 수 있다.
어플리케이션을 통틀어 제일먼저 실행, 제일 마지막에 사라진다는 것
모든 이벤트는 자기를 발생시킨 타겟에 대한 정보 가지고 있다.
예외
checked exception
unchecked exception
예외가 발생했을때 적극적으로 처리해야되느냐 그렇지 않아도 버추얼머신한테 그냥 넘겨도 되느냐.
un-최상위가 Runtime ex
톰캣한테 thorows 못한다면 예외의 종류를 바꿔야 한다.
우리가 만든 프레임워크 제한
1. xml이 클래스패스 밑에 있어야한다.
2. 서블릿의 확장자가 .composite여야한다.
우리가 만든 jar사용하려면
1. xml에 우리가 쓸 jsp 넣어놓기
2. 리스너, 디스패처 동작해야됨->web.xml에 등록
tiles사용
definition1, 2는 구성되있는 타일이 다름 - 다르다는것 어디에 설정되있어야됨
매번 쓰기 귀찮음
커스텀템플릿 추가하려는 것
xml만들기
contents는 뭐가될지 모름-지금 정의할 수 없음
-> 이 definition은 완전한게 아님 추상 definition
추상클래스 같은거
-> 자식이 결정되고 상속받을때 결정된다.
definition도 상속있다.
definition name은 logicalView
인터넷뱅킹타이머 - 맨처음 세션 타이머 보여줌
2. 시간 흘러갈때마다 시간이 줄어듬.
3. 0되면 타이머 멈춰야됨
4. 세션 연장 할건지 물어봄
5. 연장하겠다고 하면 다시 2분으로
안하겠다고 하면
서버사이드 내 세션이 연장이 되야됨
1. 타임아웃이 흘러가기전에 요청을 한번 보내서 세션이 있게 해야된다..? - 페이지 리셋되면 원래하던거 날라감 -> 비동기 요청
2. 그다음에 연장
단, 페이지 모듈화되서 tiles 맞춰주기..