请使用springbooot实现登录功能,数据库使用MySQL, html 使用 thymeleaf ,当输入的用户名和密码与MySQL数据库的匹配时跳转到home.html,否则提示"用户名或密码错误"并重新跳转到login.html,为我展示所需要的代码
时间: 2024-05-14 22:18:55 浏览: 14
好的,首先我们需要创建一个Spring Boot项目,然后添加相关依赖,包括Spring Web、Thymeleaf和MySQL驱动等。这里提供一个简单的示例:
pom.xml文件:
```xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
```
接下来,我们需要配置数据库连接信息。在application.properties文件中添加以下内容:
```properties
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
```
这里假设我们使用的是本地的MySQL数据库,数据库名为test,用户名为root,密码为123456。
然后,我们需要创建一个User实体类,用于存储用户信息,包括用户名和密码。代码如下:
```java
public class User {
private String username;
private String password;
// 省略getter和setter方法
}
```
接下来,我们需要创建一个UserController类,用于处理用户登录请求。代码如下:
```java
@Controller
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/login")
public String login() {
return "login";
}
@PostMapping("/login")
public String doLogin(User user, Model model) {
if (userService.checkLogin(user)) {
return "home";
} else {
model.addAttribute("message", "用户名或密码错误");
return "login";
}
}
}
```
在上面的代码中,我们使用了@Controller注解将该类声明为控制器,处理用户的登录请求。其中,@GetMapping("/login")表示处理GET请求的/login路径,返回login.html页面;@PostMapping("/login")表示处理POST请求的/login路径,接收用户提交的用户名和密码,进行验证。如果用户名和密码正确,跳转到home.html页面;否则,返回login.html页面,并显示错误信息。
接下来,我们需要创建一个UserService类,用于实现用户登录验证逻辑。代码如下:
```java
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public boolean checkLogin(User user) {
User dbUser = userRepository.findByUsername(user.getUsername());
if (dbUser != null && dbUser.getPassword().equals(user.getPassword())) {
return true;
} else {
return false;
}
}
}
```
在上面的代码中,我们使用了@Service注解将该类声明为服务类,提供用户登录验证逻辑。其中,@Autowired注解表示自动注入UserRepository对象,用于操作数据库;checkLogin方法接收一个User对象作为参数,根据用户名查找数据库中的用户信息,并进行密码比对。如果比对成功,返回true;否则,返回false。
最后,我们需要创建两个HTML页面,login.html和home.html,分别用于登录页面和主页。代码如下:
login.html:
```html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form action="#" th:action="@{/login}" method="post">
<p>
<label>Username:</label>
<input type="text" name="username"/>
</p>
<p>
<label>Password:</label>
<input type="password" name="password"/>
</p>
<p>
<button type="submit">Login</button>
</p>
</form>
<p th:text="${message}"></p>
</body>
</html>
```
在上面的代码中,我们使用Thymeleaf模板引擎实现了页面的渲染。其中,th:action="@{/login}"表示表单提交的路径为/login;th:text="${message}"用于显示错误信息。
home.html:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
<h1>Welcome!</h1>
</body>
</html>
```
至此,我们已经完成了一个简单的登录功能。完整代码如下:
User.java:
```java
public class User {
private String username;
private String password;
// 省略getter和setter方法
}
```
UserRepository.java:
```java
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}
```
UserService.java:
```java
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public boolean checkLogin(User user) {
User dbUser = userRepository.findByUsername(user.getUsername());
if (dbUser != null && dbUser.getPassword().equals(user.getPassword())) {
return true;
} else {
return false;
}
}
}
```
UserController.java:
```java
@Controller
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/login")
public String login() {
return "login";
}
@PostMapping("/login")
public String doLogin(User user, Model model) {
if (userService.checkLogin(user)) {
return "home";
} else {
model.addAttribute("message", "用户名或密码错误");
return "login";
}
}
}
```
application.properties:
```properties
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
```
login.html:
```html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form action="#" th:action="@{/login}" method="post">
<p>
<label>Username:</label>
<input type="text" name="username"/>
</p>
<p>
<label>Password:</label>
<input type="password" name="password"/>
</p>
<p>
<button type="submit">Login</button>
</p>
</form>
<p th:text="${message}"></p>
</body>
</html>
```
home.html:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
<h1>Welcome!</h1>
</body>
</html>
```