SlideShare a Scribd company logo
1 of 18
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

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 DevelopmentChangHyeon 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 - JUnitKyunghun Jeon
 
[실전 윈도우 디버깅] 13 포스트모템 디버깅
[실전 윈도우 디버깅] 13 포스트모템 디버깅[실전 윈도우 디버깅] 13 포스트모템 디버깅
[실전 윈도우 디버깅] 13 포스트모템 디버깅종빈 오
 

What's hot (17)

S#03 김용현:VS2010으로 마이그레이션
S#03 김용현:VS2010으로 마이그레이션S#03 김용현:VS2010으로 마이그레이션
S#03 김용현:VS2010으로 마이그레이션
 
예외처리가이드
예외처리가이드예외처리가이드
예외처리가이드
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
 
오버라이딩을 사용한 테스트 시의 설정 처리
오버라이딩을 사용한 테스트 시의 설정 처리오버라이딩을 사용한 테스트 시의 설정 처리
오버라이딩을 사용한 테스트 시의 설정 처리
 
TEST?
TEST?TEST?
TEST?
 
JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개
 
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
 
Effective unit testing ch3. 테스트더블
Effective unit testing   ch3. 테스트더블Effective unit testing   ch3. 테스트더블
Effective unit testing ch3. 테스트더블
 
01 윈도우프로그램 들어가기
01 윈도우프로그램 들어가기01 윈도우프로그램 들어가기
01 윈도우프로그램 들어가기
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
 
구글테스트
구글테스트구글테스트
구글테스트
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기
 
13.포인트컷(pointcut)
13.포인트컷(pointcut)13.포인트컷(pointcut)
13.포인트컷(pointcut)
 
Coded ui가이드
Coded ui가이드Coded ui가이드
Coded ui가이드
 
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
 
[실전 윈도우 디버깅] 13 포스트모템 디버깅
[실전 윈도우 디버깅] 13 포스트모템 디버깅[실전 윈도우 디버깅] 13 포스트모템 디버깅
[실전 윈도우 디버깅] 13 포스트모템 디버깅
 

Viewers also liked

Design pattern study 6 command pattern
Design pattern study 6 command patternDesign pattern study 6 command pattern
Design pattern study 6 command patterndragor0123
 
Builder, prototype, singleton pattern
Builder, prototype, singleton patternBuilder, prototype, singleton pattern
Builder, prototype, singleton patternYoonJong Choi
 
Api design for c++ pattern
Api design for c++ patternApi design for c++ pattern
Api design for c++ patternjinho park
 
Doc4SM 제품설명서
Doc4SM 제품설명서Doc4SM 제품설명서
Doc4SM 제품설명서Daniel Lim
 
Observer pattern dragor
Observer pattern dragorObserver pattern dragor
Observer pattern dragordragor0123
 
객체지향의 사실과 오해를 읽고
객체지향의 사실과 오해를 읽고객체지향의 사실과 오해를 읽고
객체지향의 사실과 오해를 읽고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 patterndragor0123
 
개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2Daniel 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 patternYoung Ha Kim
 
Design Pattern 3
Design Pattern 3Design Pattern 3
Design Pattern 3Daniel Lim
 
Desing Pattern-2
Desing Pattern-2Desing Pattern-2
Desing Pattern-2Daniel Lim
 
Design pattern 4
Design pattern 4Design pattern 4
Design pattern 4Daniel 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 dragor0123dragor0123
 
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 PatternMudasir 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-1Daniel Lim
 

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
 
Builder, prototype, singleton pattern
Builder, prototype, singleton patternBuilder, prototype, singleton pattern
Builder, prototype, singleton pattern
 
Api design for c++ pattern
Api design for c++ patternApi design for c++ pattern
Api design for c++ pattern
 
Doc4SM 제품설명서
Doc4SM 제품설명서Doc4SM 제품설명서
Doc4SM 제품설명서
 
Observer pattern dragor
Observer pattern dragorObserver pattern dragor
Observer pattern dragor
 
객체지향의 사실과 오해를 읽고
객체지향의 사실과 오해를 읽고객체지향의 사실과 오해를 읽고
객체지향의 사실과 오해를 읽고
 
Doc4 sm 사용자_가이드
Doc4 sm 사용자_가이드Doc4 sm 사용자_가이드
Doc4 sm 사용자_가이드
 
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
 
개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2개발 생산성 향상 기법 V1.2
개발 생산성 향상 기법 V1.2
 
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
 
Design Pattern 3
Design Pattern 3Design Pattern 3
Design Pattern 3
 
Desing Pattern-2
Desing Pattern-2Desing Pattern-2
Desing Pattern-2
 
Design pattern 4
Design pattern 4Design pattern 4
Design pattern 4
 
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
 
Design patterns 스터디 - Singleton 패턴
Design patterns 스터디 - Singleton 패턴Design patterns 스터디 - Singleton 패턴
Design patterns 스터디 - Singleton 패턴
 
Design Pattern - Singleton Pattern
Design Pattern - Singleton PatternDesign Pattern - Singleton Pattern
Design Pattern - Singleton Pattern
 
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 구축
 
