springmvc+hibnate+mysql实现用户的登入和登出日志页面
时间: 2023-12-03 17:46:03 浏览: 159
springmvc+hibernate 日志管理工具
要实现用户的登录和登出日志页面,需要进行以下步骤:
1. 创建一个Maven项目,引入SpringMVC和Hibernate的依赖。
2. 在MySQL数据库中创建两个表,一个用于存储用户信息,一个用于存储登录和登出日志信息。用户信息表包括用户ID、用户名、密码等字段;登录和登出日志信息表包括日志ID、用户ID、登录时间、登出时间等字段。
3. 在Hibernate配置文件中配置数据源、SessionFactory等信息。
4. 创建User实体类和UserDao接口,定义相关方法,用于对用户信息进行增删改查。
5. 创建Log实体类和LogDao接口,定义相关方法,用于对登录和登出日志信息进行增删改查。
6. 创建UserController,用于处理用户登录和登出请求。在登录和登出时,记录相应的日志信息。
7. 创建LogController,用于显示登录和登出日志信息页面。
8. 编写登录和登出页面,调用UserController中的登录和登出方法。
9. 编写日志信息页面,调用LogController中的方法,显示登录和登出日志信息。
下面是一些示例代码:
User实体类:
```
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String username;
private String password;
// getter和setter方法
}
```
UserDao接口:
```
public interface UserDao {
public void addUser(User user);
public void deleteUser(int id);
public void updateUser(User user);
public User getUserById(int id);
public List<User> getAllUsers();
}
```
Log实体类:
```
@Entity
@Table(name = "log")
public class Log {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private int userId;
private Date loginTime;
private Date logoutTime;
// getter和setter方法
}
```
LogDao接口:
```
public interface LogDao {
public void addLog(Log log);
public void deleteLog(int id);
public void updateLog(Log log);
public Log getLogById(int id);
public List<Log> getAllLogs();
}
```
UserController:
```
@Controller
public class UserController {
@Autowired
private UserDao userDao;
@Autowired
private LogDao logDao;
@RequestMapping(value="/login", method=RequestMethod.POST)
public String login(@RequestParam("username") String username, @RequestParam("password") String password) {
User user = userDao.getUserByUsername(username);
if (user != null && user.getPassword().equals(password)) {
// 登录成功
Log log = new Log();
log.setUserId(user.getId());
log.setLoginTime(new Date());
logDao.addLog(log);
return "redirect:/home";
} else {
// 登录失败
return "redirect:/login";
}
}
@RequestMapping(value="/logout", method=RequestMethod.GET)
public String logout(HttpSession session) {
User user = (User) session.getAttribute("user");
if (user != null) {
Log log = logDao.getLastLogByUserId(user.getId());
if (log != null && log.getLogoutTime() == null) {
log.setLogoutTime(new Date());
logDao.updateLog(log);
}
session.removeAttribute("user");
}
return "redirect:/login";
}
}
```
LogController:
```
@Controller
public class LogController {
@Autowired
private LogDao logDao;
@RequestMapping(value="/logs", method=RequestMethod.GET)
public String showLogs(Model model) {
List<Log> logs = logDao.getAllLogs();
model.addAttribute("logs", logs);
return "logs";
}
}
```
登录页面:
```
<form action="/login" method="post">
<input type="text" name="username" placeholder="Username"/><br/>
<input type="password" name="password" placeholder="Password"/><br/>
<input type="submit" value="Login"/>
</form>
```
登出页面:
```
<a href="/logout">Logout</a>
```
日志信息页面:
```
<table>
<thead>
<tr>
<th>ID</th>
<th>User ID</th>
<th>Login Time</th>
<th>Logout Time</th>
</tr>
</thead>
<tbody>
<c:forEach items="${logs}" var="log">
<tr>
<td>${log.id}</td>
<td>${log.userId}</td>
<td>${log.loginTime}</td>
<td>${log.logoutTime}</td>
</tr>
</c:forEach>
</tbody>
</table>
```
阅读全文