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

时间:2018-02-08 05:41:33

标签: java hibernate jsp spring-mvc javabeans

@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页面&amp;即使刷新后仍然保持登录状态。但是当我点击“/”时它会登录。即使在同一会话中刷新后,如何将其重定向到success.jsp页面?我尝试在控制器中使用session属性,但它似乎没有工作

1 个答案:

答案 0 :(得分:0)

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

HttpSession

要创建新会话,您可以致电

HttpSession session = request.getSession(true);

这将返回一个新的会话对象。因此,在会话中放置任何对象或值,

session.setAttribute("user", user);

假设您的user对象是从服务层返回的。

现在您可以通过

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

这里我们设置boolean false确认如果任何会话在请求的应用程序上下文中仍然存在,则返回它。现在通过

访问会话值
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;
        }

}

让我知道状态。