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

网友投稿 267 2023-01-15

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

前言

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

具体实现

首先要创建一个springboot项目

添加以下依赖项

pom.xml代码

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.4.5

com.example

demo1

0.0.1-SNAPSHOT

demo1

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter-data-jpa

org.springframework.boot

spring-boot-starter-jdbc

org.springframework.boot

spring-boot-starter-thymeleaf

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-devtools

runtime

true

mysql

mysql-connector-java

runtime

org.springframework.boot

spring-boot-starter-test

test

&lhttp://t;/dependencies>

org.springframework.boot

spring-boot-maven-plugin

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.4.5

com.example

demo1

0.0.1-SNAPSHOT

demo1

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter-data-jpa

org.springframework.boot

spring-boot-starter-jdbc

org.springframework.boot

spring-boot-starter-thymeleaf

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-devtools

runtime

true

mysql

mysql-connector-java

runtime

org.springframework.boot

spring-boot-starter-test

test

&lhttp://t;/dependencies>

org.springframework.boot

spring-boot-maven-plugin

配置文件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 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)

名字:

密码:

验证码

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

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

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

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

登录成功

最后的项目目录结构

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:中通快递快递物流查询单号(中通快递单号查询物流信息)
下一篇:一文彻底搞定Java哈希表和哈希冲突
相关文章

 发表评论

暂时没有评论,来抢沙发吧~