IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringBoot-8 -> 正文阅读

[Java知识库]SpringBoot-8

springboot实现登录操作

本文主要用到的技术有mybatis-plus以及json数据的封装,以及thymleaf模板引擎的使用。

thymleaf模板引擎配置的时候,controller层的注解只能用@Controller,不能用@RestController,因为thymleaf解析成的是视图不能解析成json格式,本案例用的是创建thymleaf的一种常见的方式,传入一个model,返回的就是静态资源的名称。

案例的资源,详见资源区,谢谢您的支持。

1.登录案例

1.案例参考代码

第一步:创建一个springboot的项目

  • 导入mybatis-plus依赖

  • 导入web项目起步依赖

  • 导入mysql起步依赖

  • 导入thymleaf模板引擎依赖

  • 导入FastJson依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.72</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.2</version>
</dependency>
?
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.12</version>
    <scope>runtime</scope>
</dependency>
 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

第二步:编写配置文件和pom

pom文件的配置:打包文件用

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <includes>
            <include>**/**</include>
        </includes>
        <filtering>false</filtering>
    </resource>
</resources>

配置文件的配置:

  • 数据库的配置

  • thymleaf配置

  • mybatis-plus配置

server:
  port: 8080
  servlet:
    context-path: /user
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/vue?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
    username: root
    password: root
#    属性参考:https://www.cnblogs.com/gqymy/p/9216686.html
  thymeleaf:
    cache: false
    encoding: UTF-8
    mode: HTML5
    enabled: true
    prefix: classpath:/templates/
    suffix: .html
#配置路径
mybatis-plus:
  mapper-locations: classpath:mappers/*.xml

第三步:编写实体类User

public class User implements Serializable {
    private String id;
    private String name;
    private String password;
?
    public String  getId() {
        return id;
    }
?
    public void setId(String  id) {
        this.id = id;
    }
?
    public String getName() {
        return name;
    }
?
    public void setName(String name) {
        this.name = name;
    }
?
    public String getPassword() {
        return password;
    }
?
    public void setPassword(String password) {
        this.password = password;
    }
?
    public User(String  id, String name, String password) {
        this.id = id;
        this.name = name;
        this.password = password;
    }
?
    public User() {
    }
}

第四步:编写返回统一json数据格式的Result工具类

public class Result<T>{
    //返回提示信息
    private String msg;
    //是不是正常的请求
    private boolean success;
    //具体返回的数据
    private T data;
?
    public String getMsg() {
        return msg;
    }
?
    public void setMsg(String msg) {
        this.msg = msg;
    }
?
    public boolean isSuccess() {
        return success;
    }
?
    public void setSuccess(boolean success) {
        this.success = success;
    }
?
    public T getData() {
        return data;
    }
?
    public void setData(T data) {
        this.data = data;
    }
?
    public Result(String msg, boolean success, T data) {
        this.msg = msg;
        this.success = success;
        this.data = data;
    }
?
    public Result() {
    }
}

第五步:编写Dao层

UserDao:

    insertUser和findUserById用于注册

    findUserByPassword用于登录验证

@Mapper
public interface UserDao extends BaseMapper<User> {
//    根据id查询用户(判断用户注册了吗?)
    public User findUserById(String id);
//    添加一个新的用户
    public int insertUser(User user);
//    用于登录,根据id和密码验证
    public User findUserByPassword(User user);
}

UserDao.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">
<!--指定dao文件所在的位置-->
<mapper namespace="com.example.login.mapper.UserDao">
    <!--定义sql语句-->
    <!--
id指定的是dao层指定的方法的名称
resultType=""指定返回的类型,比如User实体指定的类
#{id}是dao层传入的参数
-->
<!--    根据id查询用户-->
    <select id="findUserById" resultType="com.example.login.pojo.User" parameterType="String">
        select id, name, password
        from user
        where id = #{id}
    </select>
<!--插入数据-->
    <insert id="insertUser"  parameterType="com.example.login.pojo.User">
       insert into user values(#{id},#{name},#{password})
    </insert>
<!--    根据密码查询-->
    <select id="findUserByPassword"  parameterType="com.example.login.pojo.User" resultType="com.example.login.pojo.User">
        select id, name, password
        from user
        where password = #{password} and id=#{id}
    </select>
</mapper>
?

第六步:创建service文件

UserService:



public interface UserService {
    public Result register(User user) ;
?
    public Result login(User user) ;
}

UserServiceImpl:

  • 一个方法用于注册

  • 一个方法用于登录

@Service
public class UserServiceImpl implements UserService{
?
    @Resource
    private UserDao userMapper;
?
//    注册
    @Transactional
    @Override
    public Result register(User user) {
        Result result = new Result();
//      默认是空和false
        result.setSuccess(false);
        result.setData(null);
        try {
            User existUser = userMapper.findUserById(user.getId());
            if(existUser != null){
                //如果用户已存在
                result.setMsg("用户名已存在");
?
            }else{
                userMapper.insertUser(user);
                //System.out.println(user.getId());
                result.setMsg("注册成功");
                result.setSuccess(true);
                result.setData(user);
            }
        } catch (Exception e) {
            result.setMsg(e.getMessage());
            e.printStackTrace();
        }
?
        return result;
    }
    /**
     * 登录
     */
    @Override
    public Result login(User user) {
        Result result = new Result();
        result.setSuccess(false);
        result.setData("null");
        try {
//          用户名和密码不是空才能验证登录
            System.out.println(user.getId()+user.getName()+user.getPassword());
            if (user.getId()!=null&&user.getPassword()!=null){
                //          根据id和密码进行查询
                User p_user=userMapper.findUserByPassword(user);
                if (p_user!=null){
                    result.setSuccess(true);
                    result.setMsg("登录成功");
                    result.setData(p_user);
?
                }
//                检测不通过
                else
                {
                    result.setMsg("账号或密码错误!");
?
                }
            }
//            登录失败
            else
            {
                result.setMsg("用户名或密码错误");
            }
//            捕获异常
        } catch (Exception e) {
            result.setMsg(e.getMessage());
            e.printStackTrace();
        }
        return result;
    }

