ݺߣ

ݺߣShare a Scribd company logo
Design Pattern 
Apply For Servlet / JSP 
servlet으로 배우는 디자인 패턴 
#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()); 
} 
D70A9A78650752E4A8 
7BCD40A6F9B487 
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

More Related Content

What's hot (17)

S#03 김용현:VS2010으로 마이그레이션
S#03 김용현:VS2010으로 마이그레이션S#03 김용현:VS2010으로 마이그레이션
S#03 김용현:VS2010으로 마이그레이션
codercay
예외처리갶이드
예외처리갶이드예외처리갶이드
예외처리갶이드
도형 임
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
JeongHun Byeon
오버라이딩을 사용한 테스트 시의 설정 처리
오버라이딩을 사용한 테스트 시의 설정 처리오버라이딩을 사용한 테스트 시의 설정 처리
오버라이딩을 사용한 테스트 시의 설정 처리
도형 임
TEST?
TEST?TEST?
TEST?
beom kyun choi
JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개
Hyunil Shin
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
Suwon Chae
Effective unit testing ch3. 테스트더블
Effective unit testing   ch3. 테스트더블Effective unit testing   ch3. 테스트더블
Effective unit testing ch3. 테스트더블
YongEun Choi
01 윈도우프로그램 들어가기
01 윈도우프로그램 들어가기01 윈도우프로그램 들어가기
01 윈도우프로그램 들어가기
jaypi Ko
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
ChangHyeon Bae
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
SangIn Choung
구글테스트
구글테스트구글테스트
구글테스트
진화 손
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기
Heo Seungwook
13.포인트컷(ǾԳٳܳ)
13.포인트컷(ǾԳٳܳ)13.포인트컷(ǾԳٳܳ)
13.포인트컷(ǾԳٳܳ)
탑크리에듀(구로디지털단지역3번출구 2분거리)
Coded ui가이드
Coded ui가이드Coded ui가이드
Coded ui가이드
SangIn Choung
Backend Master | 3.2.1 Test - JUnit
Backend Master | 3.2.1 Test - JUnitBackend Master | 3.2.1 Test - JUnit
Backend Master | 3.2.1 Test - JUnit
Kyunghun Jeon
[실전 윈도우 디버깅] 13 포스트모템 디버깅
[실전 윈도우 디버깅] 13 포스트모템 디버깅[실전 윈도우 디버깅] 13 포스트모템 디버깅
[실전 윈도우 디버깅] 13 포스트모템 디버깅
종빈 오
S#03 김용현:VS2010으로 마이그레이션
S#03 김용현:VS2010으로 마이그레이션S#03 김용현:VS2010으로 마이그레이션
S#03 김용현:VS2010으로 마이그레이션
codercay
예외처리갶이드
예외처리갶이드예외처리갶이드
예외처리갶이드
도형 임
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
JeongHun Byeon
오버라이딩을 사용한 테스트 시의 설정 처리
오버라이딩을 사용한 테스트 시의 설정 처리오버라이딩을 사용한 테스트 시의 설정 처리
오버라이딩을 사용한 테스트 시의 설정 처리
도형 임
JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개
Hyunil Shin
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
Suwon Chae
Effective unit testing ch3. 테스트더블
Effective unit testing   ch3. 테스트더블Effective unit testing   ch3. 테스트더블
Effective unit testing ch3. 테스트더블
YongEun Choi
01 윈도우프로그램 들어가기
01 윈도우프로그램 들어가기01 윈도우프로그램 들어가기
01 윈도우프로그램 들어가기
jaypi Ko
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
ChangHyeon Bae
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
SangIn Choung
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기
Heo Seungwook
Backend Master | 3.2.1 Test - JUnit
Backend Master | 3.2.1 Test - JUnitBackend Master | 3.2.1 Test - JUnit
Backend Master | 3.2.1 Test - JUnit
Kyunghun Jeon
[실전 윈도우 디버깅] 13 포스트모템 디버깅
[실전 윈도우 디버깅] 13 포스트모템 디버깅[실전 윈도우 디버깅] 13 포스트모템 디버깅
[실전 윈도우 디버깅] 13 포스트모템 디버깅
종빈 오

Viewers also liked (19)

