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使用Queue在多个子进程间交换数据的方法
Apr 18 Python
python对json的相关操作实例详解
Jan 04 Python
python机器学习实战之树回归详解
Dec 20 Python
Python使用win32 COM实现Excel的写入与保存功能示例
May 03 Python
python中强大的format函数实例详解
Dec 05 Python
Python代码太长换行的实现
Jul 05 Python
使用python分析统计自己微信朋友的信息
Jul 19 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
Apr 18 Python
pytorch使用指定GPU训练的实例
Aug 19 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
Mar 02 Python
使用keras时input_shape的维度表示问题说明
Jun 29 Python
Numpy中的数组搜索中np.where方法详细介绍
Jan 08 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
thinkphp实现图片上传功能分享
2014/03/04 PHP
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
2011/10/01 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
js中switch case循环实例代码
2013/12/30 Javascript
jQuery中:eq()选择器用法实例
2014/12/29 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
AngularJS入门教程之路由机制ngRoute实例分析
2016/12/13 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
JavaScript简单编程实例学习
2020/02/14 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
python实现的一个火车票转让信息采集器
2014/07/09 Python
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
Python中的zipfile模块使用详解
2015/06/25 Python
在Python的Django框架中为代码添加注释的方法
2015/07/16 Python
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
对python中的argv和argc使用详解
2018/12/15 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
Python3.0 实现决策树算法的流程
2019/08/08 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
美国旅游网站:Tours4Fun
2017/02/17 全球购物
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
工厂厂长的职责
2013/12/12 职场文书
大学运动会入场词
2014/02/22 职场文书
党员群众路线对照检查材料思想汇报
2014/09/17 职场文书
营业用房租赁协议书
2014/11/26 职场文书
小学教师求职信范文
2015/03/20 职场文书
南京大屠杀观后感
2015/06/02 职场文书
浅谈Java父子类加载顺序
2021/08/04 Java/Android