SpringMVC拦截器
时间:2019-09-14
本文章向大家介绍SpringMVC拦截器,主要包括SpringMVC拦截器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、Spring MVC 的拦截器类似于Servlet 开发中的过滤器Filter,用于对Controller进行预处理和后处理。
2、使用SpringMVC拦截器步骤:
1.定义拦截器类
1.1 实现接口 org.springframework.web.servlet.HandlerInterceptor
1.2 继承适配器:org.springframework.web.servlet.handler.HandlerInterceptorAdapter
public class MyInterceptor implements HandlerInterceptor { @Override//前置拦截 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("preHandle"); return true; } @Override//后置拦截 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("postHandle"); } @Override//最终拦截,视图渲染之后 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("after.........."); } }
public class MyInterceptor2 extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("pre2....."); return super.preHandle(request, response, handler); } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("post2----------"); super.postHandle(request, response, handler, modelAndView); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("after2-------"); super.afterCompletion(request, response, handler, ex); } }
2.在applicationContext.xml中配置拦截器
<!--配置拦截器--> <mvc:interceptors> <mvc:interceptor> <!--拦截什么样的路径 /*:表示拦截所有的一级路径,此时如果是二级路径则不经过拦截器 /**:表示拦截任意多级路径 /student/get/list/query --> <mvc:mapping path="/**"/> <!--排除哪个路径,表示这个路径不再经过拦截器--> <mvc:exclude-mapping path="/*/list"/> <!--拦截器的全限定名--> <bean class="com.test._06_interceptor.MyInterceptor"/> </mvc:interceptor> <mvc:interceptor> <!--拦截什么样的路径--> <mvc:mapping path="/**"/> <!--拦截器的全限定名--> <bean class="com.test._06_interceptor.MyInterceptor2"/> </mvc:interceptor> </mvc:interceptors>
3、拦截器方法的执行时机:
1.preHandle:控制器方法执行之前执行,返回结果为true表示放行;如果返回为false,表示拦截(可以做权限拦截,登录检查拦截)。
2.postHandle:控制器方法执行后,视图渲染之前执行(可以加入统一的响应信息)。
3.afterCompletion:视图渲染之后执行(处理Controller异常信息,记录操作日志,清理资源等)。
原文地址:https://www.cnblogs.com/xfdhh/p/11519979.html
- Spring Cloud中如何保证各个微服务之间调用的安全性
- Spring Boot Actuator监控页面报错解决
- Spring Cloud中如何优雅的使用Feign调用接口
- Spring Cloud Eureka 集群高可用
- Spring Cloud Eureka 增加权限认证
- Spring Cloud Eureka 初探
- 房价网是怎么使用分布式作业框架elastic-job
- Spring Cloud Sleuth Zipkin 展示追踪数据
- Spring cloud Zuul Filter 使用小经验
- Spring Cloud Eureka REST 接口
- Spring Cloud Eureka 控制台快速查看Swagger API文档
- Spring Cloud Feign 启动UnsatisfiedDependencyException
- Spring Cloud Zuul结合Smconf配置中心动态进行IP黑名单限制
- 高性能NIO框架Netty入门篇
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- android短信管理器SmsManager实例详解
- Android开发判断一个app应用是否在运行的方法详解
- 收割腾讯等十几个Offer后,揭秘进大厂的秘诀和Android技术面试题汇总!
- Flutter BLoC 异步通信、BlocBuilder的基本使用、BlocProvider的初探
- Android设备获取扫码枪扫描的内容与可能遇到的问题解决
- 3分钟短文:胆儿真肥!Laravel在命令行问用户要数据!
- 实战矿马:数据异常牵出的挖矿木马(.systemd-service.sh)
- leetcode之两个相同字符之间的最长子字符串
- 面试阿里被P8质问:ConcurrentHashMap真的线程安全吗?
- 腾讯云TKE-搭建prometheus监控(二)
- Qt音视频开发41-人脸识别嵌入式
- 浅析Android Studio 3.0 升级各种坑(推荐)
- Android EasyPermissions官方库高效处理权限相关教程
- 关于Android 6.0权限的动态适配详解
- 详解android 人脸检测你一定会遇到的坑