下面我将详细讲解“Spring Boot+Thymeleaf+JPA实现登录功能(附源码)”的完整攻略。
一、环境准备
1.安装JDK
首先要确保你的系统上已经安装了JDK。可以通过执行以下命令来检查是否已经安装成功:
java -version
2.安装Maven
Maven是一个项目管理工具,用于构建和管理Java项目。你可以从Maven官网下载安装包并进行安装。完成后,可以执行以下命令来检查是否已经安装成功:
mvn -version
二、创建工程
1.使用IDEA创建项目
使用IDEA的Spring Initializr功能创建一个新的Maven项目,确保选择Web、Thymeleaf和JPA依赖。创建成功后,你会发现项目的目录结构如下:
demo/
├── src/
│ ├── main/
│ │ ├── java/
│ │ ├── resources/
│ │ └── webapp/
│ └── test/
│ └── java/
└── pom.xml
2.添加必要的依赖
在pom.xml文件中添加以下依赖:
<dependencies>
<!-- Spring Boot Web Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- JPA -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- MySQL Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
其中,MySQL Connector和Spring Security是新增的依赖。
三、编写代码
1.创建数据表
在MySQL中创建一个名为users的表,包含id、username和password三个字段。可以使用以下的SQL语句来创建表:
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL
);
2.编写实体类
在src/main/java目录下创建一个package,命名为com.example.demo.entity。在这个包下创建一个名为User的Java类,该类与数据库中的users表对应。代码如下:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
//省略getter和setter方法
//......
}
3.编写DAO层
在src/main/java目录下创建一个package,命名为com.example.demo.repository。在这个包下创建一个名为UserRepository的Java接口,该接口继承了JpaRepository。代码如下:
public interface UserRepository extends JpaRepository<User, Long>{
User findByUsername(String username);
}
4.编写Service层
在src/main/java目录下创建一个package,命名为com.example.demo.service。在这个包下创建一个名为UserService的Java类。代码如下:
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public User findUserByUsername(String username) {
return userRepository.findByUsername(username);
}
}
5.编写控制器
在src/main/java目录下创建一个package,命名为com.example.demo.controller。在这个包下创建一个名为LoginController的Java类。代码如下:
@Controller
public class LoginController {
@Autowired
private UserService userService;
@GetMapping("/login")
public String login() {
return "login";
}
@PostMapping("/login")
public String login(String username, String password, Model model) {
User user = userService.findUserByUsername(username);
if (user == null) {
model.addAttribute("msg", "用户不存在");
return "login";
}
if (!user.getPassword().equals(password)) {
model.addAttribute("msg", "密码错误");
return "login";
}
return "index";
}
}
6.编写视图层
在src/main/resources目录下创建一个名为templates的文件夹,该文件夹存放所有的HTML模板。在templates文件夹下创建一个名为login.html的HTML文件,代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<h2>登录</h2>
<form action="#" method="post">
用户名:<input type="text" name="username">
<br>
密码:<input type="password" name="password">
<br>
<input type="submit" value="登录">
<div style="color: red" th:text="${msg}"></div>
</form>
</body>
</html>
在templates文件夹下创建一个名为index.html的HTML文件,代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>欢迎</title>
</head>
<body>
<h2>欢迎</h2>
</body>
</html>
四、运行项目
1.配置数据库信息
在src/main/resources目录下创建一个名为application.properties的配置文件。在文件中添加以下内容:
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
其中,spring.datasource.url、spring.datasource.username、spring.datasource.password是需要根据自己的数据库情况进行修改的。
2.运行项目
在IDEA中,单击Run按钮启动项目。在浏览器中输入http://localhost:8080/login即可看到登录页面。输入用户名和密码,点击登录按钮,即可跳转到首页。
三、示例说明
1.在UserService中添加注解@Transactional。说明如下:
@Service
@Transactional
public class UserService {
在Service层加上@Transactional注解后,可以使方法在执行时开启一个事务,并且在方法结束后自动执行提交或回滚操作,可以有效地简化编程工作。
2.在LoginController中使用@RequestParam注解获取参数。说明如下:
@PostMapping("/login")
public String login(@RequestParam("username") String username,
@RequestParam("password") String password, Model model) {
//...
}
使用@RequestParam注解来获取参数可以让代码更加简洁,而且可以设置参数的默认值、是否必须传入等属性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Springboot+Thymeleaf+Jpa实现登录功能(附源码) - Python技术站