SERVER

04_webProject(24) : Filter

보갱:) 2020. 12. 7. 23:31

 

Filter.pdf
0.23MB

 


 

Filter : 클라이언트와 서버 사이에서 requset와 response객체를 필터가 먼저 받아서 사전/사후 작업 등 공통적으로 필요한 부분을 처리하는 것

 

→ 웹 브라우저가 서블릿을 호출할 경우, 필터가 대신 호출 되어 전달받은 정보를 수정하고 서블릿에 넘기는 일종의 경유지 역할을 수행

 

 

Filter Interface 메소드

 

1) init (FilterConfig config)

웹 컨테이너가 필터를 호출할 경우 해당 메소드가 호출되어 필터 객체를 생성하며 초기화

 

2) doFilter(ServeletRequset req, ServletResponse res, FilterChain chain)

필터가 수행될 때 구동하는 메소드로, 요청 객체와 응답 객체를 사용해 일련의 작업을 수행한 뒤, chain을 통해 가공된 값을 목적으로 전송

 

3) dostroy()

역할이 끝난 필터는 웹 컨테이너에 의해 해당 메소드를 호출하고 소멸



src-common-new -filter선택

EncodeFilter.java

package common;

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;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;

/**
 * Servlet Filter implementation class EncodeFilter
 */
@WebFilter("/EncodeFilter")
public class EncodeFilter implements Filter {

    /**
     * Default constructor. 
     */
    public EncodeFilter() {
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		System.out.println("필터 소멸");
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

		System.out.println("서블릿 실행 전!");
		HttpServletRequest req = (HttpServletRequest)request;
		String uri = req.getRequestURI();
		System.out.println("요청URI : "+uri);
		request.setCharacterEncoding("utf-8");
		System.out.println("인코딩 완료");
		
		
		chain.doFilter(request, response);
		//↑ 여기가 핵심 *** (서블릿 실행 코드)
		
		
		System.out.println("서블릿 실행 후!");
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		System.out.println("필터 생성 완료");
	}

}

 

 

member.controller - LoginServlet.java

처음이랑 끝에 추가하여 사용

System.out.println("로그인 서블릿 시작");

System.out.println("로그인 서블릿 끝");

 

 

web.xml

  <filter>
   <filter-name>EncodeFilter</filter-name>
   <filter-class>common.EncodeFilter</filter-class>
  </filter>
  <filter-mapping>
   <filter-name>EncodeFilter</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>

 

필터 url-mapping


/*  은 모든걸 의미함     -      /.jsp 도 되고 /login도 되고 다 해당

서블릿 부를 때만 사용하고 싶으면  /*.kh    이런식으로 패턴을 만들어서 사용

'SERVER' 카테고리의 다른 글

06_Action Tag  (0) 2020.12.08
05_UML(Unified Modeling Language)  (0) 2020.12.08
04_webProject(23) : API - 영화진흥원  (0) 2020.12.07
04_webProject(22) : API - 결제모듈  (0) 2020.12.07
04_webProject(21) : API - 네이버 지도  (0) 2020.12.07