springboot08、拦截器HandlerInterceptor

简介: springboot08、拦截器HandlerInterceptor

1、创建拦截器【com.item.handler】

通过【request】可以获取任何值


package com.item.handler;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
/**
 * 自定义拦截器类
 */
public class MyInterceptor implements HandlerInterceptor {// 实现HandlerInterceptor接口
  /**
  * (1) preHandle方法是进行处理器拦截用的,顾名思义,该方法将在Controller处理之前进行调用。
  */
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
    throws Exception {
  System.out.println(new Date() + "--preHandle:" + request.getRequestURL());
  StringBuffer url = request.getRequestURL();
  if(url.substring(url.lastIndexOf("/")+1,url.length()).equals("GetName")){
    System.out.println("------模糊查询方法------");
    String nickName = request.getParameter("nickName");
    System.out.println("获取的是nickName:"+nickName+",我可以根据获取的值判断是否是sql注入等操作");
  }
  return true;
  }
  /**
  * 这个方法只会在当前这个Interceptor的preHandle方法返回值为true的时候才会执行。
  */
  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
    ModelAndView modelAndView) throws Exception {
  System.out.println(new Date() + "--postHandle:" + request.getRequestURL());
  }
  /**
  * 该方法将在postHandle请求完成之后,也就是DispatcherServlet渲染了视图执行
  */
  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
    throws Exception {
  System.out.println(new Date() + "--afterCompletion:" + request.getRequestURL());
  }
}
在上面的实例中,我们定义了一个拦截器类 MyInterceptor ,通过实现 HandlerInterceptor 接口,该类具备了拦截器的功能。
MyInterceptor 中的方法执行顺序为 preHandle – Controller 方法 – postHandle – afterCompletion ,所以拦截器实际上可以对 Controller 方法执行前后进行拦截监控。
最后还有一个非常重要的注意点, preHandle 需要返回布尔类型的值。 preHandle 返回 true 时,对控制器方法的请求才能到达控制器,继而到达 postHandle 和 afterCompletion 方法;如果 preHandle 返回 false ,后面的方法都不会执行。


2、生效配置【com.item.handler】内创建【WebConfig】

如果想让配置器生效,还需要通过配置类进行相应配置。


package com.item.handler;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
 * Web配置类
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {
  /**
  * 添加Web项目的拦截器
  */
  @Override
  public void addInterceptors(InterceptorRegistry registry) {
  // 对所有访问路径,都通过MyInterceptor类型的拦截器进行拦截
  registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
  }
}


3、拦截器效果:

image.png


4、拦截器作用

主要完成请求参数的解析、将页面表单参数赋给值栈中相应属性、执行功能检验、程序异常调试等工作,例如:登录校验、Token验证等。

目录
打赏
0
0
0
0
114
分享
相关文章
在Springboot HandlerInterceptor中获取GET和POST请求参数
上面RequestWrapper的代码我查阅资料的时候在多篇博文中看到了,但是单有RequestWrapper还不足以完成整个请求,而且我看很多网络上的博客都是只在Interceptor中Wapper,但实际这样是不对的,而且也完全不需要,因为必须要替换掉整个请求链路中的Request才行。这里我们只需要在Filter中将普通的Request替换成我们自己的RequestWrapper
611 0
SpringBoot 中- HandlerInterceptor 中 @Autowired 和 @Resource 为空
SpringBoot 中- HandlerInterceptor 中 @Autowired 和 @Resource 为空
148 0
spring boot 使用 HandlerInterceptor
# 背景 在实际项目中,接口出于安全考虑,都会有验签的计算。目前接触的项目来看基本都是时间戳+干扰因子 然后md5计算的方式。现在学习,写一个简单demo, 其实如果不引入拦截器的话,验签计算全部在controller层实现也是可以的,但每个请求都需要去做一次计算,这种把公共功能的抽离,针对于所有请求前的判断,个人感觉有点切面的意思;   # DEMO 核心点: 1.
1531 0
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
289 1
基于SpringBoot+Vue实现的留守儿童爱心网站设计与实现(计算机毕设项目实战+源码+文档)
博主是一位全网粉丝超过100万的CSDN特邀作者、博客专家,专注于Java、Python、PHP等技术领域。提供SpringBoot、Vue、HTML、Uniapp、PHP、Python、NodeJS、爬虫、数据可视化等技术服务,涵盖免费选题、功能设计、开题报告、论文辅导、答辩PPT等。系统采用SpringBoot后端框架和Vue前端框架,确保高效开发与良好用户体验。所有代码由博主亲自开发,并提供全程录音录屏讲解服务,保障学习效果。欢迎点赞、收藏、关注、评论,获取更多精品案例源码。
85 10
基于SpringBoot+Vue实现的家政服务管理平台设计与实现(计算机毕设项目实战+源码+文档)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
67 8
基于SpringBoot+Vue实现的家乡特色推荐系统设计与实现(源码+文档+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
86 8
基于SpringBoot+Vue实现的大学生就业服务平台设计与实现(系统源码+文档+数据库+部署等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
89 6
基于Java+SpringBoot+Vue实现的车辆充电桩系统设计与实现(系统源码+文档+部署讲解等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
71 6