Filter 

HTTP요청과 응답을 변경할 수 있는 재사용 가능한 코드 ,
클라이언트로 부터 오는 요청(request)과 최종자원(Servlet,JSP) 사이에 위치하며, 클라이언트의 요청 정보를 알맞게 변할 수 있으며, 또한 필터는 최종자원과 클라이언트로 가는 응답(response)사이에 위치하여 최종자원의 요청결과를 알맞게 변경 

- 어플리케이션의모든 Http Request에 대해 감지할 수 있는 기능

 

1. 필터클래스 만들기

 java.servlet.Filter를 구현(implements)하는 클래스 만들기

 -요청방식이 post 또는 POST방식일 경우 인코딩 작업하게끔

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		
		if(((HttpServletRequest)request).getMethod().equalsIgnoreCase("post")) {
			request.setCharacterEncoding("UTF-8");
		}
		chain.doFilter(request, response); // 이건 지우면 안됨
		//만약 다른 필터가 있다면 다른 필터를 실행시켜주는 용도 
		//다른 필터가 없다면 본격적으로 실행될 Servlet을 구동시켜주는 용도
	}

 

2. 필터 등록

1) web.xml파일에 등록하는방법

 현재 필터 클래스 등록 후, 어떤 url로 요청시 해당 필터클래스를 거쳐가게 할 것 인지 등록

<filter>
  	<filter-name>encodingFilter</filter-name>
  	<filter-class>com.br.mybatis.common.filer.EncodingFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>encodingFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

 

2) 어노테이션을 이용하는 방법

 필터 클래스 위에 @WebFilter 어노테이션을 활용해서 어떤 url로 요청시 거쳐가게 할 것 인지 등록

@WebFilter(filterName="encodingFilter", urlPatterns="/*")
public class EncodingFilter implements Filter {

}

  /* : 모든 url

'Framework > Mybatis' 카테고리의 다른 글

04. mybatis 페이징 처리  (0) 2023.02.15
02. mybatis를 이용한 CRUD  (0) 2023.02.14
01. MyBatis 개요 및 세팅  (0) 2023.02.13
복사했습니다!