您现在的位置是:首页 > 正文

springboot拦截请求路径_第六章:如何在SpringBoot项目中使用拦截器

2024-02-01 05:15:11阅读 2

拦截器对使用SpringMvc、Struts的开发人员来说特别熟悉,因为你只要想去做好一个项目必然会用到它。拦截器在我们平时的项目中用处有很多,如:日志记录(我们后续章节会讲到)、用户登录状态拦截、安全拦截等等。而SpringBoot内部集成的是SpringMVC控制框架,所以使用起来跟SpringMVC没有区别,只是在配置上有点不同。废话不多说,我们开始我们本章的内容!

免费专题文章汇总

恒宇少年在博客整理出来了SpringBoot、ApiBoot、SpringCloud的文章汇总【SpringBoot基础教程专题】,【SpringCloud基础教程专题】,【ApiBoot组件使用专题】

本章目标学习使用SpringBoot中是如何配置拦截器,使用拦截器来完成简单的用户登录状态判定。

构建项目

我们创建一个名字叫做Chapter6的SpringBoot项目,添加如下maven依赖:Web、MySQL、JPA、Druid等。复制上一章配置文件application.yml到本章对应目录下,具体项目结构如下图1所示:

图1

我们的application.yml文件内容需要修改添加JSP的支持,另外如果你下载后放到你本地的项目时,需要将数据库的地址以及用户名,密码修改成对应自己的配置信息。添加JSP路径配置支持如下图2所示:

图2

InteiiJ IDEA工具为我们创建的SpringBoot项目是不存在webapp、WEB-INF结构目录的,我们需要自行添加,如下图3所示:

图3

可以看到上述图3我们对应的创建了jsp目录,接下来我们分别创建名字叫做,index.jsp,login.jsp的JSP页面文件,index.jsp内填写“你已成功访问到主页面!”,login.jsp创建一个登录表单,输入一个用户名、密码字段,具体内容如下图4、图5所示:

图4

图5

配置控制器

上述JSP文件已经创建完成,下面我们需要让SpringBoot内置SpringMVC控制器转发到对应的JSP页面,我们创建名叫LoginController的类文件,并且加入登录用户的方法,如下图6所示:

图6

下面我们配置用户从数据库中读取,因为之前的表没有“密码”字段我们下图在之前的表内添加一个密码字段如下图7所示:

图7

表结构已经修改,我们根据表结构创建对应的实体,根据实体类直接创建SpringDataJPA的管理接口,SpringDataJPA的具体讲解我留到下面的章节给大家好好的梳理梳理,本章先使用最简单的部分查询功能。我下面直接贴对应的实体类代码以及JPA代码,如下图8、图9所示:

图8

图9

用户的实体以及JPA配置完成后我们再次打开LoginController,将UserJPA使用SpringBean的形式注入,然后完成简单的登录逻辑,如下图10所示:

图10

上图10可以看到我们使用SpringDataJPA从数据库中查询指定用户,然后再比对密码是否符合,我再次修改LoginController在登录成功的地方,添加将用户写入session中。如下图11所示:

图11

到现在我们还没有编写有关拦截器的相关内容,上述都是地基,我们接下来开始盖楼。

创建拦截器

在创建拦截器之前我们需要添加初始化登录页面的转发配置,我们创建IndexController添加初始化登录、首页页面转发配置,如下图12所示:

图12

完成上述操作后,创建一个名叫做SessionInterceptor的拦截器实体类,实现SpringMVC内部接口HandlerInterceptor,并且添加如果没有session状态直接跳转到/user/login_view地址也就是我们对应的login.jsp页面,拦截器配置如下图13所示:

图13

接下来我们需要将SessionInterceptor拦截器添加到SpringBoot的配置中,让SpringBoot项目有这么一个拦截器存在,我们新创建一个SessionConfiguration,将拦截器的配置以及拦截路径配置好,如下图14所示:

图14

好了,我们的所有工作都已经做好,下面我们来初尝试运行项目,看看有没有什么问题

初尝试运行

我们观察InteiilJ IDEA工具的控制台的日志如下图15所示,证明你的项目启动没有问题,那么我们先来访问首页地址尝试登录地址:127.0.0.1:8080/user/index,我们发现了一个意向不到的结果,如下图15所示:

图15

为什么会出现这个问题呢?我们已经排除了/user/login以及/user/login_view请求地址为什么还会出现这个问题呢?遇到这个问题我们可以去SessionInterceptor内打印request.getRequestURI()看看输出的地址,如下图16所示:

图16

我们发现不仅仅有/user/login_view,还存在一个/error页面,为什么出现这个呢?这时才恍然大悟,我们在pom.xml配置文件中并没有配置JSP的支持,我们打开pom.xml配置文件将jsp以及servlet的依赖添加进去,如下图17所示:

