在session存入的是对象,为什么取出来变成了字符串?
在setUser
方法中把User
对象存入session,在同一个方法中获取user
没问题,但是在getUser
方法中拿到user
,强转就会报错,整了半天没找到原因,哪位大神可以解惑?
项目是前后端分离的,用nginx做代理进行请求跳转,难道有代理的时候session中的值就转成了字符串吗???
我没有在前端操作session,只是在后端存了user,再取出user
@Controller
public class Test {
@GetMapping("/setUser")
@ResponseBody
public User setUser(HttpServletRequest request) {
User user = new User("李逵", 20);
HttpSession session = request.getSession();
session.setAttribute("user", user);
// 在当前方法中拿取user不会报错
User user = (User) session.getAttribute("user");
return user;
}
@GetMapping("/getUser")
public String getUser(HttpServletRequest request) {
HttpSession session = request.getSession();
// 这里强转为User会报错:java.lang.String can not cast to Uesr
User user = (User) session.getAttribute("user");
return "ok";
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
可能有其他地方设置了一个字符串的session
先去掉强转,或者debug进,看一下取到了什么
可以看下是否重写了toString方法