ServletConfig, ServletContext, ServletContextListener

ServletConfig

  • 서블릿 초기화 파라미터
  • 특정 서블릿 생성시 필요한 초기 데이터 세팅(특정 경로 및 아이디 정보 등)
  • web.xml에 기술하고 ServletConfig클래스를 이용해서 접근(사용)함

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <servlet>
    <servlet-name>InitParam</servlet-name>
    <servlet-class>com.javalec.ex.InitParam</servlet-class>

    <init-param>
    <param-name>id</param-name>
    <param-value>abcde</param-value>
    </init-param>
    <init-param>
    <param-name>pw</param-name>
    <param-value>1234</param-value>
    </init-param>
    </servlet>

    <servlet-mapping>
    <servlet-name>InitParam</servlet-name>
    <url-pattern>/IP</url-pattern>
    </servlet-mapping>
    1
    2
    3
    4
    5
    6
    7
    8
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    response.getWriter().append("Served at: ").append(request.getContextPath());
    String id = getInitParameter("id");
    String pw = getInitParameter("pw");
    System.out.println("id2: " + id);
    System.out.println("pw2: " + pw);
    }
  • Servlet파일에 직접 기술하는 방법도 있음

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    @WebServlet(urlPatterns= {"/IninP"}, initParams= {@WebInitParam(name="id",value="aaaa"),@WebInitParam(name="pw",value="bbbb")})
    public class InitParam extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
    * @see HttpServlet#HttpServlet()
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    response.getWriter().append("Served at: ").append(request.getContextPath());
    String id = getInitParameter("id");
    String pw = getInitParameter("pw");
    System.out.println("id2: " + id);
    System.out.println("pw2: " + pw);
    }
    }

ServletContext

  • 여러 Servlet에서 특정 데이터 공유
  • context parameter를 이용해서 web.xml에 데이터 기술, servlet에서 공유하면서 사용

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <context-param>
    <param-name>id</param-name>
    <param-value>abc</param-value>
    </context-param>

    <context-param>
    <param-name>pw</param-name>
    <param-value>123213</param-value>
    </context-param>
    1
    2
    3
    4
    String id = getServletContext().getInitParameter("id");
    String pw = getServletContext().getInitParameter("pw");
    System.out.println("id2: " + id);
    System.out.println("pw2: " + pw);

ServletContextListener

  • 웹애플리케이션의 생명주기 감시
  • 리스터의 해당 메소드가 웹애플리케이션으 시작과 종료시 호출됨
  • contextInitialized(), ocntextDestroyed()
  • 리스너 클래스를 따로 만들고(ServletContextListener 임플리먼트) -> web.xml에 리스너 클래스 기술

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;

    public class ServletL implements ServletContextListener {

    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
    // TODO Auto-generated method stub
    System.out.println("contextDestroyed");
    }

    @Override
    public void contextInitialized(ServletContextEvent arg0) {
    // TODO Auto-generated method stub
    System.out.println("contextInitialized");
    }

    }
    1
    2
    3
    <listener>
    <listener-class>com.javalec.ex.ServletL</listener-class>
    </listener>
    • 리스너 클래스에서 어노테이션으로 명시도 가능
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      import javax.servlet.ServletContextEvent;
      import javax.servlet.ServletContextListener;
      import javax.servlet.annotation.WebListener;

      @WebListener
      public class ServletL implements ServletContextListener {

      @Override
      public void contextDestroyed(ServletContextEvent arg0) {
      // TODO Auto-generated method stub
      System.out.println("contextDestroyed");
      }

      @Override
      public void contextInitialized(ServletContextEvent arg0) {
      // TODO Auto-generated method stub
      System.out.println("contextInitialized");
      }

      }
Comments