springmvc+hibnate+mysql实现用户的登入和登出日志
时间: 2023-12-03 16:45:03 浏览: 28
实现用户的登录和登出日志需要进行以下步骤:
1. 在数据库中创建用户表和日志表,可以使用MySQL Workbench或其他工具来进行创建。
2. 在Spring MVC中创建登录和登出的Controller,并在Controller中调用相应的Service来进行业务逻辑处理。
3. 在Service中调用Hibernate的DAO层来操作数据库,实现用户的登录和登出功能,并将登录和登出的日志信息保存到日志表中。
4. 在Hibernate的DAO层中,使用Hibernate的API来操作数据库,在DAO层中创建用户和日志的实体类,并且使用Hibernate的注解来映射实体类和数据库表之间的关系。
5. 在日志表中记录用户的登录和登出信息,包括用户ID、用户名、登录时间、登出时间等信息。
6. 在Spring MVC中配置日志拦截器,在用户登录和登出时记录日志信息。
示例代码如下:
User实体类:
```
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
// getters and setters
}
```
Log实体类:
```
@Entity
@Table(name = "log")
public class Log {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "user_id")
private Long userId;
@Column(name = "username")
private String username;
@Column(name = "login_time")
private Date loginTime;
@Column(name = "logout_time")
private Date logoutTime;
// getters and setters
}
```
UserDAO接口:
```
public interface UserDAO {
User getUserByUsernameAndPassword(String username, String password);
}
```
UserDAO实现类:
```
@Repository
public class UserDAOImpl implements UserDAO {
@Autowired
private SessionFactory sessionFactory;
@Override
public User getUserByUsernameAndPassword(String username, String password) {
Session session = sessionFactory.getCurrentSession();
Query<User> query = session.createQuery("from User where username=:username and password=:password", User.class);
query.setParameter("username", username);
query.setParameter("password", password);
return query.uniqueResult();
}
}
```
LogDAO接口:
```
public interface LogDAO {
void saveLog(Log log);
}
```
LogDAO实现类:
```
@Repository
public class LogDAOImpl implements LogDAO {
@Autowired
private SessionFactory sessionFactory;
@Override
public void saveLog(Log log) {
Session session = sessionFactory.getCurrentSession();
session.save(log);
}
}
```
UserService接口:
```
public interface UserService {
User login(String username, String password);
void logout(Long userId);
}
```
UserServiceImpl实现类:
```
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDAO userDAO;
@Autowired
private LogDAO logDAO;
@Override
public User login(String username, String password) {
User user = userDAO.getUserByUsernameAndPassword(username, password);
if (user != null) {
Log log = new Log();
log.setUserId(user.getId());
log.setUsername(user.getUsername());
log.setLoginTime(new Date());
logDAO.saveLog(log);
}
return user;
}
@Override
public void logout(Long userId) {
Log log = new Log();
log.setUserId(userId);
log.setLogoutTime(new Date());
logDAO.saveLog(log);
}
}
```
LoginController:
```
@Controller
public class LoginController {
@Autowired
private UserService userService;
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@RequestParam String username, @RequestParam String password, HttpSession session) {
User user = userService.login(username, password);
if (user != null) {
session.setAttribute("user", user);
return "redirect:/home";
} else {
return "login";
}
}
@RequestMapping(value = "/logout", method = RequestMethod.GET)
public String logout(HttpSession session) {
User user = (User) session.getAttribute("user");
if (user != null) {
userService.logout(user.getId());
session.removeAttribute("user");
}
return "redirect:/";
}
}
```
LogInterceptor:
```
@Component
public class LogInterceptor extends HandlerInterceptorAdapter {
@Autowired
private UserService userService;
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
if (user != null) {
userService.logout(user.getId());
}
}
}
```
在Spring MVC配置文件中配置LogInterceptor:
```
<mvc:interceptors>
<bean class="com.example.interceptor.LogInterceptor"/>
</mvc:interceptors>
```