文档章节

SpringMVC拦截器

梦魂清风
 梦魂清风
发布于 2017/07/24 23:49
字数 418
阅读 22
收藏 1

HandleInterceptor的三个方法
preHandler
    返回值:是否需要将当前请求拦截下来
    false:请求将被终止
    true:请求会被继续运行
    参数:HttpServletRequest, HttpServletResponse, Object
    Object:被拦截的请求目标对象
postHandler
    参数:HttpServletRequest, HttpServletResponse, Object, ModelAndView
    ModelAndView:改变显示的视图(setViewName)或者修改发往视图的方法
    (具体可以参考HandleInterceptor接口的源码)
afterCompletion
    作用:做资源的销毁,如关闭IO流

Spring MVC拦截器的配置
    • 创建拦截器并实现HandleInterceptor接口
    • 将Spring MVC配置文件中以bean的形式注册拦截器
    可以将bean配置在interceptors标签中,这时默认拦截所有路径
    可以在interceptors的子标签interceptor中配置bean,同时指定拦截规则mapping-path
    示例
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="拦截路径(可使用正则表达式)">
            <bean class="拦截器类的全限定名(包名+类名)">
        </mvc:interceptor>
    </mvc:interceptors>
拦截器和过滤器
    ①拦截器是基于java的反射机制的,而过滤器是基于函数回调。
    ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
    ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
    ④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
    ⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
    ⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑

© 著作权归作者所有

共有 人打赏支持
梦魂清风
粉丝 1
博文 60
码字总数 45295
作品 0
长沙
程序员
私信 提问

暂无文章

TensorFlow的基础概念02

TensorFlow的计算流图 import osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'#TensorFlow的计算模型,数据流图'''TensorFlow = Tensor + FlowTensor 张量 数据结构:多维数组Flo...

怪咖先生forever
16分钟前
1
0
大数据技术的发展趋势

大数据领域已经涌现出了大量新的技术,它们成为大数据采集、存储、处理和呈现的有力武器。这些技术下一步将如何发展?它们之中哪些技术将广为流行?又会诞生哪些新的技术? 技术趋向多样化,...

董黎明
32分钟前
7
0
藏在正则表达式里的陷阱

前几天线上一个项目监控信息突然报告异常,上到机器上后查看相关资源的使用情况,发现 CPU 利用率将近 100%。通过 Java 自带的线程 Dump 工具,我们导出了出问题的堆栈信息。 我们可以看到所...

前端小攻略
34分钟前
3
0
关联更新,关联查询

关联更新 update A,B SET A.c1=B.c1,A.c2=B.c2 where A.id=B.id and ... update A inner join on A.id=B.id set A.c1=B.c1,A.c2=B.c2 where... 关联查询 交叉连接(cross join),内连接(inner ......

关元
37分钟前
3
0
django的环境搭建及启用

Pycharm社区版不像商业版那样可以直接创建django工程,需要通过一下步骤创建: 新建一个用于Django开发的虚拟环境 打开命令窗口 新建虚拟环境: conda create -n env_name python=3.6 查看系...

davidwbnu
38分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部