서블릿 필터란?
21 Jan 2019 | Servlet Filter서블릿 필터란?
서블릿 <-> 서블릿필터 <-> 브라우저
- 서블릿 필터는 서블릿과 브라우저 사이에서 동작한다.
-
Request, Response 할때마다 서블릿과 브라우저 사이에서 필터 역활을 수행해준다.
-
예시로 서블릿 필터가 있을경우 기본적으로 브라우저와 서블릿이 통신할 때 서블릿에서 처리했던 작업들을 필터에서 모두 처리해줄 수 있다.
- 필터를 사용하는 목적은 서블릿 상단에서 모든걸 처리하는 것 자체가 비생산적이다.
- 결국 중복코드를 쓰지 않도록 지양하고, 재사용성과 응집도가 높은 코드를 지향하기 위해서 사용하는것이다.
package my.examples.jdbcboard.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
// /* : 어떤 url로 서블릿에 접근하든간에 무조건 이 필터를 거치게 됨.
@WebFilter(filterName="RequestEncodingFilter", urlPatterns = {"/*"})
public class RequestEncodingFilter implements Filter {
@Override // 초기화
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("RequestEncodingFilter init!");
}
@Override // 필터
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("UTF-8");
System.out.println("RequestEncodingFilter doFilter start!!");
filterChain.doFilter(servletRequest, servletResponse);
// 필터체인을 통해서 여러가지 필터를 통하게 할 수 있다.
// ex) 로그인 체크 -> url 경로 기억 -> 로그인시 그전 url 경로로 이동 등등
// 다음 필터를 호출
// 서블릿 응답후
System.out.println("RequestEncodingFilter doFilter end!!");
}
@Override // 종료
public void destroy() {
System.out.println("RequestEncodingFilter destroy!");
}
}
Comments