springMVC自定义拦截器

springMVC自定义拦截器作用:
1. springMVC自定义拦截器用来对请求进行拦截处理,通过自定义拦截器可以实现特定的功能。
2. 拦截器的功能体现在继承接口的三个方法上,如下:

/**
 * @Author tjt
 * @date 2022/7/26 21:53
 * @Version 1.0
 * 自定义拦截器 ,需要在spring配置文件中配置,需要拦截的请求
 */
@Component
public class MyInterceptor02 implements HandlerInterceptor {
    /**
     * 1.该方法在目标方法执行前,被执行,可以在方法对发送来的数据进行验证处理
     * 2.如果该方法返回false,不再执行目标方法
     * 3.该方法可以获取到,request, response,handler
     * 4.这里根据业务进行拦截,并跳转到指定页面
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("===第2个拦截器MyInterceptor02被执行--preHandle--==");
        return true;
    }

    /**
     * 1.目标方法执行后,执行postHandle方法
     * 2.该方法可以获取到目标方法返回的modelAndView
     * @param request
     * @param response
     * @param handler
     * @param modelAndView
     * @throws Exception
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("===第2个拦截器MyInterceptor02被执行--postHandle--==");
    }
    /**
     * 在视图渲染之后执行
     * @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("===第2个拦截器MyInterceptor02被执行--afterCompletion--==");
    }
}

springMVC自定义拦截器使用:

1.自定义拦截器类必须实现HandleInterceptor接口

2.必须将其注入到ioc容器 

3.必须在springmvc配置文件中进行配置

  配置方式如下(三种配置方式):

<!--配置自定义拦截器
        默认情况下,拦截所有请求
     -->
    <mvc:interceptors>
<!--        第一种配置方法,直接ref引用到对应的拦截器,拦截所有请求-->
<!--        <ref bean="myInterceptor01"/>-->

        <!-- 第二种配置方法,拦截指定请求       -->
<!--        <mvc:interceptor>-->
<!--            <mvc:mapping path="/hi"/>-->
<!--            <ref bean="myInterceptor01"/>-->
<!--        </mvc:interceptor>-->

        <!-- 第三种配置方法,拦截指定请求,并排斥不需要拦截的请求
            <mvc:mapping path="/h*"/> 通配符,表示拦截/h开头的路径
            <mvc:exclude-mapping path="/hello"/> 表示/hello 不拦截
         -->
<!--        <mvc:interceptor>-->
<!--            <mvc:mapping path="/h*"/>-->
<!--            <mvc:exclude-mapping path="/hello"/>-->
<!--            <ref bean="myInterceptor01"/>-->
<!--        </mvc:interceptor>-->
        <!--配置的第二个拦截器,可以配置多个处理器-->
        <mvc:interceptor>
            <mvc:mapping path="/h*"/>
            <ref bean="myInterceptor02"/>
        </mvc:interceptor>
    </mvc:interceptors>

springMVC自定义拦截器执行流程:

 

posted @ 2022-07-27 16:36  小白java-1  阅读(299)  评论(0)    收藏  举报