SpringBoot的web开发扩展

       前言

        使用SpringBoot开发Web项目扩展-2


登录& 拦截
  • 登录实现

    1. 登录需要连接到数据库中我们使用MyBatis框架配合连接MySQL数据库进行连接,需要引入MyBatis+MySQL依赖

      org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.0 mysql mysql-connector-java 5.1.10
    2. 配置文件中编写连接参数

      upload successful

    3. 编写mapper接口和映射文件、server层、Controller层的相关代码

    4. 创建 dao 包,在 dao 包下创建 UserMapper 接口。

      upload successful

    5. 在 resources 目录中创建 mapper 包,在mapper包下创建 UserMapper.xml 映射文件。

            <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE mapper
          PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
      <mapper namespace="com.example.dao.UserMapper">
        <select id="getUserByName" resultType="com.example.pojo.UserCs">
          select * from user where name = #{name}
           </select>
       </mapper>
    6. 在 application.properties 文件中为指定 类的完整类名 取一个别名

      # 为指定包下的所有类的完整类名 取一个别名别名为类名
      mybatis.type-aliases-package=cn.bdqn.springbootcrud.entity
    7. 指定 mapper 映射文件所在的位置

      mybatis.mapper-locations=classpath:mapper/*.xml
    8. 在service包中,创建 UserServiceImpl实现 UserService接口。

      upload successful

    9. 在 controller 包中创建 LoginController,LoginController 的代码如下所示。

      如果发生Bean注入错误说类型不匹配Service和ServiceImpl,虽然是父类接口实现关系,但还是报了这个错误。可以把@Resource换成@Autowired
      upload successful

    10. 禁止调模板引擎的缓存

      有时在修改完页面后,刷新浏览器发现页面没有更新,这是因为模板引擎存在缓存。编辑 application.properties 文件,添加禁用模板引擎缓存的代码。

      spring.thymeleaf.cache=false

    11. 在启动类添加@MapperScan 实现对 dao 层 层 进行扫描

      upload successful

  • 登录拦截器

    用于拦截一些恶意访问信息,避免没有登录的用户之间访问数据信息。框架中的拦截器有很多种。如:HandlerInterceptor、MethodInterceptor、LocaleResolver。

    它们的执行顺序是:LocaleResolver > HandlerInterceptor > MethodInterceptor

    实现一个拦截操作的步骤:HandlerInterceptor

    • 创建LoginHandlerInterceptor继承HandlerInterceptor

    并编写被拦截之后需要执行的方法。preHandle方法

    ![upload successful](/images/pasted-141.png)
    • 创建MyMvcConfig继承WebMvcConfigurer

      (WebMvcConfigurerAdapter在高版本以及被淘汰了,我们可以使用它所继承的类)它的InterceptorRegistry的addInterceptor方法实例化了一个InterceptorRegistration用于添加一个拦截器。并使用addPathPatterns来约定拦截的路径。

      upload successful