Learn design pattern-1
Learn design pattern-1Learn design pattern-1
Learn design pattern-1
 
sungmin slide
sungmin slidesungmin slide
sungmin slide
 

Similar to Design pattern 옵저버

Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Working Effectively With Legacy Code - xp2005
Working Effectively With Legacy Code - xp2005Ryan 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
 
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 2018KyungHo 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 modulesJay 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 GroovyTommy 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 patternSukjin Yun
 
20131217 html5
20131217 html520131217 html5
20131217 html5DK Lee
 
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable FunctionsJongin Lee
 

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
 
C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013C++ 개발자와 함께 하는 visual studio 2013
C++ 개발자와 함께 하는 visual studio 2013
 
반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게반복적인 작업이 싫은 안드로이드 개발자에게
반복적인 작업이 싫은 안드로이드 개발자에게
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
 
Netty 세미나
Netty 세미나Netty 세미나
Netty 세미나
 
MVP 패턴 소개
MVP 패턴 소개MVP 패턴 소개
MVP 패턴 소개
 
3D 모델러 ADDIN 개발과정 요약
3D 모델러 ADDIN 개발과정 요약3D 모델러 ADDIN 개발과정 요약
3D 모델러 ADDIN 개발과정 요약
 
[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
 
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
 
V8 add on with middleware modules
V8 add on with middleware modulesV8 add on with middleware modules
V8 add on with middleware modules
 
안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트안드로이드 개발자를 위한 스위프트
안드로이드 개발자를 위한 스위프트
 
Eclipse RCP 1/2
Eclipse RCP 1/2Eclipse RCP 1/2
Eclipse RCP 1/2
 
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
(#8.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis))스프링/자바교육/IT교육/스프링프레임워크교육/국비지...
 
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
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
 
Servlet design pattern
Servlet design patternServlet design pattern
Servlet design pattern
 
20131217 html5
20131217 html520131217 html5
20131217 html5
 
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
코드로 바로 해버리는 서버리스 오케스트레이션 - Azure Durable Functions
 

More from Sukjin Yun

동영상입문
동영상입문동영상입문
동영상입문Sukjin Yun
 
Enterprise Java web Deployment Strategy
Enterprise Java web Deployment StrategyEnterprise Java web Deployment Strategy
Enterprise Java web Deployment StrategySukjin Yun
 
Geb quick start
Geb quick startGeb quick start
Geb quick startSukjin Yun
 
BDD with Spock
BDD with SpockBDD with Spock
BDD with SpockSukjin Yun
 
Scala quick start
Scala quick startScala quick start
Scala quick startSukjin Yun
 
Spring java config
Spring java configSpring java config
Spring java configSukjin Yun
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_startSukjin Yun
 
Rabbitmq install한글
Rabbitmq install한글Rabbitmq install한글
Rabbitmq install한글Sukjin Yun
 
Weblogic install
Weblogic installWeblogic install
Weblogic installSukjin Yun
 
무료로 워드프레스시작하기
무료로 워드프레스시작하기무료로 워드프레스시작하기
무료로 워드프레스시작하기Sukjin Yun
 
Ldap serise v1
Ldap serise v1Ldap serise v1
Ldap serise v1Sukjin Yun
 
Android studio
Android studioAndroid studio
Android studioSukjin Yun
 
20130709 gradle
20130709 gradle20130709 gradle
20130709 gradleSukjin Yun
 

More from Sukjin Yun (20)

동영상입문
동영상입문동영상입문
동영상입문
 
Enterprise Java web Deployment Strategy
Enterprise Java web Deployment StrategyEnterprise Java web Deployment Strategy
Enterprise Java web Deployment Strategy
 
Geb quick start
Geb quick startGeb quick start
Geb quick start
 
BDD with Spock
BDD with SpockBDD with Spock
BDD with Spock
 
Scala quick start
Scala quick startScala quick start
Scala quick start
 
Spring java config
Spring java configSpring java config
Spring java config
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_start
 
Rabbitmq install한글
Rabbitmq install한글Rabbitmq install한글
Rabbitmq install한글
 
Servlet3
Servlet3Servlet3
Servlet3
 
Weblogic install
Weblogic installWeblogic install
Weblogic install
 
무료로 워드프레스시작하기
무료로 워드프레스시작하기무료로 워드프레스시작하기
무료로 워드프레스시작하기
 
Start groovy
Start groovyStart groovy
Start groovy
 
Pygame
PygamePygame
Pygame
 
Annotation
AnnotationAnnotation
Annotation
 
마리아Db
마리아Db마리아Db
마리아Db
 
Intellij java
Intellij javaIntellij java
Intellij java
 
Ldap serise v1
Ldap serise v1Ldap serise v1
Ldap serise v1
 
Android studio
Android studioAndroid studio
Android studio
 
20130709 gradle
20130709 gradle20130709 gradle
20130709 gradle
 
Launch4j
Launch4jLaunch4j
Launch4j
 

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