[英]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.