摘要:SpringWebMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于处理器进行预处理和后处理。

本文分享自华为云社区《不讲废话,全程干货,0基础带你学习SpringMVC拦截处理器》,作者:JavaEdge 。

1 工作原理流程图

2 Spring Web MVC 的处理器拦截器

  • HandlerInterceptor

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

HandlerInterceptor接口定义了如下方法:

2.1 preHandle

该方法将在请求处理之前进行调用,只有当该方法返回true时,才会继续调用下一个Interceptor的preHandle(),如果已是最后一个Interceptor就会是调用当前请求的Controller

2.2 postHandle

该方法将在请求处理后,DispatcherServlet进行视图返回渲染之前进行调用,可以在这个方法中对Controller处理之后的ModelAndView对象进行操作(比如这里加入公用信息以便页面显示)

2.3 afterCompletion

该方法也是需要当前对应的Interceptor的preHandle方法的返回值为true时才会执行,该方法将在整个请求结束之后,也就是在DispatcherServlet 渲染了对应的视图之后执行,用于资源清理。

3 拦截器配置

3.1 针对某种mapping拦截器配置

 <bean
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<property name="interceptors">
<list>
<ref bean="handlerInterceptor1"/>
<ref bean="handlerInterceptor2"/>
</list>
</property>
</bean>
<bean id="handlerInterceptor1"class="springmvc.intercapter.HandlerInterceptor1"/>
<bean id="handlerInterceptor2"class="springmvc.intercapter.HandlerInterceptor2"/>

3.2 针对所有mapping配置全局拦截器

<!--拦截器 -->
<mvc:interceptors>
<!--多个拦截器,顺序执行 -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.sss.filter.HandlerInterceptor1"></bean>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.sss.filter.HandlerInterceptor2"></bean>
</mvc:interceptor>
</mvc:interceptors>

4 实践

用户访问其他页面时,从Seesion中获取到用户,未登录则重定向到登录页面。

Public class LoginInterceptor implements HandlerInterceptor{
@Override
Public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception { //如果是登录页面则放行
if(request.getRequestURI().indexOf("login.action")>=0){
return true;
}
HttpSession session = request.getSession();
//如果用户已登录也放行
if(session.getAttribute("user")!=null){
return true;
}
//用户没有登录挑战到登录页面
request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response); return false;
}

点击关注,第一时间了解华为云新鲜技术~

从原理带你掌握Spring MVC拦截处理器知识的更多相关文章

  1. SSM(spring mvc+spring+mybatis)学习路径——2-2、spring MVC拦截器

    目录 2-2 Spring MVC拦截器 第一章 概述 第二章 Spring mvc拦截器的实现 2-1 拦截器的工作原理 2-2 拦截器的实现 2-3 拦截器的方法介绍 2-4 多个拦截器应用 2- ...

  2. spring MVC拦截器01

    spring MVC拦截 作用:身份校验,权限检查,防止非法訪问. 场景:一个bbs系统,用户没有登录就无法发帖或者删除评论; 一个博客系统,没有登录就无法发表博文,无法添加分类,无法删除博文. sp ...

  3. spring mvc 拦截器的使用

    Spring MVC 拦截器的使用 拦截器简介 Spring MVC 中的拦截器(Interceptor)类似于 Servler 中的过滤器(Filter).用于对处理器进行预处理和后处理.常用于日志 ...

  4. 【Java Web开发学习】Spring MVC 拦截器HandlerInterceptor

    [Java Web开发学习]Spring MVC 拦截器HandlerInterceptor 转载:https://www.cnblogs.com/yangchongxing/p/9324119.ht ...

  5. Spring Boot 2.X(九):Spring MVC - 拦截器(Interceptor)

    拦截器 1.简介 Spring MVC 中的拦截器(Interceptor)类似于 Servlet 开发中的过滤器 Filter,它主要用于拦截用户请求并作相应的处理,它也是 AOP 编程思想的体现, ...

  6. spring MVC 拦截有几种实现方式

    spring MVC 拦截有几种实现方式 实现HandelInterceptor接口方式        继承HandelInterceptor 的方式.一般有这两种方式 spring 如何走单元测式 ...

  7. Spring MVC拦截器配置

    Spring MVC拦截器配置 (1)自定义拦截器 package learnspringboot.xiao.other; import org.springframework.web.servlet ...

  8. 写的太细了!Spring MVC拦截器的应用,建议收藏再看!

    Spring MVC拦截器 拦截器是Spring MVC中强大的控件,它可以在进入处理器之前做一些操作,或者在处理器完成后进行操作,甚至是在渲染视图后进行操作. 拦截器概述 对于任何优秀的MVC框架, ...

  9. 对于Spring MVC 拦截器的一些了解

    Spring MVC 拦截器的执行顺序 应用场景 假设请求 localhost:8080/ 则要求直接重定向到 localhost:8080/login ; 定义拦截器顺序 permission lo ...

  10. Spring MVC拦截器浅析

    Spring MVC拦截器 重点:Spring MVC的拦截器只会拦截控制器的请求,如果是jsp.js.image.html则会放行. 什么是拦截器 运行在服务器的程序,先于Servlet或JSP之前 ...

随机推荐

  1. Util应用框架基础(一) - 依赖注入

    本节介绍Util应用框架依赖注入的使用和配置扩展. 文章分为多个小节,如果对设计原理不感兴趣,只需阅读基础用法部分即可. 概述 当你想调用某个服务的方法完成特定功能时,首先需要得到这个服务的实例. 最 ...

  2. MongoDB-SQL语法

    MongoDB-SQL语法 可视化软件:Navicat 1. MongoDB-查询 db.getCollection('表名').find({}); db.getCollection('表名').fi ...

  3. 总结(5)--- Numpy和Pandas库常用函数

    二.常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组. 用于对整组数据进行快速运算的标准 ...

  4. 京东面试:说说Cookie、Session和Token的区别?

    东子作为目前传统电商三巨头之一(其他还有阿里巴巴和拼多多),其面试题的难度也中规中矩,总体来说没有其他两家面试难度高,当然薪资也没有其他两家薪资高. 其中拼多多的薪资最为离谱,尤其是前几年,听说挖同行 ...

  5. python循环语句(二)

    Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串. 知识点:for循环的语法格式如下: for iterating_var in sequence: statements(s) ...

  6. Python 潮流周刊第 30 期(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  7. 3 与HTTP相关的各种协议

    目录 1 TCP/IP 2 DNS 3 URI/URL 4 HTTPS 5 代理 1 TCP/IP TCP/IP是网络世界最常用协议,HTTP通常运行在TCP/IP提供的可靠传输基础上 IP 协议是& ...

  8. 解决This application failed to start because cannot find or load the qt platform plugin 'xcb'

    问题描述: 在使用linux系统训练自己的数据集合时,出现了上述问题,首先第一个想法就是先Google,但是在看了一些国内外的文章后依然没有将问题解决 问题原因: 这是由于这几天我在安装cuda.cu ...

  9. MySQL运维9-Mycat分库分表之枚举分片

    一.枚举分片 通过在配置文件中配置可能的枚举值,指定数据分布到不同数据节点上,这种方式就是枚举分片规则,本规则适用于按照省份,性别,状态拆分数据等业务 二.枚举分片案例 枚举分片需求:现有 tb_en ...

  10. Celery周期性任务定义beat

    通过celery beat可以使用周期性任务的定义. https://docs.celeryq.dev/en/stable/userguide/periodic-tasks.html 周期性任务bea ...