본문 바로가기

JSP/Learn

[Servlet] 서블릿 리스너


리스너는 특정 상황을 모니터링 하다가 해당 상황이 발생하면 동작하는 일종의 서블릿.

웹 애플리케이션 시작 및 운영 종료 과정에서 발생하는 일련의 과정에서 특정 상황에 필요한 작업을 처리하기 위해 사용 한다.



다음은 ServletContextListener의 예


이 리스너의 동작은

context가 초기화 될 때 그 동작을 캐치 -> 리스너에서 특정 작업을 처리 -> 이후 본래 요청대로

형태로 진행된다.


ListenerTest.java


public class ListenerTest implements ServletContextListener{

public ListenerTest() { } public void contextInitialized(ServletContextEvent arg0) { ServletContext sc = arg0.getServletContext(); //컨텍스트 초기화시 동작하는 작업 sc.setAttribute("listener", "간단한 리스너 테스트 입니다"); } public void contextDestroyed(ServletContextEvent arg0) { } }




ListenerTester.java


public class ListenerTester extends HttpServlet { private static final long serialVersionUID = 1L; public ListenerTester() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); PrintWriter out =response.getWriter(); String tester = (String)getServletContext().getAttribute("listener"); out.println("확인 : " + tester); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }



web.xml 부분


  <listener>

    <listener-class>ex.ListenerTest</listener-class>

  </listener>

  

  <servlet>

    <description></description>

    <display-name>ListenerTester</display-name>

    <servlet-name>ListenerTester</servlet-name>

    <servlet-class>ex.ListenerTester</servlet-class>

  </servlet>

  <servlet-mapping>

    <servlet-name>ListenerTester</servlet-name>

    <url-pattern>/ListenerTester</url-pattern>

  </servlet-mapping>



결과