springmvc拦截器

Spring拦截器:

springmvc.xml 中的配置:

    <!-- 配置拦截器 -->
    <!-- 
        如果有多个拦截器,会按照配置的先后顺序来执行。
     -->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/><!-- 如果只有一个* 只拦截一层的请求,**拦截所有请求 -->
            <bean class="interceptors.SomeInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

package interceptors;

创建拦截器类:

package interceptors;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class SomeInterceptor implements HandlerInterceptor{
    /**
     * DispatcherServlet收到请求之后,会先调用preHandle方法,如果该方法的返回值是true,则继续向后调用,
     * 如果返回值为false,则不再向后调用。 
     * arg2:描述处理器方法的一个对象。
     */
    public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object arg1)
            throws Exception {
        System.out.println("preHandle()");
        return true;
    }
    /**
     * 处理器(Controller)的方法已经执行完毕,正准备将处理结果(ModelAndView对象)返回给DispatcherServlet之前
     * 执行postHandle方法,可以在该方法里面修改处理结果。
     */
    
    public void postHandle(HttpServletRequest req, HttpServletResponse res, Object arg2,
            ModelAndView mav) throws Exception {
        System.out.println("postHandle()");
        
    }
    /**
     * 最后执行的方法。
     * 注意:只有当preHandle 方法返回值为true时,该方法才会执行
     * ex:是处理器所抛出的异常,可以写一个拦截器,用来处理处理器所抛出的异常。
     */
    public void afterCompletion(HttpServletRequest req, HttpServletResponse res, Object arg3, Exception ex)
            throws Exception {
        System.out.println("afterCompletion()");
        
    }

}

 

posted @ 2017-07-31 20:41  scha  阅读(129)  评论(0编辑  收藏  举报