JAVA SpringMVC实现自定义拦截器


Posted in Python onMarch 16, 2022

SpringMVC实现自定义拦截器

1 拦截器(interceptor)的作用

Spring MVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。

将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(InterceptorChain)。在访问被拦截
的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实
现。

2 拦截器和过滤器区别

关于interceptor和filter的区别,如图所示:

JAVA SpringMVC实现自定义拦截器

3.实现过程

步骤分析:

  1. 创建拦截器类实现HandlerInterceptor接口
  2. 配置拦截器
  3. 测试拦截器的拦截效果

3.1创建拦截器类实现HandlerInterceptor接口

public class MyInterceptor implements HandlerInterceptor {

    /**
     *         preHandle: 在目标方法执行之前 进行拦截   return false:不放行
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle1....");

        return true;
    }

    /**
     *       postHandle: 在目标方法执行之后,视图对象返回之前,执行的方法
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle1....");
    }

    /**
     *        afterCompletion:在流程都执行完成后,执行的方法
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion1....");
    }


}

3.2配置拦截器

<!--    配置拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <!--对哪些资源执行拦截操作 path="/**"表示对controller层所有方法进行拦截 -->
            <mvc:mapping path="/**" />
            <bean class="com.weihong.interceptor.MyInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>

3.3测试拦截器的拦截效果

@RequestMapping("/target")
    public String targetMethed(){
        System.out.println("目标方法执行了");
        return "interceptor";
    }

3.4编写jsp页面

<html>
<head>
    <title>Title</title>
</head>
<body>
    <h3>success~~~~~~</h3>
    <% System.out.println("视图执行了....");%>
</body>
</html>

3.5测试结果

JAVA SpringMVC实现自定义拦截器

4. 拦截器链

开发中拦截器可以单独使用,也可以同时使用多个拦截器形成一条拦截器链。开发步骤和单个拦截器是一样的,只不过注册的时候注册多个,注意这里注册的顺序就代表拦截器执行的顺序。

同上,再编写一个MyHandlerInterceptor2操作,测试执行顺序:

<!--配置拦截器-->
<mvc:interceptors>
  <mvc:interceptor>
    <!--拦截器路径配置-->
    <mvc:mapping path="/**"/>
    <!--自定义拦截器类-->
    <bean class="com.lagou.interceptor.MyInterceptor1"></bean>
  </mvc:interceptor>
  <mvc:interceptor>
    <!--拦截器路径配置-->
    <mvc:mapping path="/**"/>
    <!--自定义拦截器类-->
    <bean class="com.lagou.interceptor.MyInterceptor2"></bean>
  </mvc:interceptor>
</mvc:interceptors>

5. 知识小结

拦截器中的方法说明如下:

JAVA SpringMVC实现自定义拦截器

Python 相关文章推荐
python求crc32值的方法
Oct 05 Python
Python的Django框架可适配的各种数据库介绍
Jul 15 Python
详解Django框架中用户的登录和退出的实现
Jul 23 Python
python实现简单的单变量线性回归方法
Nov 08 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
Jul 12 Python
python 实现手机自动拨打电话的方法(通话压力测试)
Aug 08 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
Dec 19 Python
Python自动采集微信联系人的实现示例
Feb 28 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
python安装第三方库如xlrd的方法
Oct 31 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
Dec 14 Python
Python Pandas 删除列操作
Mar 16 #Python
Python实现批量自动整理文件
Mar 16 #Python
Pandas-DataFrame知识点汇总
Mar 16 #Python
python 安全地删除列表元素的方法
Mar 16 #Python
python turtle绘制多边形和跳跃和改变速度特效
Python中的turtle画箭头,矩形,五角星
Mar 16 #Python
Python学习之异常中的finally使用详解
Mar 16 #Python
You might like
2020最新CPU的性能排名
2020/04/02 数码科技
SONY ICF-F10中波修复记
2021/03/02 无线电
php多文件上传功能实现原理及代码
2013/04/18 PHP
php实现修改新闻时删除图片的方法
2015/05/12 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
复制本贴标题和地址的js代码
2008/07/01 Javascript
广告切换效果(缓动切换)
2009/05/27 Javascript
关于js内存泄露的一个好例子
2013/12/09 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
Javascript闭包实例详解
2015/11/29 Javascript
微信小程序之GET请求的实例详解
2017/09/29 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
vue动画效果实现方法示例
2019/03/18 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
python使用7z解压软件备份文件脚本分享
2014/02/21 Python
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
python求最大连续子数组的和
2018/07/07 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
calendar在python3时间中常用函数举例详解
2020/11/18 Python
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
计算机开发个人求职信范文
2013/09/26 职场文书
后勤人员岗位职责
2013/12/17 职场文书
事务机电主管工作职责
2014/02/25 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
2016党员党章学习心得体会
2016/01/14 职场文书