필터란 Servlet 2.3 버전에 추가된 것으로,
클라이언트의 요청을 서블릿이 받기 전에 가로채어 필터에 작성된 내용을 수행하는 것을 말한다.
따라서 필터를 사용하면 클라이언트의 요청을 가로채서 서버 컴포넌트의 추가적인 다른 기능을 수행시킬 수 있다.
<< 필터 적용 순서 >>
1. Filter 인터페이스를 구현하는 자바 클래스를 생성.
2. /WEB-INF/web.xml 에 filter 엘리먼트를 사용하여 필터 클래스를 등록하는데
하지만 web.xml 을 사용하지 않고 @WebFilter 어노테이션을 많이 사용한다.
폼태그에서 액션단에 서블릿을 보내고 어떠한 작업을 하기 이전에 필터의 내용을 수행, 그 뒤 서블릿 작동
필터 파일
package my.filter;
import java.io.IOException;
import javax.servlet.*;
/**
* Servlet Filter implementation class EncodeFilter
*/
@WebFilter("/*")
public class EncodeFilter extends HttpFilter implements Filter {
private static final long serialVersionUID = 1L;
/**
* @see HttpFilter#HttpFilter()
*/
public EncodeFilter() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
// 필터 인스턴스를 종료시키기 전에 호출하는 메소드
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
// place your code here
// 필터의 로직을 작성하는 메소드
// ==> doPost()에서 한글이 안 깨지려면
// request.getParameter("name"); 을 하기전에
// request.setCharacterEncoding("UTF-8"); 을
// 먼저 해주어야 한다.
request.setCharacterEncoding("UTF-8");
// pass the request along the filter chain
chain.doFilter(request, response);
}
doFilter() : 필터의 로직을 작성하는 메소드
==> doPost()에서 한글이 안 깨지려면 request.getParameter("name"); 을 하기전에
request.setCharacterEncoding("UTF-8"); 을 먼저 해주어야 한다.
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
// 서블릿 컨테이너가 필터 인스턴스를 초기화하기 위해서 호출하는 메소드
// 여기는 기술할 필요가 없다.
}
}
'JSP' 카테고리의 다른 글
액션태그 :useBean, :getProperty, :setProperty (0) | 2022.08.31 |
---|---|
>> JSP 개요 << (0) | 2022.08.30 |
액션 - forward / Expression Language(${ } ) 사용 (0) | 2022.08.30 |
액션(action) (0) | 2022.08.30 |
서블릿 어노테이션 (0) | 2022.08.30 |