본문 바로가기
Study/Spring

스프링 Filter 만들기

by 오늘만 사는 여자 2020. 10. 13.
728x90
반응형

스프링 Filter 사용법에 대해 간단히 알아보겠습니다.

간단하게 매 요청 URL을 이클립스 콘솔창에 찍어주는 필터를 만들어 볼게요.

 

우선 기본 인터페이스인 Filter 구현한 커스텀 필터 클래스를 하나 만들어 줍니다.

 

package com.dayoon.study.common.filter;

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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class CommonFilter implements Filter{
	private static final Logger logger = LoggerFactory.getLogger(CommonFilter.class);
	
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		logger.info("CommonFilter init call");
		logger.info("filter encoding : "+filterConfig.getInitParameter("encoding"));
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		logger.info("CommonFilter doFilter call");
		chain.doFilter(request, response);
	}

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

}

Filter 인터페이스의 메서드는 아래와 같습니다.

 

  • init(): 필터 인스턴스 초기화
  • doFilter(): 전/후 처리
  • destroy(): 필터 인스턴스 종료

위 코드에서

 

1. init() 보시면

getInitParameter() 파라미터를 사용하는 것을 보실 수 있는데

 

아래에서 보실 [web.xml]에서 

필터를 등록할 때 파라미터를 설정해주었는데, 그것을 받아 사용한 것입니다.

 

사실... 이게 굳이 무슨 의미가 있을까 생각을 해 봤는데..

 

[web.xml] 파일만 수정해 주는 것만으로도 

어플리케이션 전체에 적용이 되고, 이미 컴파일 된 클래스에서도 따로 재컴파일 없이 바로 적용가능하다는 장점이 있을 것 같습니다.

 

2. 그리고 doFilter() chain.doFilter();는 해당 필터의 처리(doFilter())결과를 다음 처리로 넘겨주는 역할을 합니다.

만약에 다음 필터 있다면 다음 필터없다면 서블릿으로 전해주겠죠.

 

따라서 chain.doFilter();를 해주지 않으면 현재 필터링 결과를 확인할 수가 없습니다.

 

아래는 [web.xml] 입니다.

 

<filter>
	   <filter-name>commonFilter</filter-name>
	   <filter-class>com.dayoon.study.common.filter.CommonFilter</filter-class>
	   <init-param>
	      <param-name>encoding</param-name>
	      <param-value>UTF-8</param-value>
	   </init-param>
	</filter>
	
	<filter-mapping>
	   <filter-name>commonFilter</filter-name>
	   <url-pattern>/*</url-pattern>
	</filter-mapping>

완료><

 

reference : thiago6.tistory.com/66

728x90
반응형

'Study > Spring' 카테고리의 다른 글

AOP란? (AOP 적용 예제)  (0) 2020.10.16
Interceptor  (0) 2020.10.13
mybatis query log (변수 매핑된 쿼리 로그 출력)  (0) 2020.10.13
Eclipse maven repository 경로 설정(settings.xml)  (0) 2020.10.07
Spring에서 myBatis Oracle 연동  (0) 2020.10.06

댓글