Design pattern study 6 command pattern
Design pattern study 6 command patternDesign pattern study 6 command pattern
Design pattern study 6 command pattern
dragor0123
Builder, prototype, singleton pattern
Builder, prototype, singleton patternBuilder, prototype, singleton pattern
Builder, prototype, singleton pattern
YoonJong Choi
Api design for c++ pattern
Api design for c++ patternApi design for c++ pattern
Api design for c++ pattern
jinho park
Doc4SM 제품설명서
Doc4SM 제품설명서Doc4SM 제품설명서
Doc4SM 제품설명서
Daniel Lim
Observer pattern dragor
Observer pattern dragorObserver pattern dragor
Observer pattern dragor
dragor0123
객체지향의 사실과 오해를 읽고
객체지향의 사실과 오해를 읽고객체지향의 사실과 오해를 읽고
객체지향의 사실과 오해를 읽고
Daniel Lim
Doc4 sm 사용자_가이드
Doc4 sm 사용자_가이드Doc4 sm 사용자_가이드
Doc4 sm 사용자_가이드
Daniel Lim
Desing pattern study 8 template method pattern
Desing pattern study 8 template method patternDesing pattern study 8 template method pattern
Desing pattern study 8 template method pattern
dragor0123
개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2
Daniel Lim
Game Design patterns, Visitor, State, FSM pattern
Game Design patterns, Visitor, State, FSM patternGame Design patterns, Visitor, State, FSM pattern
Game Design patterns, Visitor, State, FSM pattern
Young Ha Kim
Design Pattern 3
Design Pattern 3Design Pattern 3
Design Pattern 3
Daniel Lim
Desing Pattern-2
Desing Pattern-2Desing Pattern-2
Desing Pattern-2
Daniel Lim
Design pattern 4
Design pattern 4Design pattern 4
Design pattern 4
Daniel Lim
Design pattern study 4 factory pattern _ by dragor0123
Design pattern study 4 factory pattern _ by dragor0123Design pattern study 4 factory pattern _ by dragor0123
Design pattern study 4 factory pattern _ by dragor0123
dragor0123
Design patterns 스터디 - Singleton 패턴
Design patterns 스터디 - Singleton 패턴Design patterns 스터디 - Singleton 패턴
Design patterns 스터디 - Singleton 패턴
Hyunho-Cho
Design Pattern - Singleton Pattern
Design Pattern - Singleton PatternDesign Pattern - Singleton Pattern
Design Pattern - Singleton Pattern
Mudasir Qazi
20140524 Cloud design pattern - AMIMOTO AMI를 이용해 5분만에 끝내는 WordPress 구축
20140524 Cloud design pattern - AMIMOTO AMI를 이용해 5분만에 끝내는 WordPress 구축20140524 Cloud design pattern - AMIMOTO AMI를 이용해 5분만에 끝내는 WordPress 구축
20140524 Cloud design pattern - AMIMOTO AMI를 이용해 5분만에 끝내는 WordPress 구축
SangUk Park
Learn design pattern-1
Learn design pattern-1Learn design pattern-1
Learn design pattern-1
Daniel Lim
Design pattern study 6 command pattern
Design pattern study 6 command patternDesign pattern study 6 command pattern
Design pattern study 6 command pattern
dragor0123
Builder, prototype, singleton pattern
Builder, prototype, singleton patternBuilder, prototype, singleton pattern
Builder, prototype, singleton pattern
YoonJong Choi
Api design for c++ pattern
Api design for c++ patternApi design for c++ pattern
Api design for c++ pattern
jinho park
Doc4SM 제품설명서
Doc4SM 제품설명서Doc4SM 제품설명서
Doc4SM 제품설명서
Daniel Lim
Observer pattern dragor
Observer pattern dragorObserver pattern dragor
Observer pattern dragor
dragor0123
객체지향의 사실과 오해를 읽고
객체지향의 사실과 오해를 읽고객체지향의 사실과 오해를 읽고
객체지향의 사실과 오해를 읽고
Daniel Lim
Doc4 sm 사용자_가이드
Doc4 sm 사용자_가이드Doc4 sm 사용자_가이드
Doc4 sm 사용자_가이드
Daniel Lim
Desing pattern study 8 template method pattern
Desing pattern study 8 template method patternDesing pattern study 8 template method pattern
Desing pattern study 8 template method pattern
dragor0123
개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2
Daniel Lim
Game Design patterns, Visitor, State, FSM pattern
Game Design patterns, Visitor, State, FSM patternGame Design patterns, Visitor, State, FSM pattern
Game Design patterns, Visitor, State, FSM pattern
Young Ha Kim
Design pattern study 4 factory pattern _ by dragor0123
Design pattern study 4 factory pattern _ by dragor0123Design pattern study 4 factory pattern _ by dragor0123
Design pattern study 4 factory pattern _ by dragor0123
dragor0123
Design patterns 스터디 - Singleton 패턴
Design patterns 스터디 - Singleton 패턴Design patterns 스터디 - Singleton 패턴
Design patterns 스터디 - Singleton 패턴
Hyunho-Cho
Design Pattern - Singleton Pattern
Design Pattern - Singleton PatternDesign Pattern - Singleton Pattern
Design Pattern - Singleton Pattern
Mudasir Qazi
20140524 Cloud design pattern - AMIMOTO AMI를 이용해 5분만에 끝내는 WordPress 구축
20140524 Cloud design pattern - AMIMOTO AMI를 이용해 5분만에 끝내는 WordPress 구축20140524 Cloud design pattern - AMIMOTO AMI를 이용해 5분만에 끝내는 WordPress 구축
20140524 Cloud design pattern - AMIMOTO AMI를 이용해 5분만에 끝내는 WordPress 구축
SangUk Park
Learn design pattern-1
Learn design pattern-1Learn design pattern-1
Learn design pattern-1
Daniel Lim

