在以下情况下如何在 spring MVC 中管理会话?

How to manage session in spring MVC in following case?

@Controller

@SessionAttributes( {"user"})
@RequestMapping("/")
public class Logincontroller {

    @Autowired
    public Loginservice loginservice;

    @RequestMapping(method = RequestMethod.GET)
    public ModelAndView getPage1() {
        ModelAndView view = new ModelAndView("login");
        return view;
    }

    @Autowired(required = true)
    @Qualifier(value="Userprofileservice")
    public Userprofileservice userprofile;
    @RequestMapping(value = "/processLogin", method = RequestMethod.POST)

    public ModelAndView processLogin(HttpServletRequest request,
               HttpServletResponse response) {
          String userName=request.getParameter("username");  
          String password=request.getParameter("password"); 




        if (loginservice.checklogin(userName,password)) {

                     /* ModelAndView success = new ModelAndView("success");*/
            ModelAndView success = new ModelAndView("success");
            List<Users_main>  user = userprofile.userdetails(userName);
              success.addObject("username", userName);
              success.addObject("user",user);
                      return success;
                  } else {

                      ModelAndView error = new ModelAndView("error");
                      return error;
                  }

              } 



    }

这是我的控制器代码。我的想法是在成功登录后保留 success.jsp 页面,即使在刷新后也保持登录状态。但是当我点击“/”时,它将登录。即使在同一会话中刷新后,如何将其重定向到 success.jsp 页面?我尝试在控制器中使用会话属性,但它似乎不起作用

可以直接使用来自javax.servlet api.

HttpSession

要创建新会话,您可以调用

HttpSession session = request.getSession(true);

这将 return 一个新的会话对象。因此,将任何对象或值放入会话中,

session.setAttribute("user", user);

假设您的 user 对象是 return 从服务层编辑的。

现在您可以通过

在整个项目中随时访问用户对象(如果没有发生会话超时)
HttpSession session = request.getSession(false);

这里我们设置布尔值 false 确认如果任何会话在请求的应用程序上下文中仍然存在,那么 return 就可以了。现在通过

访问会话值
User user = (User)session.getAttribute("user");

所以用它修改你的控制器并重试下面的代码,

@RequestMapping(value = "/processLogin", method = RequestMethod.POST)
public ModelAndView processLogin(HttpServletRequest request,HttpServletResponse response) {
    String userName=request.getParameter("username");  
    String password=request.getParameter("password"); 

    if (loginservice.checklogin(userName,password)) {

            /* ModelAndView success = new ModelAndView("success");*/
            HttpSession session = request.getSession(true);

            ModelAndView success = new ModelAndView("success");
            List<Users_main>  user = userprofile.userdetails(userName);
            success.addObject("username", userName);
            success.addObject("user",user);
            session.setAttribute("user",user);
            return success;
        } else {
            ModelAndView error = new ModelAndView("error");
            return error;
        }

}

让我知道状态。