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 ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
Jun 10 Python
Python算法输出1-9数组形成的结果为100的所有运算式
Nov 03 Python
python读取图片并修改格式与大小的方法
Jul 24 Python
python3实现网络爬虫之BeautifulSoup使用详解
Dec 19 Python
django模板加载静态文件的方法步骤
Mar 01 Python
Python爬虫——爬取豆瓣电影Top250代码实例
Apr 17 Python
python使用opencv对图像mask处理的方法
Jul 05 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
Sep 10 Python
简单了解Python write writelines区别
Feb 27 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
Mar 30 Python
python实现马丁策略的实例详解
Jan 15 Python
浅谈Python数学建模之数据导入
Jun 23 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
杏林同学录(八)
2006/10/09 PHP
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
PHP中explode函数和split函数的区别小结
2016/08/24 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
Ubuntu中搭建Nodejs开发环境过程分享
2014/06/01 NodeJs
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
2014/12/17 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
2016/05/30 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
2016/06/13 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
vuejs实现递归树型菜单组件
2018/01/13 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
2018/04/18 Javascript
vuex 解决报错this.$store.commit is not a function的方法
2018/12/17 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
python中执行shell命令的几个方法小结
2014/09/18 Python
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
python实现换位加密算法的示例
2018/10/14 Python
Django对models里的objects的使用详解
2019/08/17 Python
PHP统计代码行数的小代码
2019/09/19 Python
python实现指定ip端口扫描方式
2019/12/17 Python
Python xlwt模块使用代码实例
2020/06/10 Python
pycharm 关闭search everywhere的解决操作
2021/01/15 Python
学徒工职责
2014/03/06 职场文书
材料会计岗位职责
2014/03/06 职场文书
党员承诺书格式
2014/05/21 职场文书
经营管理策划方案
2014/05/22 职场文书
2016新春团拜会致辞
2015/08/01 职场文书