返回顶部
首页 > 资讯 > 后端开发 > Python >Springboot+Thymeleaf+Jpa实现登录功能(附源码)
  • 830
分享到

Springboot+Thymeleaf+Jpa实现登录功能(附源码)

2024-04-02 19:04:59 830人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录前言具体实现配置文件application.yml的代码Po(实体)层代码(User.java)Dao(数据库操作)层代码(UserDao.java)Service(服务)层代码

前言

最近有学习到关于SpringBoot+Thymeleaf+Jpa的综合运用知识,因此想写一个简单的登录界面来尝试一下,以下将展示具体流程

具体实现

首先要创建一个springboot项目

在这里插入图片描述

添加以下依赖项

在这里插入图片描述

pom.xml代码


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="Http://Maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo1</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-WEB</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>Mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

配置文件application.yml的代码

在mysql://localhost:3306/后更改为自己的数据库名字,另外username和passWord同样更改为自己数据库的用户名和密码


spring:
  thymeleaf:
    mode: html

  datasource:
    url: jdbc:mysql://localhost:3306/demo1?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: root

  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true


Po(实体)层代码(User.java)

建立一个简单的用户类,里面包含id主键(用jpa写po层必须要有主键用@id注解)


@Entity
public class User {
    @Id
    private Integer id;
    private String name;
    private String password;

    public Integer getId() {
        return id;
    }

