SpringMvc 拦截器
程序员文章站
2023-11-08 13:47:04
SpringMvc 拦截器介绍 SpringMVC拦截器(Interceptor)实现对每一个请求处理前后进行相关的业务处理,类似与servlet中的Filter。 SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor来实现的。 在SpringMVC中定 ......
springmvc 拦截器介绍
- springmvc拦截器(interceptor)实现对每一个请求处理前后进行相关的业务处理,类似与servlet中的filter。
- springmvc 中的interceptor 拦截请求是通过handlerinterceptor来实现的。
- 在springmvc中定义一个interceptor非常简单,主要有4种方式:
1)实现spring的handlerinterceptor接口;
2)继承实现了handlerinterceptor接口的类,比如spring 已经提供的实现了handlerinterceptor 接口的抽象类handlerinterceptoradapter;
3)实现spring的webrequestinterceptor接口;
4)继承实现了webrequestinterceptor的类;
定义拦截器
实现handlerintercepter接口:
public class myhandlerintercepter1 implements handlerinterceptor{ //handler执行前调用 //应用场景:登录认证、身份授权 //返回值为true则是放行,为false是不放行 @override public boolean prehandle(httpservletrequest request, httpservletresponse response, object handler) throws exception { return false; } //进入handler开始执行,并且在返回modelandview之前调用 //应用场景:对modelandview对象操作,可以把公共模型数据传到前台,可以统一指定视图 @override public void posthandle(httpservletrequest request, httpservletresponse response, object handler, modelandview modelandview) throws exception { } //执行完handler之后调用 //应用场景:统一异常处理、统一日志处理 @override public void aftercompletion(httpservletrequest request, httpservletresponse response, object handler, exception ex) throws exception { } }
配置拦截器
springmvc 拦截器是绑定在handlermapping中的。即:如果某个handlermapping中配置拦截,则该handlermapping映射成功的handler会使用该拦截器。
针对单个handlermapping配置
<bean class="org.springframework.web.servlet.handler.beannameurlhandlermapping"> <property name="interceptors"> <list> <ref bean="interceptor" /> </list> </property> </bean> <bean id="interceptor" class="com.cyb.ssm.interceptor.myhandlerinterceptor" />
全局拦截器配置(推荐)
springmvc的全局拦截器配置,其实是把配置的拦截器注入到每个已初始化的handlermapping中了。
<!-- 配置全局mapping的拦截器 --> <mvc:interceptors> <!-- 公共拦截器可以拦截所有请求,而且可以有多个 --> <bean class="com.cyb.ssm.interceptor.myhandlerinterceptor1" /> <bean class="com.cyb.ssm.interceptor.myhandlerinterceptor2" /> <!-- 如果有多个拦截器,则按照顺序进行配置 --> <mvc:interceptor> <!-- /**表示所有url和子url路径 --> <mvc:mapping path="/test/**" /> <!-- 特定请求的拦截器只能有一个 --> <bean class="com.cyb.ssm.interceptor.myhandlerinterceptor3" /> </mvc:interceptor> </mvc:interceptors>
多拦截器拦截规则
如果有多个拦截器,那么配置到springmvc.xml中最上面的拦截器,拦截优先级最高。
上一篇: 雍正问县令有没有贪污,他居然回答说有