第七步:创建controller

  • 一定不要用@RestController,模板对象上不要用@ResponseBody注解,不然解析出来的是json数据。

  • 模板对象的名称要和thymleaf文件名保持一致

@Controller
public class UserController {
?
    @Resource
    private UserService userService;
//注册
    @PostMapping(value = "/register")
    @ResponseBody
    public String regist(User user){
        return JSON.toJSONString(userService.register(user));
    }
?
//    登录
    @PostMapping(value = "/login")
    @ResponseBody
    public String login(User user){
        return JSON.toJSONString(userService.login(user));
    }
?
//返回登录的首页
    @GetMapping(value = "/index")
    public String Index(Model model){
        return "index";
}
    //返回注册的首页
    @GetMapping(value = "/register")
    public String Login(Model model){
        return "register";
    }
?
}

第八步:配置mybatis-plus的JavaConfig

//配置mybatis-plus
@Configuration
public class MybatisConfig {
    @Bean
    public MybatisPlusInterceptor MPI(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return mybatisPlusInterceptor;
    }
?
}

第九步:编写thymleaf模板

index.html

<!DOCTYPE html>
<!--导入thymeleaf的名称空间-->
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>用户登录</title>
</head>
<body>
<form action="/user/login" method="post">
  账号:<input name="id" type="text"/><br>
  密码:<input name="password" type="password"> <br>
  <input type="submit" value="登录">
</form>
</body>

registerUser.html

<!DOCTYPE html>
<!--导入thymeleaf的名称空间-->
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>用户注册</title>
</head>
<body>
<form action="/user/register" method="post">
    账号:<input name="id" type="text"/><br>
    密码:<input name="password" type="password"> <br>
    <input type="submit" value="注册">
</form>
</body>

第十步:接口测试

注册接口:

  • 成功

  • 失败

登录接口:

  • 成功

  • 失败

模板首页:

模板注册页面:

第十一步:界面演示

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:12:55  更:2022-09-21 00:14:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/10 15:10:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码