    public void setId(Integer 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;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

Dao(数据库操作)层代码(UserDao.java)

创建一个接口继承jpa的数据库操作<>里第一个参数,代表要操作的具体哪一个Po层,第二个参数代表这个Po层的主键类型
写了一个方法(也就是JPA最香的地方,可以通过简单的名字对应关系进行sql的查找)通过name和password查找一个用户


public interface UserDao extends JpaRepository<User,Integer> {

    User findByNameAndPassword(String name,String password);
}

Service(服务)层代码

Service层接口(Userservice.java)


public interface UserService {

    User finduser(String name,String password);
}

Service层具体实现(UserServiceimpl.java)


@Service
public class UserServiceImpl implements UserService {
    @Autowired
    UserDao userDao;
    @Override
    public User finduser(String name, String password) {
        return userDao.findByNameAndPassword(name,password);
    }
}

验证码功能

因为要用到了验证码的实现功能,所以采取了一位大佬的验证码生成的操作进行集成
它的工具类 VerifyCode.java以及CaptchaController.java本博客就不贴了,移步大佬博客进行使用即可
参考文章(关于验证码)

Controller(控制)层代码(LoginController.java)


@Controller
public class LoginController {
    @Autowired
    UserService userService;
    @RequestMapping("/")
    public String login()
    {
        return "login";
    }
    @RequestMapping("/dologin")
    public String dologin(User user, HttpSession session, String verifycode, Model model)
    {
        User user1=userService.finduser(user.getName(), user.getPassword());

        String code= (String) session.getAttribute("verifyCode");

        if(user1!=null&&code.equalsIgnoreCase(verifycode))
        {
            model.addAttribute("message","成功");
            return "enter";
        }
        else
        {
            model.addAttribute("message","失败");
            return "enter";
        }
    }
}

Html页面代码

注意三个input里面的name属性,很多初学者(包括我)会好奇Controller是怎么获取网页上输入的具体的值?
实际上就是通过name属性比如说第一个参数user,因为它里面有user.name和user.password属性,因此可以通过在html里进行对name属性的更改来实现数据的寻找,第二个参数verifycode也是一样的道理注意验证码后的input框的name属性是verifycode,第三个属性model也是常用属性,此处是为了在页面上进行具体的消息显示


 public String dologin(User user, HttpSession session, String verifycode, Model model)

登录页面(login.html)


<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
      <fORM action="/dologin">
          <div>
              <span>
                  名字:
              </span>
              <input type="text" name="name" >
          </div>
            <div>
                <span>
                    密码:
                </span>
                <input type="password" name="password" >
            </div>
            <div>
                <span>
                    验证码
                </span>
                <input type="text" name="verifycode">

            </div>
            <div>
                <a href="javascript:void(0);" rel="external nofollow"  title="点击更换验证码">
                    <img th:src="@{getVerifyCode}" onclick="changeCode()" class="verifyCode"/>
                </a>
            </div>
          <div>
          <button type="submit">登录</button>
          </div>
      </form>
      <script src="http://libs.baidu.com/Jquery/2.0.0/jquery.min.js"></script>
  <script>
      function changeCode() {
          const src = "/getVerifyCode?" + new Date().getTime(); //加时间戳,防止浏览器利用缓存
          $('.verifyCode').attr("src", src);
      }
  </script>
</body>
</html>

判断登录是否成功的页面(enter.html)

通过Thymeleaf的表达式,对message进行取值,来反应登录是否成功


model.addAttribute("message","成功");
model.addAttribute("message","失败");

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  <h2 th:text="${message}">
    登录成功
  </h2>
</body>
</html>

最后的项目目录结构

在这里插入图片描述

到此这篇关于Springboot+Thymeleaf+Jpa实现登录功能(附源码)的文章就介绍到这了,更多相关Springboot Thymeleaf Jpa登录内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Springboot+Thymeleaf+Jpa实现登录功能(附源码)

本文链接: https://lsjlt.com/news/125939.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Springboot+Thymeleaf+Jpa实现登录功能(附源码)
    目录前言具体实现配置文件application.yml的代码Po(实体)层代码(User.java)Dao(数据库操作)层代码(UserDao.java)Service(服务)层代码...
    99+
    2024-04-02
  • 怎么在Springboot中使用Thymeleaf和Jpa实现登录
    本篇文章为大家展示了怎么在Springboot中使用Thymeleaf和Jpa实现登录,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先要创建一个springboot项目添加以下依赖项pom.xml...
    99+
    2023-06-15
  • springboot+vue实现登录功能
    本文实例为大家分享了springboot+vue实现登录功能的具体代码,供大家参考,具体内容如下 目录结构 前端端口:8080 后端端口:8900 login.vue <...
    99+
    2024-04-02
  • vue+springboot实现登录功能
    本文实例为大家分享了vue+springboot实现登录功能的具体代码,供大家参考,具体内容如下 1. 登录功能的实现 实现提交表单的代码如下: async submitForm...
    99+
    2024-04-02
  • vue+springboot+shiro+jwt实现登录功能
    目录1.导入依赖2.JWTToken 替换 Shiro 原生 Token3.JWT token 工具类,提供JWT生成、校验、获取token存储的信息4.JWTFilter请求拦截5...
    99+
    2024-04-02
  • springboot+vue如何实现登录功能
    小编给大家分享一下springboot+vue如何实现登录功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!目录结构前端端口:8080后端端口:8900login.vue<template> &nbs...
    99+
    2023-06-15
  • SpringBoot实现文件上传下载实时进度条功能(附源码)
    目录0. 引言1. 思路2. 实操2.1 实现文件上传实时进度条功能2.2 实现文件下载实时进度条功能3. 项目源码4. 总结0. 引言 记得刚入行的时候,做了一个文件上传的功能,因...
    99+
    2022-11-13
    SpringBoot文件上传下载实时进度条 SpringBoot 实时进度条 SpringBoot 进度条
  • SpringBoot JWT实现token登录刷新功能
    目录1. 什么是JWT2. JWT组成部分3. JWT加密方式4.实战5.总结1. 什么是JWT Json web token (JWT) 是为了在网络应用环境间传递声明而执行的一种...
    99+
    2024-04-02
  • springboot配合Thymeleaf完美实现遍历功能
    一. 什么是Thymeleaf Thymeleaf是面向Web和独立环境的现代服务器端Java模板引擎。 Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 - 可...
    99+
    2024-04-02
  • C#实现简易计算器功能(附源码)
    本文实例为大家分享了C#实现简易计算器功能的具体代码,供大家参考,具体内容如下 剖析: 1、先设计界面(按钮、文本框(一个显示算式,一个显示结果))布局 2、单击按钮将其对应内容显示...
    99+
    2024-04-02
  • java实现登录验证码功能
    本文实例为大家分享了java实现登录验证码功能的具体代码,供大家参考,具体内容如下 登录验证码 登录验证是大多数登录系统都会用到的一个功能,它的验证方式也是有很多种,例如登录验证码,...
    99+
    2024-04-02
  • Android Studio连接MySql实现登录注册(附源代码)
    目录一、创建工程二、引入Mysql驱动包三、编写数据库和dao以及JDBC相关代码四、编写页面和Activity相关代码五、运行测试效果本文主要介绍了Android Studio连接...
    99+
    2024-04-02
  • jsp+servlet实现简单登录页面功能(附demo)
    目录实现功能:开发环境:预备知识: 1.登录界面login.jsp:2.登录成功界面hello.jsp:3.登录失败信息回显Login.jsp:思路简述:具体代码Code:...
    99+
    2024-04-02
  • springboot实战权限管理功能图文步骤附含源码
    目录前言功能清单功能介绍菜单管理资源管理角色管理后台用户管理动态菜单控制动态资源控制项目源码地址前言 mall项目的权限管理功能发布啦!权限管理作为后台管理系统的必要功能,mall项...
    99+
    2024-04-02
  • SpringSecurity整合springBoot、redis实现登录互踢功能
    背景 基于我的文章——《SpringSecurity整合springBoot、redis token动态url权限校验》。要实现的功能是要实现一个用户不可以同时在两台设备上登录,有两...
    99+
    2024-04-02
  • SpringBoot+Vue实现简单的登录注册功能
    文章目录 一、前言1.开发环境2.功能3.项目运行截图 二、撸代码1.构建前端项目2.构建后端项目3.前端页面编写4.后端代码编写5.前后端联调 三、小结 一、前言 ...
    99+
    2023-09-20
    vue.js spring boot java mysql
  • Vue登录功能实现
    目录写在前面登录概述登录业务流程登录业务的相关技术点登录—token原理分析登录功能实现登录表单的布局登录表单的数据绑定登录表单的验证规则登录表单的重置登录预验证登录组件配置弹窗提示...
    99+
    2024-04-02
  • Android实现画板、写字板功能(附源码下载)
    前言 本文给大家分享一个使用Android开发写字板功能Dem、简单操作内存中的图像、对图像进行简单的处理、绘制直线、以达到写字板的效果 效果图如下 XML布局代码 &...
    99+
    2022-06-06
    源码下载 写字板 画板 源码 Android
  • 怎么在SpringBoot中利用Shiro实现一个密码登录功能
    怎么在SpringBoot中利用Shiro实现一个密码登录功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。导入依赖(pom.xml) <!--...
    99+
    2023-06-06
  • springboot整合shiro多验证登录功能的实现(账号密码登录和使用手机验证码登录)
    1. 首先新建一个shiroConfig shiro的配置类,代码如下: @Configuration public class SpringShiroConfig { ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作