关于拦截器,大家一定都不陌生,spring boot 中是如何使用拦截器的呢?今天就举个例子,来给大家说明一下,废话不多说,开始撸代码!!!

1、创建一个新的spring boot项目,并引入相应的jar,pom文件如下:

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.quick

quick-intercprot

0.0.1-SNAPSHOT

jar

quick-intercprot

Demo project for Spring Boot

org.springframework.boot

spring-boot-starter-parent

2.0.3.RELEASE

UTF-8

UTF-8

1.8

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-starter-thymeleaf

org.springframework.boot

spring-boot-maven-plugin

2、编写HandlerInterceptor

public class TestInterceptor extends HandlerInterceptorAdapter{

private static final String username="wang";

private static final String pwd="123";

@Override

public boolean preHandle(HttpServletRequest request,

HttpServletResponse response, Object handler) throws Exception {

System.out.println("preHandle start...");

String usernameParam = request.getParameter("username");

String pwdParam = request.getParameter("pwd");

if(!StringUtils.isEmpty(usernameParam)&&!StringUtils.isEmpty(pwdParam)){

if(username.equals(usernameParam)&&pwdParam.equals(pwd)){

System.out.println("TRUE");

return Boolean.TRUE;

}else {

System.out.println("FALSE");

response.sendRedirect(request.getContextPath()+"/index/errorIndex");

return Boolean.FALSE;

}

}else {

return Boolean.TRUE;

}

}

}

我们创建一个名为TestInterceptor的拦截器并继承HandlerInterceptorAdapter,实现HandlerInterceptorAdapter抽象类中的preHandle方法。此处我们模拟一个登陆请求的拦截,当账号密码正确时拦截器返回true并跳转到相应的页面,如果账号密码错误,重定向到一个错误页面。

3、编写拦截器配置

@Configuration

public class InterceptorConfig extends WebMvcConfigurationSupport {

@Override

protected void addInterceptors(InterceptorRegistry registry) {

registry.addInterceptor(new TestInterceptor()).addPathPatterns("/test/**");

super.addInterceptors(registry);

}

}

