-
서블릿 리스너와 필터SPRING/스프링 MVC 2021. 6. 5. 15:37
서블릿 리스너와 필터
서블릿 리스너
- 웹 애플리케이션에서 발생하는 주요 이벤트를 감지하고 각 이벤트에 특별한 작업이 필요한 경우에 사용할 수 있다.
public class MyListner implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { System.out.println("contextInitialized"); sce.getServletContext().setAttribute("name","jump"); } @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println("contextDestroyed"); } } public class HelloServlet extends HttpServlet { @Override public void init() throws ServletException { // 서블릿 생성 (처음 한번마 실행) System.out.println("init"); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("doGet"); resp.getWriter().write("Hello Servlet " + getName()); } @Override public void destroy() { System.out.println("destroy"); } private Object getName() { return getServletContext().getAttribute("name"); } }
Web.xml에 listener 추가
결과
서블릿 필터
-들어온 요청을 서블릿으로 보내고, 또 서블릿이 작성한 응답을 클라이언트로 보내기 전에 특별한 처리가 필요한 경우에 사용할 수 있다.
구조
public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("Filter init"); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("Filter doget"); filterChain.doFilter(servletRequest, servletResponse); } @Override public void destroy() { System.out.println("Filter destroy"); } }
실행순서
Listener -> Filter -> Servlet
종료 순서
Servlet -> Filter -> Listener
'SPRING > 스프링 MVC' 카테고리의 다른 글
스프링 MVC -WEB.XML 제거 (0) 2021.06.10 DispatchServlet 분석 (0) 2021.06.06 스프링 MVC 연동 (0) 2021.06.06 스프링 IOC 컨테이너 연동 (0) 2021.06.05 Spring MVC란? (0) 2021.06.02