SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
Head First JSP & Servlet Chapter5 Study
ServletContext & Listener
NHN NEXT HumanDesignProject
Team WildGoose
FourwingsY@nhnnext.org
Context/Servlet
Parameter & Attribute
Servlet/Context Init Parameter 란?
서블릿의 초기화에 필요한 데이터
web.xml에 존재하며
서블릿 초기화시에 불러오게 된다
변경될 가능성이 있는 문자열(ex. 관리자의 이메일)을
소스코드 밖에서 관리하고 싶으니까
Servlet/Context Init Parameter의 필요성
웹 어플리케이션의 모든 서블릿에서 사용 가능한
일종의 전역 객체같은 것
!
Parameter가 문자열을 다룬다면
Attribute는 객체를 다룰 수 있다
Context Attribute 란?
!
!
Parameter
!
Attribute
Type
!
String
!
Object
Parameter vs. Attribute
Who add
!
Container
!
Listener
Where is Info
!
web.xml
!
Your code
Status
!
Static
!
Dynamic
Servlet 초기화 Parameter 설정
<web-app>
<servlet>
<servlet-name>SearchArticles</servlet-name>
<servlet-class>next.wildgoose.SearchArticles</servlet-class>
<init-param>
<param-name>updated-date</param-name>
<param-value>2014-04-06</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>SearchReporters</servlet-name>
<servlet-class>next.wildgoose.SearchReporters</servlet-class>
<init-param>
<param-name>updated-date</param-name>
<param-value>2014-04-01</param-value>
</init-param>
</servlet>
</web-app>
정적으로 저장되는 Servlet 초기 설정 변수
public class SearchArticles extends HttpServlet {	
	 protected void doGet(HttpServletRequest request,	
	 	 	 	 	 	 	 HttpServletResponse response) {	
!
	 	 ServletConfig sc = getServletConfig();	
!
	 	 // web.xml에 저장된 init-param에 접근	
	 	 String updated_date = sc.getInitParameter(“updated-date”)	
	 	 	
	 	 // web.xml에 저장된 모든 init-param들의 이름을 확인	
	 	 Enumeration<String> initParams = sc.getInitParameterNames();	
!
	 }	
}
Servlet Parameter 접근
정적으로 저장되는 Servlet 초기 설정 변수
Servlet마다 초기화 Attribute 설정
동적으로 저장되는 초기 설정 변수
따로 존재하지 않음
!
그냥 Servlet 코드 안에 작성
Servlet Parameter Attribute
Set in web.xml
Servlet
Instance
Variable
in your code
Get
getServletConfig()
.getInitParameter
(“param-name”)
중간 정리
하지만
!
웹 서버 내의 모든 Servlet이
같은 정보를 사용하고 싶다면
1. Servlet마다 같은 init-param 추가

2. 모든 Servlet이 공유하는 영역에