由于我使用的springboot是2.0.3.RELEASE,2.0以后的版本需要继承WebMvcConfigurationSupport ,如果你使用的是2.0以下的版本请继承WebMvcConfigurerAdapter,此处做了一个请求的拦截,只有/test/**的请求才会被拦截到。

4、编写测试Controller,此处我们需要写三个Controller

此方法为模拟的登陆请求的方法

@RestController

@RequestMapping("/test")

public class TestController {

@RequestMapping("/t")

public String test(String username,String pwd){

return "success";

}

}

此方法主要是为了模拟拦截器是否能够拦截特定的请求路径,故将请求写为/test2/**

@RestController

@RequestMapping("/test2")

public class Test2Controller {

@RequestMapping("/t")

public String test(String param){

return "success";

}

}

此方法主要是为了当账号密码错误时跳转错误页面

@Controller

@RequestMapping("/index")

public class IndexController {

@RequestMapping("/errorIndex")

public String index(){

return "errorIndex";

}

}

5、编写错误页面errorIndex.html

Title

login error,账号或者密码错误

6、启动项目,测试拦截器是否起效

因为密码错误,请求跳转到了错误页面

密码拦截器生效,下面我们测试一下固定请求拦截是否生效,我们请求一下路径http://localhost:8080/test2/t?param=123 效果如下图:

ok拦截器没有拦截/test2/**的请求,实验成功

我们来总结一下

编写HandlerInterceptor继承HandlerInterceptorAdapter实现preHandle方法

编写拦截器配置继承WebMvcConfigurationSupport实现addInterceptors方法

springboot拦截html页面元素,Spring Boot 中如何使用拦截器(十五)相关推荐

  1. springboot 分页查询参数_10. Spring Boot 中的分页查询

    在Spring Boot中使用分页查询主要依赖了org.springframework.data.domain.*包下面的及格分页类的功能.使用分页查询常见有两种方式,一种是直接在程序中写死分页的参数 ...

  2. 如何把网上下载的前端页面在Spring Boot中跑起来(CSS,JavaScript,程序运行等路径设置)

    这个功能非常有用,估计99.99%的java web开发者都干过,本人是初学者,特写这个博客记录下! 方便本人以后查阅,方便以后进行投机取巧 这里使用thymeleaf模板引擎! 在网上下载了一个Bo ...

  3. springboot mysql事物_在Spring Boot中使用数据库事务

    关于数据库访问还有一个核心操作那就是事务的处理了,前面两篇博客小伙伴们已经见识到Spring Boot带给我们的巨大便利了,其实不用猜,我们也知道Spring Boot在数据库事务处理问题上也给我们带 ...

  4. springboot异步注解_Spring Boot 2 :Spring Boot 中的响应式编程和 WebFlux 入门

    [小宅按]Spring 5.0 中发布了重量级组件 Webflux,拉起了响应式编程的规模使用序幕. WebFlux 使用的场景是异步非阻塞的,使用 Webflux 作为系统解决方案,在大多数场景下可 ...

  5. springboot(三):Spring boot中Redis的使用

    转自www.ityouknow.com spring boot对常用的数据库支持外,对nosql 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memc ...

  6. Spring Boot中防表单重复提交以及拦截器登录检测

    目录 理论 演示 源码 理论 在用户登录后,如果按F5刷新会出现表单重复提交的问题,解决这个问题后,如果没有拦截器登录检测,就会造成,任意用户可以登录后台界面,所以要有拦截器登录检测. 相关的逻辑步骤 ...

  7. SpringBoot精通系列-Spring Boot中如何配置Https

    导语    Https作为一个比较安全的协议,现在已经越来越普及了,特别是在完成小程序或者是公众号开发的时候,https基本上都是刚需了.但是一个HTTPS的证书是比较费钱的事情,个人开发者可以通过云 ...

  8. springboot怎么返回404_Spring Boot2 系列教程(十三)Spring Boot 中的全局异常处理

    在 Spring Boot 项目中 ,异常统一处理,可以使用 Spring 中 @ControllerAdvice 来统一处理,也可以自己来定义异常处理方案.Spring Boot 中,对异常的处理有 ...

  9. springboot 读取配置文件_使用 @ConfigurationProperties 在 Spring Boot 中加载配置

    本文地址: 使用 @ConfigurationProperties 在 Spring Boot 中加载配置 使用 Spring Boot 加载配置文件的配置非常便利,我们只需要使用一些注解配置一下就能 ...

最新文章

  1. LINQ TO XML练习
  2. 计算机视觉开源库OpenCV绘制轮廓,并将轮廓排序~
  3. AI基础:一文看懂BERT
  4. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1075:药房管理
  5. Sublime Text 3配置与vim模式(待完整)
  6. windows下文件系统格式介绍
  7. Jquery插件 bootstrap-datepicker 日期拾取器
  8. python win32api键盘_Python win32api.keybd_event模拟键盘输入
  9. cocos2dx android studio 打包总结
  10. 如何修复Win10下的 flashplayer?
  11. Quantum LeaPs 例程之Blinky
  12. 新闻丨5G牌照发布,智链万源携手动物健康与食品安全创新联盟在农业领域先声夺人...
  13. Spatial-Spectral Transformer for Hyperspectral Image Classification_外文翻译
  14. CISCO CDP邻居发现协议
  15. 万维网服务器如何发送文档,服务器配置和管理教学讲义(39页)-原创力文档
  16. b站选择HTML5播放器,b站用什么播放器看片好?选择硬解还是软解?看本地视频首选哪一个?...
  17. 使用脚本自动创建AD中的层次化结构容器及对象
  18. 三星r381刷android wea,三星Gear 2 Neo R381怎么样
  19. mysql sql按小时统计_sqlserver/mysql按天、按小时、按分钟统计连续时间段数据
  20. 记一次计算机课作文,记一次难熬的课作文600字

热门文章

  1. Thinkphp5全新UI手机端威客任务平台源码支持投票任务发布平台源码下载
  2. “跑”进百亿俱乐部的特步,能追上安踏吗?
  3. 第10章第12节:使用iSlide的图示库创建漂亮的图文版面 [PowerPoint精美幻灯片实战教程]
  4. 移动端苹果手机的input框type= number只是唤起数字键盘 不能阻止输入汉字和字母
  5. 北京故宫暴雨中未积水 600年排水系统经受考验
  6. arduino使用 iic协议控制16路pmw板的扩展
  7. 3D引擎 知识 问题
  8. cmd 窗口无法使用 pip 命令
  9. 深圳一名程序员因跳槽违反《竞业协议》,赔偿腾讯 97.6 万元。。
  10. Stapler-1靶场详细教学(7种漏洞利用+5种提权)