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读写ini文件示例(python读写文件)
Mar 25 Python
python实现上传样本到virustotal并查询扫描信息的方法
Oct 05 Python
Python进行数据科学工作的简单入门教程
Apr 01 Python
python中map、any、all函数用法分析
Apr 21 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
Jul 12 Python
python 调用钉钉机器人的方法
Feb 20 Python
Django框架中序列化和反序列化的例子
Aug 06 Python
jupyter note 实现将数据保存为word
Apr 14 Python
如何使用Django Admin管理后台导入CSV
Nov 06 Python
Python 实现一个简单的web服务器
Jan 03 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 Python
python b站视频下载的五种版本
May 27 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
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
2011/10/31 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
2020/07/19 PHP
Js中sort()方法的用法
2006/11/04 Javascript
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
2007/06/29 Javascript
JavaScript Array Flatten 与递归使用介绍
2011/10/30 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
使用jquery写个更改表格行顺序的小功能
2014/04/29 Javascript
Javascript限制网页只能在微信内置浏览器中访问
2014/11/09 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
2015/10/30 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
2016/05/20 Javascript
jQuery遍历json的方法(推荐)
2016/06/12 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
2020/11/06 Javascript
[02:27]2018DOTA2亚洲邀请赛赛前采访-OpTic
2018/04/03 DOTA
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
Python数据拟合与广义线性回归算法学习
2017/12/22 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
Python3分析处理声音数据的例子
2019/08/27 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
pycharm 激活码及使用方式的详细教程
2020/05/12 Python
python中Ansible模块的Playbook的具体使用
2020/05/28 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
美国顶级品牌男士大码服装店:DXL
2017/08/30 全球购物
乡镇信息公开实施方案
2014/03/23 职场文书
市场营销毕业生自荐信范文
2014/04/01 职场文书
老师对学生的寄语
2014/04/09 职场文书
检讨书范文300字
2015/01/28 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
2016国培学习心得体会
2016/01/08 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python