Upload
sukjin-yun
View
152
Download
2
Embed Size (px)
Citation preview
Design PatternApply For Servlet / JSPservlet으로배우는디자인패턴
#2 Observer Pattern
Target Audience
디자인패턴공부할때는콘솔에출력만해봤는데웹은그냥하면복사해서하면되는거아닌가요?
GOF책을봐도적용이안되요.
회사에는 Ctrl + V 하고있어요.
Pre requisition
experience with using on java based application
knowledge of Web Programing
Observer 패턴이란?(1)
1대 100이란 퀴즈 프로는 게스트 1명과 방청객 100이 함께 퀴즈를 푸는 프로입니다.
게스트가 답을 선택하면(상태를 변경하면) 방청객 100명에게 선택한 답이 보여집니다. (통지됩니다.)
Observer 패턴이란 (2)
Subject
Subject구현 클래스
subjectState
<<Interface>>Observer
update():void
Observer구현클래스
update():void
register
unregister
notify
*1
Observer 패턴이란?(3)
서블릿에서는어떻게할까
사용자가 로그아웃할 때 내게 알려주었으면..
세션 타임아웃되서 나갈때도 내가 알았으면..
로직을 추가할 곳이 마땅치 않을 때는리스너를 써보자.
HttpSessionListener선언
@WebListener
public class SessionListener implements HttpSessionListener, HttpSessionAttributeListener {}
세션 상태에 대해이벤트 받자
세션 속성에 대해이벤트 받자
Session이추가되면
public void sessionCreated(HttpSessionEvent sessionEvent) {
sessionEvent.getSession().getId());
}
D70A9A78650752E4A87BCD40A6F9B487
unique한 id값은 종료시에 얻자.
Session을어떻게저장했었지?
session.setAttribute( Key , Value )
다시 Session이추가되면
public void attributeAdded (HttpSessionEvent sessionEvent) {
(String)sessionEvent.getSession().getAttribute(“KEY값”)}
세션종료도확인하자.
public void sessionDestroyed(HttpSessionEvent sessionEvent) {
logger.debug(“세션이종료됬음” +sessionEvent.getSession.getId() );
}
프로그램이시작되면..
Path 는 하나의 프로젝트Path 는 하나의 컨텍스트
프로그램이 시작될 때같은 프로젝트에 있는요소라면 뭔가 자연스럽게하고 싶다.
ServletContextListener선언
@WebListener
public class MyContextListener implements ServletContextListener {}
시작할때뭔가하자.
시작할때
@WebListener
public void contextInitialized(ServletContextEvent e){}
시작할때뭔가하자.2
@WebListener
public void contextInitialized(ServletContextEvent e){
ServletContext context = e.getServletContext();
context.setAttribute(“key”, value);
}
앞에서한거꺼내서쓰자.
@WebServlet(“/myServlet”)
public class MyServlet extends HttpServlet{
//생략 doGet(//생략){
getServletContext().getAttribute(“key”);
}
To Other Time
To Other Place
To other Us