SpringMVC的拦截器类似于Servlet开发中的过滤器Filter,用于处理器进行预处理和后处理。将拦截器按一定的顺序联结成一条链,这条链称为拦截器链。在访问被拦截器拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现(面向切面编程)
创建自定义拦截器
1,创建拦截器类并实现HandlerInterceptor接口

需要复写三个方法
三个方法的执行顺序
(1)perHandler方法
这个方法在执行Controller中的目标方法之前执行
返回值为false时,后续的方法都不执行。
(2)postHandle方法
这个方法在执行了目标方法之后,视图对象返回之前执行
(3)afterCompletion方法
这个方法在视图对象返回后执行。

2,在spring-mvc.xml中配置这个拦截器类

3,测试拦截器的拦截效果
(1)不进行拦截


客户端

(2)perHandler方法的拦截处理

如果客户端给的参数是yes就运行通过执行目标方法,否则就转发到error.jsp页面


测试客户端给yes参数

若不是则跳转到error页面

(2)postHandler方法的拦截处理
这个方法用于修改ModeAndView中的属性值

测试


客户端

本文详细介绍了SpringMVC中的拦截器机制,它类似于Servlet的Filter,用于处理控制器方法的预处理和后处理。拦截器可以按顺序组成链,并在拦截的方法或字段访问时按顺序调用。创建自定义拦截器需要实现HandlerInterceptor接口,复写preHandle、postHandle和afterCompletion三个方法。在实际应用中,preHandle用于判断是否执行目标方法,postHandle可以修改ModelAndView属性,afterCompletion则在视图渲染后执行。通过配置拦截器并在测试中观察拦截效果,可以深入理解拦截器的工作原理和使用场景。
526

被折叠的 条评论
为什么被折叠?



