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

image.png

阅读 4.3k
2 个回答

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

新手上路,请多包涵

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