簡體   English   中英

會話僅適用於Spring MVC

[英]Session only works one time spring mvc

當我成功登錄(使用logincontroller)時,我可以看到會話屬性“用戶”值。

例如:

-在logincontroller中-

@RequestMapping(value = "/login", method=RequestMethod.POST)
    public String logIn(HttpServletRequest request, HttpServletResponse response, ModelMap map){
        String email = request.getParameter("email");
        String password = request.getParameter("password");
        System.out.println("Login function is called.");
        List<UsersModule> list = loginModuleService.getLoginDetails(email,password);
        UsersModule foundEntity = new UsersModule();
        HttpSession session = null;
        if(!list.isEmpty() && email != null && !email.equals("") && !email.trim().equals("") && password != null && !password.equals("") && !password.trim().equals("")){
             //ignores multiple results
           foundEntity = list.get(0);
           session = request.getSession();
           session.setAttribute("user", foundEntity.getFamilyName()+", "+foundEntity.getFirstName());
           session.setMaxInactiveInterval(60*60);

           return "home";
        }else{
            System.out.println("Empty? "+Boolean.toString(list.isEmpty()));
            System.out.println("Email "+email);
            System.out.println("Password "+password);
            map.addAttribute("error", "Incorrect Email/Password");
            return "login";
        }

    }

-在home.jsp中-

我可以看到頁面上顯示了“用戶”值。

但是,當我轉到另一個頁面(使用另一個控制器)時,它將重定向到登錄頁面。 我認為這是因為會話屬性“ user”為空。 我設置了一個條件,如果用戶為null,它將返回登錄頁面。

-另一個控制器-

@RequestMapping(value = "/home", method = RequestMethod.GET)
public String Home(HttpServletRequest request,
        HttpServletResponse response, ModelMap map) {
    HttpSession session= request.getSession();
     boolean isLogged= session.getAttribute("user")!=null;

       if(isLogged){
           return "home";
       }else{
           return "/index"; // redirect to login page if session is not established
       }
}

@RequestMapping("/list")
public String list(HttpServletRequest request,
        HttpServletResponse response, ModelMap map) {
    HttpSession session= request.getSession();
     boolean isLogged=session.getAttribute("user")!=null;

       if(isLogged){
            String searchTerm = request.getParameter("searchTerm");
            String paging = request.getParameter("paging");
            int page = 0; //pagination not yet working
            List<UsersModule> list = usersModuleService.getUsersList(searchTerm,
                    page);
                map.addAttribute("usersList", list);
                return "usersmodule/list"; // go to users list page

       }else{

           return "/index"; // redirect to login page if session is not established
       }
}

-list.jsp--

當我轉到這樣的另一個頁面時,我看不到“用戶”值,並且將我重定向到登錄頁面。

我無法解決在轉到另一個網頁時如何保留會話屬性值的問題。 我已經嘗試了所有可以找到的資源,但是仍然一樣。 :(

公共字符串登錄(HtppSession會話,HttpServletRequest請求,HttpServletResponse響應,ModelMap映射){}

將HttpSession定義為登錄方法的變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM