在session存入的是对象,为什么取出来变成了字符串?

发布于 2022-09-12 22:47:42 字数 1028 浏览 22 评论 0

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";
    }
}

image.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

决绝 2022-09-19 22:47:42

可能有其他地方设置了一个字符串的session
先去掉强转,或者debug进,看一下取到了什么

卸妝后依然美 2022-09-19 22:47:42

可以看下是否重写了toString方法

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文