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中最上面的拦截器,拦截优先级最高。
相关推荐
zhangdy0 2020-05-31
HappyHeng 2020-05-16
whbing 2020-04-11
MicroBoy 2020-01-23
HappyHeng 2020-05-28
横云断岭 2020-01-04
方志朋 2019-12-08
方志朋 2019-12-03
neweastsun 2019-11-11
whbing 2019-10-21
ScarletLina 2016-05-03
JINKAI 2019-03-27
zhongjcbill 2019-03-27
lihaoxiang 2018-07-23
mendeliangyang 2019-06-27
luojinbai 2017-02-27