8. Servlet 4
0. 목차
Chapter8. Servlet 본격적으로 살펴보기-IV
Ch4 - 1. 서블릿 초기화 파라미터 : ServletConfig
Ch4 - 2. 데이터 공유 : ServletContext
Ch4 - 3. 웹어플리케이션 감시 : ServletContextListener
Ch4 - 1. 서블릿 초기화 파라미터 : ServletConfig
▶ 초기화 파라미터(Initialization Parameter)란?
▷ 특정 Servlet이 생성될 때 초기에 필요한 데이터
- ex. 특정 경로, id…
▶ 초기화 파라미터 작성 방법 두가지
▷ 1. web.xml에 초기화 파라미터 작성
-
servlet 클래스 생성
-
web.xml에서
servlet
태그 안에init-param
작성 -
ServletConfig 클래스는 HttpServlet 클래스를 상속받기 때문에 바로 사용 가능
- doGet 작성 :
ServletConfig
메서드 이용하여 데이터 불러오기// ServletInitParam.java ... protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("doGet"); String id = getInitParameter("id"); String pw = getInitParameter("pw"); System.out.println("id : " + id); System.out.println("pw : " + pw); } ...
getInitParameter
를 바로 사용할 수 있는 이유
- 서버 구동
// console doGet id : abcd pw : 1234
▷ 2. Servlet 파일에 직접 초기화 파라미터 작성
-
servlet
클래스 생성 @WebInitParam
에 초기화 파라미터 작성// ServletInitParam.java ... @WebServlet(urlPatterns={"/InitP"}, initParams={@WebInitParam(name="id", value="oooo"), @WebInitParam(name="pw", value="9999")}) public class ServletInitParam extends HttpServlet { private static final long serialVersionUID = 1L; ...
어노테이션을 이용하여 servlet 파일에 바로 초기화 파라미터를 작성
- doGet 작성 :
ServletConfig
메서드 이용하여 데이터 불러오기// ServletInitParam.java ... protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("doGet"); String id = getInitParameter("id"); String pw = getInitParameter("pw"); System.out.println("id : " + id); System.out.println("pw : " + pw); } ...
- 서버 구동
// console doGet id : oooo pw : 9999
Ch4 - 2. 데이터 공유 : ServletContext
▶ 데이터 공유란?
▷ 초기화 파라미터는 특정 servlet이 초기화 시 필요한 데이터라면,
▷ 데이터 공유는 여러 servlet에서 필요한 특정 데이터를 공유하는 것
▶ 데이터 공유 작성 방법
▷ context parameter를 이용하여 web.xml에 데이터를 작성 후
▷ servlet에서 공유
- Servlet 클래스 제작
- web.xml에 context parameter 작성
// web.xml ... <context-param> <param-name>id</param-name> <param-value>ppp</param-value> </context-param> <context-param> <param-name>pw</param-name> <param-value>1234</param-value> </context-param> </web-app>
- doGet 작성 :
ServletContext
메서드 이용하여 데이터 불러오기// ServletInitParam.java ... protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("doGet"); String id = getServletContext().getInitParameter("id"); String pw = getServletContext().getInitParameter("pw"); System.out.println("id : " + id); System.out.println("pw : " + pw); } ...
- 서버 구동
// console doGet id : ppp pw : 1234
Ch4 - 3. 웹어플리케이션 감시 : ServletContextListener
▶ ServletContextListener란?
▷ 웹 어플리케이션의 생명주기(LifeCycle)를 감시하는 리스너(Listener)
▷ 리스너의 해당 메소드가 웹 어플리케이션의 시작과 종료 시 호출
- 시작 :
contextInitialized()
- 종료 :
contextDestroyed()
▶ ServletContextListener 작성 방법 두가지
▷ 1. web.xml에 리스너 클래스 작성
-
리스너 클래스 생성
// ServletL.java package com.javalec.ex; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class ServletL implements ServletContextListener { // 웹 어플리케이션 종료 시 실행 @Override public void contextDestroyed(ServletContextEvent arg0) { System.out.println("contextDestroyed"); } // 웹 어플리케이션 시작 시 실행 @Override public void contextInitialized(ServletContextEvent arg0) { System.out.println("contextInitialized"); } }
- web.xml파일에 리스너 클래스 작성
// web.xml ... <listener> <listener-class>com.javalec.ex.ServletL</listener-class> // 경로 작성 </listener> </web-app>
- 서버 구동
// console ... contextInitialized ... doGet ... // 서버 종료 후 contextDestroyed ...
▷ 2. 리스너 클래스에 @WebListener 작성
-
리스너 클래스 생성
// ServletL.java package com.javalec.ex; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class ServletL implements ServletContextListener { // 웹 어플리케이션 종료 시 실행 @Override public void contextDestroyed(ServletContextEvent arg0) { System.out.println("contextDestroyed"); } // 웹 어플리케이션 시작 시 실행 @Override public void contextInitialized(ServletContextEvent arg0) { System.out.println("contextInitialized"); } }
@WebListener
추가 : 위에서 생성 한 리스너 클래스에 어노테이션만 추가// ServletL.java ... @WebListener public class ServletL implements ServletContextListener { ...
- 서버 구동
// console ... contextInitialized ... doGet ... // 서버 종료 후 contextDestroyed ...