parameter/attribute 추가
모든 Servlet이 공유하는 영역
!
Servlet Context
Context 초기화 Parameter 설정
정적으로 저장되는 Context 초기 설정 변수
<web-app>
<servlet>
<servlet-name>SearchArticles</servlet-name>
<servlet-class>next.wildgoose.SearchArticles</servlet-class>
<init-param>
<param-name>updated-date</param-name>
<param-value>2014-04-06</param-value>
</init-param>
</servlet>
<context-param>
<param-name>db-name</param-name>
<param-value>wildgoose</param-value>
</context-param>
</web-app>
public class SearchArticles extends HttpServlet {	
	 protected void doGet(HttpServletRequest request,	
	 	 	 	 	 	 	 HttpServletResponse response) {	
!
	 	 ServletContext sc = getServletContext();	
	 	 // Servlet parameter는 getServletConfig()	
!
	 	 // web.xml에 저장된 context-param에 접근	
	 	 String db_name = sc.getInitParameter(“db-name”);	
	 	 	
	 	 // web.xml에 저장된 모든 context-param들의 이름을 확인	
	 	 Enumeration<String> initParams = sc.getInitParameterNames();	
	 }	
}
Context Parameter 접근
정적으로 저장되는 Context 초기 설정 변수
Context 초기화 Attribute 설정
동적으로 저장되는 초기 설정 변수
Listener가 넣어줌
!
Listener를 구현해야 함
public class SearchArticles extends HttpServlet {	
	 protected void doGet(HttpServletRequest request,	
	 	 	 	 	 	 	 HttpServletResponse response) {	
	 	 	
	 	 ServletContext sc = getServletContext();	
	 	 DatabaseConnector dbCon = (DatabaseConnector)	
	 	 	 	 	 	 	 	 	 	 sc.getAttribute(“connector”);	
	 	 // getAttribute는 Object를 반환하므로 형변환이 꼭 필요함	
	 	 	
	 	 dbCon.doSomething();	
	 }	
}
Context Attribute 접근
동적으로 저장되는 Context 초기 설정 변수
Context Parameter Attribute
Set in web.xml in ContextListener
Get
getServletContext()
.getInitParameter
(“param-name”)
(type casting)
getServletContext()
.getAttribute
(“attr-name”)
중간 정리
Servlet
Listener
Listener를 구현하기 전에…
!
!
큰 그림 확인
Tomcat 시작
&
초기화
ServletContext 객체 생성
web.xml의 context-param 확인
ServletContext에 parameter 추가
!
ServletContextListener 생성
객체를 Context에 추가
!
ServletConfig 객체 생성
web.xml의 init-param 확인
ServletConfig에 parameter 추가
!
ServletConfig에 ServletContext 추가
(모든 설정은 Config에 있고,
전체 설정은 Config 내부 Context 참조)
Servlet 초기화
Servlet에 ServletConfig 전달
Listener가
나머지는
Tomcat이
실행
Web.xml
<web-app>
<servlet>
<servlet-name>SearchArticles</servlet-name>
<servlet-class>next.wildgoose.SearchArticles</servlet-class>
<init-param>
<param-name>updated-date</param-name>
<param-value>2014-04-06</param-value>
</init-param>
</servlet>
<context-param>
<param-name>db-name</param-name>
<param-value>wildgoose</param-value>
</context-param>
</web-app>
<web-app>
<servlet>
<servlet-name>SearchArticles</servlet-name>
<servlet-class>next.wildgoose.SearchArticles</servlet-class>
<init-param>
<param-name>updated-date</param-name>
<param-value>2014-04-06</param-value>
</init-param>
</servlet>
<context-param>
<param-name>db-name</param-name>
<param-value>wildgoose</param-value>
</context-param>
</web-app>
Web.xml
ServletContext
ServletContext {“db-name”:”wildgoose”}
ServletContext
ServletContext
Listener
ServletContext
Event
{“db-name”:”wildgoose”}
ServletContext
ServletContext
Listener
con
{“db-name”:”wildgoose”}
ServletContext
ServletContext
Listener
con
{“db-name”:”wildgoose”}
ServletContext
ServletContext
Listener
con
요청 대기
{“db-name”:”wildgoose”}
ServletContext
ServletContext
Listener
con
SearchArticles.java
SearchArticles.jsp
요청
{“db-name”:”wildgoose”}
<web-app>
<servlet>
<servlet-name>SearchArticles</servlet-name>
<servlet-class>next.wildgoose.SearchArticles</servlet-class>
<init-param>
<param-name>updated-date</param-name>
<param-value>2014-04-06</param-value>
</init-param>
</servlet>
<context-param>
<param-name>db-name</param-name>
<param-value>wildgoose</param-value>
</context-param>
</web-app>
Web.xml
ServletContext
<web-app>
<servlet>
<servlet-name>SearchArticles</servlet-name>
<servlet-class>next.wildgoose.SearchArticles</servlet-class>
<init-param>
<param-name>updated-date</param-name>
<param-value>2014-04-06</param-value>
</init-param>
</servlet>
<context-param>
<param-name>db-name</param-name>
<param-value>wildgoose</param-value>
</context-param>
</web-app>
Web.xml
ServletConfig
ServletContext
ServletConfig
ServletContext
{“updated-date”:”2014-04-06”}
con
ServletContext
Listener
Server가 종료될 때까지 계속 살아있다가
ServletContext가 사라지는 Event를 전달받고
Connection 종료
물론, 종료 코드도 구현해야
SearchArticles.java
SearchArticles.jsp
요청
{“db-name”:”wildgoose”}
ServletConfig
ServletContext
{“updated-date”:”2014-04-06”}
con
ServletContext
Listener
Server가 종료될 때까지 계속 살아있다가
ServletContext가 사라지는 Event를 전달받고
Connection 종료
물론, 종료 코드도 구현해야
SearchArticles.java
SearchArticles.jsp
요청
{“db-name”:”wildgoose”}
Listener 구현
Web.xml
<web-app>
<servlet>
<servlet-name>SearchArticles</servlet-name>
<servlet-class>next.wildgoose.SearchArticles</servlet-class>
<init-param>
<param-name>updated-date</param-name>
<param-value>2014-04-06</param-value>
</init-param>
</servlet>
<context-param>
<param-name>db-name</param-name>
<param-value>wildgoose</param-value>
</context-param>
<listener>
<listener-class>next.wildgoose.MyContextListener</listener-class>
</listener>
</web-app>
public class MyContextListener extends ServletContextListener {	
!
	 public void contextInitialized(ServletContextEvent event) {	
	 	 ServletContext sc = event.getServletContext();	
	 	 String db_name = sc.getInitParameter(“db-name”);	
	 	 // Static한 정보는 Parameter에서 가져옴	
	 	 DatabaseConnector dbCon = new DatabaseConnector(db_name);	
	 	 sc.setAttribute(“connector”, dbCon);	
	 	 // Attribute에는 객체를 넘길 수 있음	
	 }	
!
	 public void contextDestroyed(ServletContextEvent event) {	
	 	 ServletContext sc = event.getServletContext();	
	 	 DatabaseConnector dbCon = (DatabaseConnector) 	
	 	 	 	 	 	 	 	 	 	 sc.getAttribute(“connector”);	
	 	 dbCon.close()	
	 	 // 컨텍스트가 종료될 때 처리해야할 일	
	 }	
}
기타 Listener들
HttpRequestListener
!
HttpSessionListener
!
HttpSessionAttributeListener
!
ServletContextAttributeListener
!
ServletRequestAttributeListener
세션의 생성/파괴 감지
사용자 수 감지 가능
!
!
Attribute의
추가, 제거, 수정을 감지
!
나머지는 Head First 참고
요청이 들어올 때 감지
한편,
!
Context Attribute는
여러 서블릿이 동시에 접근할 수 있고
값이 변할 수 있다
YOU KNOW
!
THE PROBLEM
public class SearchArticles extends HttpServlet {	
	 protected void doGet(HttpServletRequest request,	
	 	 	 	 	 	 	 HttpServletResponse response) {	
	 	 	
	 	 ServletContext sc = getServletContext();	
	 	 Object object = new Object();	
	 	 synchronized(sc) {	
	 	 // servletContext 에 락을 걸어줘야 안전!	
	 	 	 sc.setAttribute(“blabla”, object);	
	 	 }	
	 }	
}
비슷한 문제
!
서블릿의 인스턴스 변수는
여러 스레드가 동시에 접근할 수 있고
값이 변할 수 있다
public class SearchArticles extends HttpServlet {	
!
	 ArrayList<Article> articles;	
	 // 이렇게 쓰지 말라는 뜻	
!
	 protected void doGet(HttpServletRequest request,	
	 	 	 	 	 	 	 	 	 HttpServletResponse response) {	
	 	 // DO SOMETHING	
	 }	
}
우린 이미 잘 하고 있습니다
public class SearchArticles extends HttpServlet {	
	 protected void doGet(HttpServletRequest request,	
	 	 	 	 	 	 	 	 	 HttpServletResponse response) {	
!
	 	 String search_query = null;	
	 	 search_query = new String(request.getParameter("q"));	
	 	 request.setAttribute("search_query", search_query);	
	 	 	
	 	 RequestDispatcher rd = null;	
	 	 rd = request.getRequestDispatcher(“SearchArticles.jsp")	
	 	 rd.forward(request, response);	
	 }	
}
구글신의 도움으로

Contenu connexe

Tendances

헷갈리는 자바스크립트 정리
헷갈리는 자바스크립트 정리헷갈리는 자바스크립트 정리
헷갈리는 자바스크립트 정리은숙 이
 
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Startup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JSStartup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JSCirculus
 
#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Ajax 기술문서 - 김연수
Ajax 기술문서 - 김연수Ajax 기술문서 - 김연수
Ajax 기술문서 - 김연수Yeon Soo Kim
 
5-5. html5 connectivity
5-5. html5 connectivity5-5. html5 connectivity
5-5. html5 connectivityJinKyoungHeo
 
Node.js assertion testing module
Node.js assertion testing moduleNode.js assertion testing module
Node.js assertion testing moduleLuis P
 
Web server page_ed10
Web server page_ed10Web server page_ed10
Web server page_ed10hungrok
 
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
GKAC 2015 Apr. - Android Looper
GKAC 2015 Apr. - Android LooperGKAC 2015 Apr. - Android Looper
GKAC 2015 Apr. - Android LooperGDG Korea
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs기동 이
 
JSP 프로그래밍 #03 서블릿
JSP 프로그래밍 #03 서블릿JSP 프로그래밍 #03 서블릿
JSP 프로그래밍 #03 서블릿Myungjin Lee
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원탑크리에듀(구로디지털단지역3번출구 2분거리)
 
5-4. html5 offline and storage
5-4. html5 offline and storage5-4. html5 offline and storage
5-4. html5 offline and storageJinKyoungHeo
 

Tendances (19)

헷갈리는 자바스크립트 정리
헷갈리는 자바스크립트 정리헷갈리는 자바스크립트 정리
헷갈리는 자바스크립트 정리
 
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#17.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
Startup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JSStartup JavaScript 8 - NPM, Express.JS
Startup JavaScript 8 - NPM, Express.JS
 
#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
Ajax 기술문서 - 김연수
Ajax 기술문서 - 김연수Ajax 기술문서 - 김연수
Ajax 기술문서 - 김연수
 
Anatomy of Realm
Anatomy of RealmAnatomy of Realm
Anatomy of Realm
 
5-5. html5 connectivity
5-5. html5 connectivity5-5. html5 connectivity
5-5. html5 connectivity
 
Node.js assertion testing module
Node.js assertion testing moduleNode.js assertion testing module
Node.js assertion testing module
 
Express 프레임워크
Express 프레임워크Express 프레임워크
Express 프레임워크
 
Web server page_ed10
Web server page_ed10Web server page_ed10
Web server page_ed10
 
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
[자바학원/스프링교육학원/마이바티스학원추천/구로IT학원_탑크리에듀]#7.스프링프레임워크 & 마이바티스 (Spring Framework, M...
 
GKAC 2015 Apr. - Android Looper
GKAC 2015 Apr. - Android LooperGKAC 2015 Apr. - Android Looper
GKAC 2015 Apr. - Android Looper
 
Spring boot actuator
Spring boot   actuatorSpring boot   actuator
Spring boot actuator
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
 
JSP 프로그래밍 #03 서블릿
JSP 프로그래밍 #03 서블릿JSP 프로그래밍 #03 서블릿
JSP 프로그래밍 #03 서블릿
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
 
4-3. jquery
4-3. jquery4-3. jquery
4-3. jquery
 
5-4. html5 offline and storage
5-4. html5 offline and storage5-4. html5 offline and storage
5-4. html5 offline and storage
 

En vedette

Starting Vert.x in Eclipse
Starting Vert.x in EclipseStarting Vert.x in Eclipse
Starting Vert.x in EclipseHyeonseok Yang
 
The impact of innovation on travel and tourism industries (World Travel Marke...
The impact of innovation on travel and tourism industries (World Travel Marke...The impact of innovation on travel and tourism industries (World Travel Marke...
The impact of innovation on travel and tourism industries (World Travel Marke...Brian Solis
 
Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)maditabalnco
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsBarry Feldman
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome EconomyHelge Tennø
 

En vedette (6)

Starting Vert.x in Eclipse
Starting Vert.x in EclipseStarting Vert.x in Eclipse
Starting Vert.x in Eclipse
 
Sonar 설치
Sonar 설치Sonar 설치
Sonar 설치
 
The impact of innovation on travel and tourism industries (World Travel Marke...
The impact of innovation on travel and tourism industries (World Travel Marke...The impact of innovation on travel and tourism industries (World Travel Marke...
The impact of innovation on travel and tourism industries (World Travel Marke...
 
Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)Reuters: Pictures of the Year 2016 (Part 2)
Reuters: Pictures of the Year 2016 (Part 2)
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post Formats
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome Economy
 

Similaire à [Study]HeadFirst JSP&servlet chapter5

스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)EunChul Shin
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)DK Lee
 
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발NAVER D2
 
JSP 프로그래밍 #04 JSP 의 기본
JSP 프로그래밍 #04 JSP 의 기본JSP 프로그래밍 #04 JSP 의 기본
JSP 프로그래밍 #04 JSP 의 기본Myungjin Lee
 
Daejeon IT Developer Conference Struts2
Daejeon IT Developer Conference Struts2Daejeon IT Developer Conference Struts2
Daejeon IT Developer Conference Struts2plusperson
 
vine webdev
vine webdevvine webdev
vine webdevdcfc1997
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)DK Lee
 
Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기경원 이
 
[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로NHN FORWARD
 
Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)Choonghyun Yang
 
Netty 세미나
Netty 세미나Netty 세미나
Netty 세미나Jang Hoon
 
overview of spring4
overview of spring4overview of spring4
overview of spring4Arawn Park
 
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현NAVER Engineering
 
Angular2 router&http
Angular2 router&httpAngular2 router&http
Angular2 router&httpDong Jun Kwon
 

Similaire à [Study]HeadFirst JSP&servlet chapter5 (20)

스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
 
Spring portfolio2
Spring portfolio2Spring portfolio2
Spring portfolio2
 
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발
 
JSP 프로그래밍 #04 JSP 의 기본
JSP 프로그래밍 #04 JSP 의 기본JSP 프로그래밍 #04 JSP 의 기본
JSP 프로그래밍 #04 JSP 의 기본
 
Daejeon IT Developer Conference Struts2
Daejeon IT Developer Conference Struts2Daejeon IT Developer Conference Struts2
Daejeon IT Developer Conference Struts2
 
vine webdev
vine webdevvine webdev
vine webdev
 
[Codelab 2017] ReactJS 기초
[Codelab 2017] ReactJS 기초[Codelab 2017] ReactJS 기초
[Codelab 2017] ReactJS 기초
 
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
자바 웹 개발 시작하기 (3주차 : 스프링 웹 개발)
 
Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기Jpa 잘 (하는 척) 하기
Jpa 잘 (하는 척) 하기
 
[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로[2018] MyBatis에서 JPA로
[2018] MyBatis에서 JPA로
 
Servlet3
Servlet3Servlet3
Servlet3
 
4-2. ajax
4-2. ajax4-2. ajax
4-2. ajax
 
One-day-codelab
One-day-codelabOne-day-codelab
One-day-codelab
 
Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)
 
Netty 세미나
Netty 세미나Netty 세미나
Netty 세미나
 
Realm @Android
Realm @Android Realm @Android
Realm @Android
 
overview of spring4
overview of spring4overview of spring4
overview of spring4
 
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
 
Angular2 router&http
Angular2 router&httpAngular2 router&http
Angular2 router&http
 

[Study]HeadFirst JSP&servlet chapter5