springmvc+hibnate+mysql实现用户的登入和登出日志
时间: 2023-12-10 14:37:11 浏览: 58
要实现用户的登录和登出日志,可以按照以下步骤操作:
1. 创建一个 User 类,用于表示用户信息,包含用户名、密码等属性。
2. 使用 SpringMVC 框架创建一个登录页面,用户在该页面输入用户名和密码,点击登录按钮提交表单。
3. 在 SpringMVC 的 Controller 中,使用 Hibernate 框架查询数据库中是否存在该用户,并验证密码是否正确。
4. 如果用户名和密码验证通过,将用户信息存储到 Session 中,表示用户已经登录成功。
5. 在用户登录成功后,将用户的登录信息记录到数据库中,包括登录时间、登录 IP 等信息。
6. 当用户点击退出按钮时,清空 Session 中的用户信息,表示用户已经退出登录。
7. 在用户退出登录时,将用户的退出信息记录到数据库中,包括退出时间、退出 IP 等信息。
下面是一个简单的示例代码,供参考:
User.java:
```
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
// getter and setter
}
```
UserController.java:
```
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(HttpServletRequest request, String username, String password) {
User user = userService.login(username, password);
if (user != null) {
request.getSession().setAttribute("user", user);
userService.logLoginInfo(user.getId(), request.getRemoteAddr());
return "redirect:/home";
} else {
return "login";
}
}
@RequestMapping(value = "/logout", method = RequestMethod.GET)
public String logout(HttpServletRequest request) {
User user = (User) request.getSession().getAttribute("user");
if (user != null) {
request.getSession().removeAttribute("user");
userService.logLogoutInfo(user.getId(), request.getRemoteAddr());
}
return "redirect:/login";
}
}
```
UserService.java:
```
@Service
public class UserService {
@Autowired
private UserDao userDao;
@Autowired
private LoginLogDao loginLogDao;
@Autowired
private LogoutLogDao logoutLogDao;
public User login(String username, String password) {
User user = userDao.findByUsername(username);
if (user != null && user.getPassword().equals(password)) {
return user;
} else {
return null;
}
}
public void logLoginInfo(Long userId, String ip) {
LoginLog loginLog = new LoginLog();
loginLog.setUserId(userId);
loginLog.setLoginTime(new Date());
loginLog.setIp(ip);
loginLogDao.save(loginLog);
}
public void logLogoutInfo(Long userId, String ip) {
LogoutLog logoutLog = new LogoutLog();
logoutLog.setUserId(userId);
logoutLog.setLogoutTime(new Date());
logoutLog.setIp(ip);
logoutLogDao.save(logoutLog);
}
}
```
LoginLog.java:
```
@Entity
@Table(name = "login_log")
public class LoginLog {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long userId;
private Date loginTime;
private String ip;
// getter and setter
}
```
LogoutLog.java:
```
@Entity
@Table(name = "logout_log")
public class LogoutLog {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long userId;
private Date logoutTime;
private String ip;
// getter and setter
}
```
注意:以上代码仅为示例代码,实际应用中还需要进行错误处理、安全验证等操作。