Springboot +Mybatis+templates 登录验证拦截器

Spring boot +mybatis+templates实现增删改查和登录验证
好东西在下面
登录验证先创建好数据库在这里插入图片描述
在idea 编辑器当中写好相对应的实体类


```java
public class User {
   
    private Integer id;

    private String username;

    private String password;

    public Integer getId() {
   
        return id;
    }

    public void setId(Integer id) {
   
        this.id = id;
    }

    public String getUsername() {
   
        return username;
    }

    public void setUsername(String username) {
   
        this.username = username;
    }

    public String getPassword() {
   
        return password;
    }

    public void setPassword(String password) {
   
        this.password = password;
    }
}

把Usermapper当中需要的方法写入


@Repository
public interface UserMapper {
   
    User getUserById(Integer id);
    User Sel(int id);

    User login(String username,String password);

    int register(User user);
}

在把UserService代码写入

public interface UserService {
   
    public User getUserById(Integer id);
    User Sel(int id);

    User login(String username,String password);

    int register(User user);

}

在写UserServiceImpl代码写入

@Service
public class UserServiceImpl implements UserService {
   
    @Autowired
    private UserMapper userMapper;

    @Override
    public User getUserById(Integer id) {
   
        return userMapper.getUserById(id);
    }
    public User Sel(int id){
   
        return userMapper.Sel(id);
    }

    public User login(String username, String password) {
   
        return userMapper.login(username,password);
    }

    public int register(User user) {
   
        return userMapper.register(user);
    }


}

因为和mybatis相结合,所以写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.demo.mapper.UserMapper">

    <select id="getUserById" parameterType="Integer" resultType="com.example.demo.Entil.User">
        SELECT * FROM user WHERE id = #{
   id}
    </select>
    <select id="Sel" resultType="com.example.demo.Entil.User">
        select * from user where id = #{
   id}
    </select>

    <select id="login" resultType="com.example.demo.Entil.User">
        SELECT * FROM user where username = #{
   param1} and password = #{
   param2}
    </select>

    <insert id="register" parameterType="com.example.demo.Entil.User">
        INSERT INTO user (username, password) VALUES (#{
   username}, #{
   password})
    </insert>

</mapper>

在yml写好映射 格式写对
在这里插入图片描述


Server:
  port: 8080
Spring:
#  resources:
#    static-locations: classpath:/templates/,classpath:/static/img #图片加载方式,不用在启动类加载即可
  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/zhen?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
  servlet:
    multipart:
      max-file-size: 100MB

mybatis:
    mapper-locations: classpath:/mappers/*.xml

thymeleaf:
  enabled: true  #开启thymeleaf视图解析
  encoding: utf-8  #编码
  prefix: classpath:/templates/  #前缀
  cache: false  #是否使用缓存
  mode: HTML  #严格的HTML语法模式
  suffix: .html  #后缀名


还有就是Pom文件中加入依赖

<dependencies>
        <!--分页插件 pagehelper -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.3</version>
        </dependency>

        <!--thymeleaf-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <!--thymeleaf-->
        <!--druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.9</version>
        </dependency>
        <!--druid-->
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--mysql-->
        <!--data-jpa-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <!--data-jpa-->

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

        <!--java与json数据转换-->
        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.2.3</version>
            <classifier>jdk15</classifier>
        </dependency>

        <!--qq邮件发送所需依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>


        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.4</version>
        </dependency>
        <!--Mybatis Spring-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.1</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2.1-b03</version>
            <classifier>javadoc</classifier>
            <type>javadoc</type>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>


        <!--热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
        <!--热部署-->

        <!--下面的依赖,处理警告-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <!--下面的依赖,处理警告-->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- java 与json 数据转换 -->
        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.2.3</version>
            <classifier>jdk15</classifier>
        </dependency>
        <!--        后端注释-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <directory>src/main/java</directory><!--所在的目录-->
                <includes><!--包括目录下的.properties,.xml文件都会扫描到-->
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>

        </resources>
    </build>

写好这些基本的 之后在你的启动类当中,需要写mapper 自动加载
继承WebMvcCoonfigurer
在这里插入图片描述

为了测试写入的mybatis是否可以运行
在UserController 测试代码 打印出想获得的数据

@RestController 
@RequestMapping("/user")
public class UserController {
   
    @Autowired
    private UserService userService;

    @GetMapping("/findId/{id}")
    public User getUser(@PathVariable("id") Integer id){
   
        return userService.getUserById(id);
    }

直接在浏览器查看是否可以
在这里插入图片描述

添加登录验证所需要的拦截器

在这里插入图片描述
在UserInterceptor写入代码

package com.example.demo.intercetor;

import com.example.demo.Entil.User;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@Component
public class UserInterceptor implements HandlerInterceptor {
   
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {
   
        System.out.println("执行到了preHandle方法");
        System.out.println(handler);
        User user = (User) request.getSession().getAttribute("session_user");
        if (user==null){
   
            response.sendRedirect(request.getContextPath()+"/user/toIndex");//拦截后跳转的方法
            System.out.println("已成功拦截并转发跳转");
            return false;
        }
        System.out.println("合格不需要拦截,放行");
        return true;
    }

    /*
     * 处理请求完成后视图渲染之前的处理操作
     * 通过ModelAndView参数改变显示的视图,或发往视图的方法
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
   
        System.out.println("执行了postHandle方法");
    }

    /*
     * 视图渲染之后的操作
     */
    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception {
   
        System.out.println("执行到了afterCompletion方法");
    }
}

在创建Sessionlinterceptor写入拦截代码或者放行代码

package com.example.demo.intercetor;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.ArrayList;
import java.util.List;

@Configuration

public class SessionInterceptor implements WebMvcConfigurer {
   
    /**
     * 自定义拦截器,添加拦截路径和排除拦截路径
     * addPathPatterns():添加需要拦截的路径
     * excludePathPatterns():添加不需要拦截的路径
     */
    //注册拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
   
        List list = new ArrayList();

        list.add("/user/toIndex");
        list.add("/user/loginUser");
        list.add("/user/toRegister");
        list.add("/user/register");
        list.add("/user/toIndexs");
        list.add("/css/**");
        list.add("/images/**");
        list.add("/img/**");

        registry.addInterceptor(new UserInterceptor()).addPathPatterns("/**").excludePathPatterns(list);

    }
    @Override//图片上传
    public void addResourceHandlers(ResourceHandlerRegistry registry){
   
        //imctemp-rainy只是想要映射路径而已,换成a,b,c都可以
        registry.addResourceHandler("/imctemp-rainy/**").addResourceLocations("file:D:/Editor1/shaoqing/src/main/resources/static/img/");
    }
}

最后在UserController写入全部的代码 废话不多说。直接代码

package com.example.demo.Controller;

import com.example.demo.Entil.User;
import com.example.demo.Service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值