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自定义拦截器执行流程:


浙公网安备 33010602011771号