快点帮我用spring boot做一个好看完整的学生宿舍管理系统登录功能,在同一用户表中实现三个不同角色的登录,登录成功后跳转到对应不同页面
时间: 2024-02-01 14:13:56 浏览: 75
好的,下面是一个简单的示例代码,你可以根据需要进行修改和优化。首先我们需要创建一个Spring Boot项目,然后添加依赖项 `spring-boot-starter-web` 和 `spring-boot-starter-thymeleaf`。在 `application.properties` 中添加数据库配置信息:
```
spring.datasource.url=jdbc:mysql://localhost:3306/dormitory?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
```
接下来我们创建一个 `UserController` 类用于处理用户登录请求和页面跳转:
```java
@Controller
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/")
public String index() {
return "login";
}
@PostMapping("/login")
public String login(@RequestParam String username,
@RequestParam String password,
@RequestParam String role,
HttpSession session) {
User user = userService.login(username, password, role);
if (user != null) {
session.setAttribute("user", user);
if (role.equals("admin")) {
return "redirect:/admin";
} else if (role.equals("teacher")) {
return "redirect:/teacher";
} else if (role.equals("student")) {
return "redirect:/student";
} else {
return "redirect:/";
}
} else {
return "redirect:/";
}
}
@GetMapping("/admin")
public String admin(HttpSession session) {
User user = (User) session.getAttribute("user");
if (user != null && user.getRole().equals("admin")) {
return "admin";
} else {
return "redirect:/";
}
}
@GetMapping("/teacher")
public String teacher(HttpSession session) {
User user = (User) session.getAttribute("user");
if (user != null && user.getRole().equals("teacher")) {
return "teacher";
} else {
return "redirect:/";
}
}
@GetMapping("/student")
public String student(HttpSession session) {
User user = (User) session.getAttribute("user");
if (user != null && user.getRole().equals("student")) {
return "student";
} else {
return "redirect:/";
}
}
}
```
这里我们使用了 `@Autowired` 注解自动注入了一个 `UserService` 对象,用于处理用户登录验证。在 `login` 方法中,我们根据用户输入的用户名、密码和角色调用 `UserService` 的 `login` 方法进行登录验证,并将验证通过的用户信息保存在 HttpSession 中。然后根据用户角色跳转到不同的页面。如果登录失败,则重定向到登录页面。
下面是 `UserService` 类的示例代码:
```java
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public User login(String username, String password, String role) {
User user = userRepository.findByUsernameAndPasswordAndRole(username, password, role);
return user;
}
}
```
这里我们使用了 `@Autowired` 注解自动注入了一个 `UserRepository` 对象,用于处理数据库操作。在 `login` 方法中,我们通过调用 `UserRepository` 的 `findByUsernameAndPasswordAndRole` 方法查询数据库中是否存在对应的用户记录。如果存在,则返回用户信息,否则返回 `null`。
最后我们需要创建一个 Thymeleaf 模板文件 `login.html`,用于显示登录页面:
```html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Dormitory Management System</title>
</head>
<body>
<h1>Login</h1>
<form method="post" action="/login">
<div>
<label>Username:</label>
<input type="text" name="username"/>
</div>
<div>
<label>Password:</label>
<input type="password" name="password"/>
</div>
<div>
<label>Role:</label>
<select name="role">
<option value="admin">Admin</option>
<option value="teacher">Teacher</option>
<option value="student">Student</option>
</select>
</div>
<div>
<button type="submit">Login</button>
</div>
</form>
</body>
</html>
```
在模板文件中,我们使用 Thymeleaf 标签来实现表单提交功能。当用户点击登录按钮时,表单数据将被提交到 `UserController` 的 `login` 方法中处理。
最后,我们还需要创建三个 Thymeleaf 模板文件 `admin.html`、`teacher.html` 和 `student.html`,用于显示不同角色的页面内容。
以上就是一个简单的学生宿舍管理系统登录功能的实现。你可以根据需要进行修改和扩展。
阅读全文