宇而靜...

Spring Framework's Interceptor Example 본문

Development/Java

Spring Framework's Interceptor Example

우™ 2008. 2. 13. 16:39
웹 어플리케이션에서 각 페이지마다 세션체크를 하게 되는데 이럴 때 Spring Framework의 Interceptor를
이용하면 한번의 코딩으로 모든 페이지를 체크할 수 있게 된다.
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.ModelAndViewDefiningException;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class InterceptorExample extends HandlerInterceptorAdapter {
    
    public boolean preHandle(HttpServletRequest request,HttpServletResponse response,
                 Object handler) throws Exception {        
        UserSession user = (UserSession) request.getSession().getAttribute("userSession");
        if (user == null) {
            String url = "/login";
            throw new ModelAndViewDefiningException(new ModelAndView(url));
        }
        return true;
    }
}
InterceptorExample.java

<bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="interceptors">
        <list>
            <ref bean="interceptorex"/>
        </list>
    </property>
</bean>

<bean id="interceptorex" class="InterceptorExample"/>
xxx-servlet.xml
servlet을 셋팅는 XML에 안에 Controller를 셋팅하는 부분에서 (SimpleUrlHandlerMapping) interceptor
셋팅을 하면 이 bean안에 속한 Controller는 모두 interceptor를 거치게 된다.