Spring MVC 拦截器(2)-WebRequestInterceptor

上一节小博老师给大家介绍了SpringMVC中使用HandlerInterceptor接口实现拦截器的方法,今天小博老师先给大家介绍另外一种拦截器的实现方式WebRequestInterceptor。我们先来看一下WebRequestInterceptor接口的源码结构:

WebRequestInterceptor接口同HandlerInterceptor接口一样定义了三个方法,preHandle 、postHandle 以及afterCompletion。两个接口的方法名都相同,调用次序也相同。即preHandle是在请求处理之前调用;postHandle实在请求处理之后,视图渲染之前调用;afterCompletion是在视图渲染之后调用。接下来我们看看他们的不同之处。

1.方法参数不同。WebRequest是Spring定义的接口,它是对HttpServletRequest的封装。对WebRequest 进行的操作都将同步到HttpServletRequest 中。WebRequest 的set/getAttribute(name, value, scope)比HttpServletRequest 的set/getAttribute多了一个scope参数。它有三个取值:

SCOPE_REQUEST:它的值是0,表示request请求作用范围。

SCOPE_SESSION :它的值是1,表示session请求作用范围。

SCOPE_GLOBAL_SESSION :它的值是2 ,表示全局会话作用范围,即ServletContext上下文作用范围。

2.preHandle 方法。WebRequestInterceptor的该方法返回值为void,不是boolean。所以该方法不能用于请求阻断,一般用于资源准备。

3.postHandle 方法。preHandle 中准备的数据都可以通过参数WebRequest访问。ModelMap 是Controller 处理之后返回的Model 对象,可以通过改变它的属性来改变Model 对象模型,达到改变视图渲染效果的目的。

4.afterCompletion方法。Exception 参数表示的是当前请求的异常对象,如果Controller 抛出的异常已经被处理过,则Exception对象为null 。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 姓名: 李小娜 [嵌牛导读]: SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,...
    n184阅读 3,217评论 0 4
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,395评论 11 349
  • 一、定义Interceptor实现类 SpringMVC 中的Interceptor 拦截请求是通过Handler...
    bboymonk阅读 391评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,200评论 19 139
  • 来到丽江 不许你浮躁 这座城市的节奏 是慢的 所以请你你慢下来 去感受不同的丽江 悠闲的走在四通八达的大街小巷 ...
    黄欣霖sullen阅读 240评论 0 0