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中的With语句
Feb 02 Python
python使用nntp读取新闻组内容的方法
May 08 Python
Python工程师面试题 与Python基础语法相关
Jan 14 Python
Python中动态创建类实例的方法
Mar 24 Python
Python中matplotlib中文乱码解决办法
May 12 Python
Python中getpass模块无回显输入源码解析
Jan 11 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
pycharm 实现显示project 选项卡的方法
Jan 17 Python
详解Python爬取并下载《电影天堂》3千多部电影
Apr 26 Python
Django model 中设置联合约束和联合索引的方法
Aug 06 Python
在Python中使用MongoEngine操作数据库教程实例
Dec 03 Python
通过实例简单了解Python中yield的作用
Dec 11 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线程的内存回收问题
2016/07/08 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
2020/04/23 PHP
PHP网页缓存技术优点及代码实例
2020/07/29 PHP
通过javascript获取iframe里的值示例代码
2013/06/24 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
javascript常用方法汇总
2014/12/02 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
javascript中apply/call和bind的使用
2017/02/15 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
2017/11/17 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
Vue的路由动态重定向和导航守卫实例
2018/03/17 Javascript
微信小程序之自定义组件的实现代码(附源码)
2018/08/02 Javascript
react-native使用leanclound消息推送的方法
2018/08/06 Javascript
vue项目环境变量配置的实现方法
2018/10/12 Javascript
vue-cli创建的项目中的gitHooks原理解析
2020/02/14 Javascript
python遍历类中所有成员的方法
2015/03/18 Python
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
2018/08/25 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
简单了解为什么python函数后有多个括号
2019/12/19 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
优秀食品类广告词
2014/03/19 职场文书
大班幼儿评语大全
2014/04/30 职场文书
导游词400字
2015/02/13 职场文书
红与黑读书笔记
2015/06/29 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js
Python数组变形的几种实现方法
2022/05/30 Python