Filter
서블릿 전처리/후처리와 부가적인 작업, 유동성 있는 작업들을 할 수 있다.
서블릿 소스는 그대로 둔 상태에서 필터만 추가/제거 가능하다.
필터의 용도
web.xml
CharacterEncodingFilter
package spms.filters;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class CharacterEncodingFilter implements Filter {
FilterConfig config;
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
String encoding = this.config.getInitParameter("encoding");
req.setCharacterEncoding(encoding);
System.out.println("CharacterEncodingFilter - " + encoding);
//다음 필터로 전송, 다음 필터가 없으면 서블릿의 service()를 호출한다.
FilterChain nextFilter = chain;
nextFilter.doFilter(req, resp);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
this.config = arg0;
}
}
doPost 메서드에 적용
결과 - 잘 적용된다.