图17

完成依赖添加后,重启项目,再次访问127.0.0.1:8080/user/index,现在显示是没有问题了,我们没有登录直接访问index.jsp,当然会被拦截器拦截,拦截后直接跳转到登录页面(login.jsp),如下图18所示效果:

图18

我们现在输入数据库内存在的用户名:admin,密码:123456的测试用户进行登录,效果如下图19所示:

图19

显示我们已经登录成功,也就是说我们的登录用户消息已经存放到session内,那么我们来访问127.0.0.1:8080/user/index地址进行验证,如下图20所示:

图20

可以看到图20效果,我们可以访问到了index.jsp页面的内容了,我们的拦截器完美的完成的拦截使命。

总结

上述内容是本章的全部讲解内容,本章主要内容讲解SpringBoot项目是如果配置拦截器,并且实现简单的用户登录状态验证拦截实例。

本章代码已经上传到码云:

SpringBoot相关系列文章请访问:目录:SpringBoot学习目录

QueryDSL相关系列文章请访问:QueryDSL通用查询框架学习目录

SpringDataJPA相关系列文章请访问:目录:SpringDataJPA学习目录

SpringBoot相关文章请访问:目录:SpringBoot学习目录,感谢阅读!

欢迎微信扫码加入知识星球,恒宇少年带你走以后的技术道路!!!

知识星球 - 恒宇少年

网站文章

  • 线性求乘法逆元

    乘法逆元的线性求法

    2024-02-01 05:15:03
  • LeetCode15——三数之和(排序+双指针)

    题目描述 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。 注意: 答案中不可以包...

    2024-02-01 05:14:57
  • 使用异步注解调用远程接口Spring Security认证授权不携带Token的问题

    同样项目中如果使用线程池调用远程接口,需要使用DelegatingSecurityContextExecutorService线程池。项目中开启异步注解@EnableAsync。项目中使用异步注解:@Async。

    2024-02-01 05:14:28
  • 腾讯三面面经(前端开发实习生)

    腾讯三面面经(前端开发实习生)我感觉是凉了orz…不管怎么样,菜鸡琳可千万不能气馁啊!!!just do it. 踏实努力学就好了!!总的来说还是很有收获的!流程:腾讯会议视频面(并没有开视频hhh)问题在浏览器输入网址之后有哪些过程,浏览器限制URL长度为多少IE:2083个字符;Firefox:65,536个字符;Safari: 80,000个字符;Opera: 190,...

    2024-02-01 05:14:22
  • 【PTA】5-7 使用同步机制协调线程的执行顺序

    【PTA】5-7 使用同步机制协调线程的执行顺序

    的计算,利用 Java 的同步机制,可以保证线程执行顺序的正确性。下面程序采用多个线程对整数执行。

    2024-02-01 05:14:06
  • ftp作业

    ftp作业

     a) 域的图:b) 你的用户的目录访问权限:c) 你用浏览器或其他软件访问FTP后的结果:

    2024-02-01 05:13:59
  • Linux 常用命令汇总(详细版)

    Linux 常用命令汇总(详细版)

    Linux 的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录“/”,然后再次目录下再创建其他的目录。目录结构:以下是对这些目录的解释:less:可以按键盘上下方向键显示上下内容more...

    2024-02-01 05:13:30
  • mac工具

    mac工具

    iStat Menus 6激活密码Email: 982092332@qq.comSN: GAWAE-FCWQ3-P8NYB-C7GF7-NEDRT-Q5DTB-MFZG6-6NEQC-CRMUD-8MZ2K-66SRB-SU8EW-EDLZ9-TGH3S-8SGA参考文章:1、https://www.jianshu.com/p/1345a10331cb

    2024-02-01 05:13:23
  • AFE4400的使用

    AFE4400的使用

    随着人们越来越重视医疗健康,相对应的产品也随之推出。TI就很好的走在前面,对于生理信号采集方面不仅推出了ADS124x系列和ADS129x系列,也推出了集成了光传感器AFE系列。AFE4400 是一款非常适合于脉冲血氧仪应用的完全集成模拟前端 (AFE)。 此器件包含一个具有集成模数转换器 (ADC) 的低噪声接收器通道、一个 LED 发射部件和针对传感器以及 LED 故障检测的诊断功能。

    2024-02-01 05:13:17
  • 学习计划表(长期)

    一:课程学习 数学:1. 高等数学 2. 线性代数 英语:1. 英语四级 2. 英语六级 政治:1. 思修 2. 毛概 3. 近代史 4.马原 5. 时事 专业:1. 信息技术(计算机基础) 2. 自...

    2024-02-01 05:12:48