Similar to Design pattern 옵저버 (20)

Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005
Ryan Park
C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013
명신 김
반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게
Sungju Jin
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
beom kyun choi
Netty 세미나
Netty 세미나Netty 세미나
Netty 세미나
Jang Hoon
MVP 패턴 소개
MVP 패턴 소개MVP 패턴 소개
MVP 패턴 소개
beom kyun choi
3D 모델러 ADDIN 개발과정 요약
3D 모델러 ADDIN 개발과정 요약3D 모델러 ADDIN 개발과정 요약
3D 모델러 ADDIN 개발과정 요약
Tae wook kang
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
현철 조
Droid knights android test @Droid Knights 2018
Droid knights android test @Droid Knights 2018Droid knights android test @Droid Knights 2018
Droid knights android test @Droid Knights 2018
KyungHo Jung
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Dong Chan Shin
V8 add on with middleware modules
V8 add on with middleware modulesV8 add on with middleware modules
V8 add on with middleware modules
Jay Kim
안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트
병한 유
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
탑크리에듀(구로디지털단지역3번출구 2분거리)
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10
흥배 최
Domain Specific Languages With Groovy
Domain Specific Languages With GroovyDomain Specific Languages With Groovy
Domain Specific Languages With Groovy
Tommy C. Kang
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
Ryan Park
Servlet design pattern
Servlet design patternServlet design pattern
Servlet design pattern
Sukjin Yun
20131217 html5
20131217 html520131217 html5
20131217 html5
DK Lee
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
Jongin Lee
Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005
Ryan Park
C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013
명신 김
반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게
Sungju Jin
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
beom kyun choi
3D 모델러 ADDIN 개발과정 요약
3D 모델러 ADDIN 개발과정 요약3D 모델러 ADDIN 개발과정 요약
3D 모델러 ADDIN 개발과정 요약
Tae wook kang
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
현철 조
Droid knights android test @Droid Knights 2018
Droid knights android test @Droid Knights 2018Droid knights android test @Droid Knights 2018
Droid knights android test @Droid Knights 2018
KyungHo Jung
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Dong Chan Shin
V8 add on with middleware modules
V8 add on with middleware modulesV8 add on with middleware modules
V8 add on with middleware modules
Jay Kim
안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트
병한 유
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
탑크리에듀(구로디지털단지역3번출구 2분거리)
Domain Specific Languages With Groovy
Domain Specific Languages With GroovyDomain Specific Languages With Groovy
Domain Specific Languages With Groovy
Tommy C. Kang
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
Ryan Park
Servlet design pattern
Servlet design patternServlet design pattern
Servlet design pattern
Sukjin Yun
20131217 html5
20131217 html520131217 html5
20131217 html5
DK Lee
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
Jongin Lee

More from Sukjin Yun (20)

동영상입문
동영상입문동영상입문
동영상입문
Sukjin Yun
Enterprise Java web Deployment Strategy
Enterprise Java web Deployment StrategyEnterprise Java web Deployment Strategy
Enterprise Java web Deployment Strategy
Sukjin Yun
Geb quick start
Geb quick startGeb quick start
Geb quick start
Sukjin Yun
BDD with Spock
BDD with SpockBDD with Spock
BDD with Spock
Sukjin Yun
Scala quick start
Scala quick startScala quick start
Scala quick start
Sukjin Yun
Spring java config
Spring java configSpring java config
Spring java config
Sukjin Yun
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_start
Sukjin Yun
Rabbitmq install한글
Rabbitmq install한글Rabbitmq install한글
Rabbitmq install한글
Sukjin Yun
Servlet3
Servlet3Servlet3
Servlet3
Sukjin Yun
무료로 워드프레스시작하기
무료로 워드프레스시작하기무료로 워드프레스시작하기
무료로 워드프레스시작하기
Sukjin Yun
Launch4j
Launch4jLaunch4j
Launch4j
Sukjin Yun

Design pattern 옵저버

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