版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/c_royi/article/details/80482157
1.springmvc拦截器的说明和使用
1.1拦截器的说明:
Spring Web MVC 的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于进行预处理和后处理。
1.1.1使用简介:定义拦截器,实现HandlerInterceptor接口。接口中提供三个方法。(面试问题)
拦截器的机制基于aop 面向切面编程
public classHandlerInterceptor1 implements HandlerInterceptor {
//进入 Handler方法之前执行
//用于身份认证、身份授权
//比如身份认证,如果认证通过表示当前用户没有登陆,需要此方法拦截不再向下执行
@Override
public booleanpreHandle(HttpServletRequest request,
HttpServletResponseresponse, Object handler) throws Exception {
//return false表示拦截,不向下执行
//return true表示放行
return false;
}
//进入Handler方法之后,返回modelAndView之前执行
//应用场景从modelAndView出发:将公用的模型数据(比如菜单导航)在这里传到视图,也可以在这里统一指定视图
@Override
public voidpostHandle(HttpServletRequest request,
HttpServletResponseresponse, Object handler,
ModelAndViewmodelAndView) throwsException {
}
//执行Handler完成执行此方法
//应用场景:统一异常处理,统一日志处理
@Override
public voidafterCompletion(HttpServletRequest request,
HttpServletResponseresponse, Object handler, Exception ex)
throws Exception {
}
}
1.2 拦截器配置
1.2.1 针对HandlerMapping配置
springmvc拦截器针对HandlerMapping(处理器映射器)进行拦截设置,如果在某个HandlerMapping中配置拦截,经过该 HandlerMapping映射成功的handler最终使用该 拦截器。
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<property name="interceptors">
<list>
<ref bean="handlerInterceptor1"/>
<ref bean="handlerInterceptor2"/>
</list>
</property>
</bean>
<bean id="handlerInterceptor1"class="springmvc.intercapter.HandlerInterceptor1"/>
<bean id="handlerInterceptor2" class="springmvc.intercapter.HandlerInterceptor2"/>
<!--一般不推荐使用。-->