본문 바로가기
개발/Programming

Spring + java.servlet.Filter

by 카루딘 2017. 5. 31.
반응형

출처: http://userx.tistory.com/entry/Spring-javaservletFilter



스프링 리소스를 java.sevlet.Filter 를 구현하여 쓸 수 있는게 있습니다.
멋 모르고, 그냥
class SampleFilter extends org.springframework.web.filter.OncePerRequestFilter
하면, 될줄 알았더니 그냥 필터 기능뿐이지 스프링 빈들을 가져오질 못하더라구요.

방법은, 필터를 구현하되 스프링빈으로 등록하고, web.xml 에서 <filter-class> 는 
org.springframework.web.filter.DelegatingFilterProxy 로 하는것입니다.

<필터 구현>

public class FilterTest implements Filter
{
    @Autowired UserAuthCheck userAuthCheck;

    public void doFilter(ServletRequest req,
ServletResponse res, FilterChain chain) throws IOException, ServletException {
        userAuthCheck.getUser("zzong");
        chain.doFilter(req, res);
    }
    
    public void destroy() {}
    public void init(FilterConfig arg0) throws ServletException {}
}


<스프링 빈 등록>

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="filterTest" class="test.web.filter.FilterTest" />
</beans>


<WEB-INF에 필터등록>

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="test" version="2.5" .... >
    <filter>
        <filter-name>filterTest</filter-name>
        <filter-class>
org.springframework.web.filter.DelegatingFilterProxy
       </filter-class>
    </filter>    
    <filter-mapping>
        <filter-name>filterTest</filter-name>
        <url-pattern>/</url-pattern>
    </filter-mapping>

</web-app>


보시는 바와 같이, 주의할 점은 스프링 빈에 등록한 id 와 필터를 정의한 <filter-name> 에 값이 동일해야합니다.


이상.
그러고 보니, 필터가 뭐하는 놈인지도 설명이 좀 필요하겠네요. 따로 포스팅해서 올려야겠네요.

열대야가 시작되었습니다. 집이 무서운 계절이죠.
더위에 지치지 말고, 건강들 하시기 바랍니다~

출처: http://userx.tistory.com/entry/Spring-javaservletFilter [develop Experience]

출처: http://userx.tistory.com/entry/Spring-javaservletFilter [develop Experience]

출처: http://userx.tistory.com/entry/Spring-javaservletFilter [develop Experience]

출처: http://userx.tistory.com/entry/Spring-javaservletFilter [develop Experience]

반응형