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 |
댓글