springbooot登录注册功能
时间: 2023-10-11 16:07:06 浏览: 33
好的,下面是一个简单的 Spring Boot 登录注册功能的实现步骤:
1. 创建一个 Spring Boot 项目,可以使用 Spring Initializr 或者手动配置。同时,需要添加以下依赖:
```
<!-- Spring Boot Starter Web 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Starter JDBC 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- H2 数据库依赖 -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Thymeleaf 模板引擎依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
```
2. 创建一个用户实体类 `User`,包含以下属性:`id`、`username`、`password`。
```
public class User {
private Long id;
private String username;
private String password;
// 省略 getter 和 setter 方法
}
```
3. 创建一个用户 DAO 接口 `UserDao`,定义以下方法:
```
public interface UserDao {
User findByUsername(String username);
void save(User user);
}
```
4. 创建一个用户 DAO 实现类 `UserDaoImpl`,使用 JDBC 操作数据库:
```
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public User findByUsername(String username) {
List<User> userList = jdbcTemplate.query("SELECT * FROM user WHERE username = ?", new Object[]{username}, new BeanPropertyRowMapper<>(User.class));
if (userList.isEmpty()) {
return null;
}
return userList.get(0);
}
@Override
public void save(User user) {
jdbcTemplate.update("INSERT INTO user (username, password) VALUES (?, ?)", user.getUsername(), user.getPassword());
}
}
```
5. 创建一个登录控制器 `LoginController`,处理登录请求:
```
@Controller
public class LoginController {
@Autowired
private UserDao userDao;
@GetMapping("/login")
public String login(Model model) {
model.addAttribute("user", new User());
return "login";
}
@PostMapping("/login")
public String login(@ModelAttribute User user, HttpSession session) {
User loginUser = userDao.findByUsername(user.getUsername());
if (loginUser == null || !loginUser.getPassword().equals(user.getPassword())) {
return "redirect:/login";
}
session.setAttribute("user", loginUser);
return "redirect:/home";
}
}
```
6. 创建一个注册控制器 `RegisterController`,处理注册请求:
```
@Controller
public class RegisterController {
@Autowired
private UserDao userDao;
@GetMapping("/register")
public String register(Model model) {
model.addAttribute("user", new User());
return "register";
}
@PostMapping("/register")
public String register(@ModelAttribute User user) {
userDao.save(user);
return "redirect:/login";
}
}
```
7. 创建一个主页控制器 `HomeController`,处理主页请求:
```
@Controller
public class HomeController {
@GetMapping("/home")
public String home(HttpSession session) {
User user = (User) session.getAttribute("user");
if (user == null) {
return "redirect:/login";
}
return "home";
}
}
```
8. 创建一个模板文件 `login.html`,实现登录页面的 HTML 和 Thymeleaf 代码:
```
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form method="post" th:action="@{/login}">
<p>
<label>Username:</label>
<input type="text" th:field="*{username}">
</p>
<p>
<label>Password:</label>
<input type="password" th:field="*{password}">
</p>
<button type="submit">Login</button>
</form>
</body>
</html>
```
9. 创建一个模板文件 `register.html`,实现注册页面的 HTML 和 Thymeleaf 代码:
```
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Register</title>
</head>
<body>
<h1>Register</h1>
<form method="post" th:action="@{/register}">
<p>
<label>Username:</label>
<input type="text" th:field="*{username}">
</p>
<p>
<label>Password:</label>
<input type="password" th:field="*{password}">
</p>
<button type="submit">Register</button>
</form>
</body>
</html>
```
10. 创建一个模板文件 `home.html`,实现主页的 HTML 和 Thymeleaf 代码:
```
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
<h1>Welcome, <span th:text="${user.username}"></span>!</h1>
<a href="/logout">Logout</a>
</body>
</html>
```
至此,一个简单的登录注册功能就实现了。需要注意的是,这里使用了 H2 数据库作为示例,可以根据实际情况替换为其他数据库。同时,密码应该经过加密处理,这里只是为了演示方便省略了。