/ JSP

8. Servlet 4

SEOUL G-캠프

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
    ...