SPRING/스프링 MVC
서블릿 리스너와 필터
JUMP개발자
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