拦截器对使用SpringMvc、Struts的开发人员来讲特别熟悉,由于你只要想去作好一个项目必然会用到它。拦截器在咱们平时的项目中用处有不少,如:日志记录(咱们后续章节会讲到)、用户登陆状态拦截、安全拦截等等。而SpringBoot内部集成的是SpringMVC控制框架,因此使用起来跟SpringMVC没有区别,只是在配置上有点不一样。废话很少说,咱们开始咱们本章的内容!git
学习使用SpringBoot中是如何配置拦截器,使用拦截器来完成简单的用户登陆状态断定。web
咱们建立一个名字叫作Chapter6的SpringBoot项目,添加以下maven依赖:Web、MySQL、JPA、Druid等。复制上一章配置文件application.yml到本章对应目录下,具体项目结构以下图1所示:spring
咱们的application.yml文件内容须要修改添加JSP的支持,另外若是你下载后放到你本地的项目时,须要将数据库的地址以及用户名,密码修改为对应本身的配置信息。添加JSP路径配置支持以下图2所示:数据库
InteiiJ IDEA工具为咱们建立的SpringBoot项目是不存在webapp、WEB-INF结构目录的,咱们须要自行添加,以下图3所示:安全
能够看到上述图3咱们对应的建立了jsp目录,接下来咱们分别建立名字叫作,index.jsp,login.jsp的JSP页面文件,index.jsp内填写“你已成功访问到主页面!”,login.jsp建立一个登陆表单,输入一个用户名、密码字段,具体内容以下图四、图5所示:session
上述JSP文件已经建立完成,下面咱们须要让SpringBoot内置SpringMVC控制器转发到对应的JSP页面,咱们建立名叫LoginController的类文件,而且加入登陆用户的方法,以下图6所示:app
下面咱们配置用户从数据库中读取,由于以前的表没有“密码”字段咱们下图在以前的表内添加一个密码字段以下图7所示:框架
表结构已经修改,咱们根据表结构建立对应的实体,根据实体类直接建立SpringDataJPA的管理接口,SpringDataJPA的具体讲解我留到下面的章节给你们好好的梳理梳理,本章先使用最简单的部分查询功能。我下面直接贴对应的实体类代码以及JPA代码,以下图八、图9所示:webapp
用户的实体以及JPA配置完成后咱们再次打开LoginController,将UserJPA使用SpringBean的形式注入,而后完成简单的登陆逻辑,以下图10所示:jsp
上图10能够看到咱们使用SpringDataJPA从数据库中查询指定用户,而后再比对密码是否符合,我再次修改LoginController在登陆成功的地方,添加将用户写入session中。以下图11所示:
到如今咱们尚未编写有关拦截器的相关内容,上述都是地基,咱们接下来开始盖楼。
在建立拦截器以前咱们须要添加初始化登陆页面的转发配置,咱们建立IndexController添加初始化登陆、首页页面转发配置,以下图12所示:
完成上述操做后,建立一个名叫作SessionInterceptor的拦截器实体类,实现SpringMVC内部接口HandlerInterceptor,而且添加若是没有session状态直接跳转到/user/login_view地址也就是咱们对应的login.jsp页面,拦截器配置以下图13所示:
接下来咱们须要将SessionInterceptor拦截器添加到SpringBoot的配置中,让SpringBoot项目有这么一个拦截器存在,咱们新建立一个SessionConfiguration,将拦截器的配置以及拦截路径配置好,以下图14所示:
好了,咱们的全部工做都已经作好,下面咱们来初尝试运行项目,看看有没有什么问题
咱们观察InteiilJ IDEA工具的控制台的日志以下图15所示,证实你的项目启动没有问题,那么咱们先来访问首页地址尝试登陆地址:127.0.0.1:8080/user/index,咱们发现了一个意向不到的结果,以下图15所示:
为何会出现这个问题呢?咱们已经排除了/user/login以及/user/login_view请求地址为何还会出现这个问题呢?遇到这个问题咱们能够去SessionInterceptor内打印request.getRequestURI()看看输出的地址,以下图16所示:
咱们发现不单单有/user/login_view,还存在一个/error页面,为何出现这个呢?这时才恍然大悟,咱们在pom.xml配置文件中并无配置JSP的支持,咱们打开pom.xml配置文件将jsp以及servlet的依赖添加进去,以下图17所示:
完成依赖添加后,重启项目,再次访问127.0.0.1:8080/user/index,如今显示是没有问题了,咱们没有登陆直接访问index.jsp,固然会被拦截器拦截,拦截后直接跳转到登陆页面(login.jsp),以下图18所示效果:
咱们如今输入数据库内存在的用户名:admin,密码:123456的测试用户进行登陆,效果以下图19所示:
显示咱们已经登陆成功,也就是说咱们的登陆用户消息已经存放到session内,那么咱们来访问127.0.0.1:8080/user/index地址进行验证,以下图20所示:
能够看到图20效果,咱们能够访问到了index.jsp页面的内容了,咱们的拦截器完美的完成的拦截使命。
上述内容是本章的所有讲解内容,本章主要内容讲解SpringBoot项目是若是配置拦截器,而且实现简单的用户登陆状态验证拦截实例。
本章代码已经上传到码云:
SpringBoot配套源码地址:gitee.com/hengboy/spr…
SpringCloud配套源码地址:gitee.com/hengboy/spr…
SpringBoot相关系列文章请访问:目录:SpringBoot学习目录
QueryDSL相关系列文章请访问:QueryDSL通用查询框架学习目录
SpringDataJPA相关系列文章请访问:目录:SpringDataJPA学习目录
SpringBoot相关文章请访问:目录:SpringBoot学习目录,感谢阅读!
欢迎加入QQ技术交流群,共同进步。