SpringMVC_8_拦截器

1.拦截器的作用

SpringMVC的拦截器类似于servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。用户可以自定义一些拦截器来实现特定的功能。

2.拦截器和过滤器的区别

1)过滤器是JAVAEE规范的一部分,任何javaweb工程都可以使用。拦截器是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才可以使用。

2)过滤器在url-pattern中配置了/*之后,可以对所有访问进行拦截。而拦截器只是拦截对控制器方法的访问。

3.拦截器的使用流程:

1)编写拦截器类

public class MyInterceptor implements HandlerInterceptor {
    /**
     * 预处理方法,该方法在处理器之前执行
     * @param request
     * @param response
     * @param handler
     * @return true:放行,执行下一个拦截器,如果不存在下一个拦截器,就执行处理器;false:不放行
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("拦截器1的preHandle方法执行了");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("拦截器1的postHandle方法执行了");
    }

    /**
     * success.jsp页面执行后,该方法会执行
     * @param request
     * @param response
     * @param handler
     * @param ex
     * @throws Exception
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion方法主要用于关闭资源");
    }
}

 

2)配置拦截器

SpringMVC.xml:
<!--配置拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <!--要拦截的访问的url-->
            <mvc:mapping path="/user/*"/>
            <!--不要拦截的访问的url-->
            <!--<mvc:exclude-mapping path=""/>-->
            <bean class="com.interceptor.MyInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

 

posted @ 2020-09-23 15:11  日进一卒  阅读(171)  评论(0)    收藏  举报