servlet service,dao层次获取当前用户信息
时间: 2023-05-29 20:04:16 浏览: 214
在servlet中获取当前用户信息,可以通过HttpServletRequest对象的getUserPrincipal()方法获取到当前用户的Principal对象,进而获取用户名等信息。
例如:
```
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Principal principal = request.getUserPrincipal();
if (principal != null) {
String username = principal.getName();
// 根据用户名获取用户信息
User user = userDao.findUserByUsername(username);
// ...
}
}
```
在dao层中获取当前用户信息,则需要传递当前用户的信息,可以通过ThreadLocal实现。在servlet中获取当前用户信息后,将其存储到ThreadLocal中,然后在dao层中获取即可。
例如:
```
// 在servlet中获取当前用户信息后,存储到ThreadLocal中
ThreadLocal<User> currentUser = new ThreadLocal<>();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Principal principal = request.getUserPrincipal();
if (principal != null) {
String username = principal.getName();
// 根据用户名获取用户信息
User user = userDao.findUserByUsername(username);
// 存储到ThreadLocal中
currentUser.set(user);
// ...
}
}
// 在dao层中获取当前用户信息
public void doSomething() {
User user = currentUser.get();
// ...
}
```
阅读全文