mvc:interceptors
这个标签用于注册一个自定义拦截器或者是WebRequestInterceptors.
可以通过定义URL来进行路径请求拦截,可以做到较为细粒度的拦截控制。
例如在配置文件加入
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 以下配置将拦截所有的URL请求 --> <mvc:interceptors> <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" /> </mvc:interceptors> <!-- 以下配置将拦截特有的URL请求 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/secure/*"/> <bean class="org.example.SecurityInterceptor" /> </mvc:interceptor> <mvc:interceptor> <mvc:mapping path="/admin/*.do"/> <bean class="org.example.admin.ControlInterceptor" /> </mvc:interceptor> </mvc:interceptors> </beans>
拦截器
Spring为我们提供了org.springframework.web.servlet.handler.HandlerInterceptorAdapter这个适配器,继承此类,可以非常方便的实现自己的拦截器。他有三个方法:
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return true; } public void postHandle( HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } public void afterCompletion( HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { }
分别实现预处理、后处理(调用了Service并返回ModelAndView,但未进行页面渲染)、返回处理(已经渲染了页面)
在preHandle中,可以进行编码、安全控制等处理;
在postHandle中,有机会修改ModelAndView;
在afterCompletion中,可以根据ex是否为null判断是否发生了异常,进行日志记录。
如果基于xml配置使用Spring MVC,
可以利用SimpleUrlHandlerMapping、BeanNameUrlHandlerMapping进行Url映射(相当于struts的path映射)和拦截请求(注入interceptors),
如果基于注解使用Spring MVC,可以使用DefaultAnnotationHandlerMapping注入interceptors。
注意无论基于xml还是基于注解,HandlerMapping bean都是需要在xml中配置的。
相关推荐
NULL 博文链接:https://lgbolgger.iteye.com/blog/2105151
SpringMVC第12讲:<mvc:annotation-driven/>
SpringMVC中的拦截器-拦截器方法的作用和执行顺序.avi
NULL 博文链接:https://yihuawuye1.iteye.com/blog/2105063
SpringMVC精品资源--深入解析SpringMVC核心原理:从手写简易版MVC框架开始(SmartMvc)
本篇文章主要介绍了防止SpringMVC拦截器拦截js等静态资源文件的解决方法,具有一定的参考价值,有兴趣的同学可以了解一下
初学者很容易将 Spring MVC 拦截器 和 Spring Cloud OpenFeign 拦截器搞混,误以为OpenFeign拦截器就是SpringMVC拦截器:Spring MVC拦截器发生在客户端 和 服务端之间,在客户端向服务端发送请求时进行拦截处理。...
十三、如何给spring3 MVC中的Action做JUnit单元测试? 十四、spring mvc 转发与重定向 十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean ...
SpringMVC第11讲:拦截器
SpringMVC DispatcherServlet重写、自定义拦截器拦截器源码
SpringMVC框架概述: 介绍什么是...拦截器和过滤器: 介绍如何使用拦截器和过滤器来实现日志记录、权限验证等功能。 RESTful Web服务: 讲解如何使用SpringMVC开发RESTful风格的Web服务,支持HTTP方法、资源定位等。
Spring MVC 拦截器Spring MVC 拦截器
极客学院java中级课程,SpringMVC系列教材——SpringMVC 中的拦截器与异常处理
springmvc 拦截器
SpringMVC拦截器例子详解,
SpringMVC: 一、前言 二、spring mvc 核心类与接口 三、spring mvc 核心流程图 四、spring mvc DispatcherServlet说明 五、spring mvc 父子上下文的说明 六、springMVC-mvc.xml 配置文件片段讲解 七、spring mvc ...
简单的SpringMVC小程序,用Intelli IDEA 编写的,实现拦截器功能,实现了简单的登录、退出功能,是入门的好程序
SpringMVC学习(十二)——SpringMVC中的拦截器
SpringMVC拦截器源代码
SpringMvc 拦截器 原理清楚,代码简单,值得学习!