JSP

필터(Filter)

에어팟맥스 2022. 8. 30. 23:35

필터란 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