2013-03-18 64 views
1

我有兩個控制器UserSignInController和PageNavigationController.I想在兩個控制器中保持相同的HttpSession,但我在差異頁面中找到diff會話。我還在控制器中添加了@SessionAttributes(「userDetails」) page.please建議我如何創建這個?維護同一個會話在春天控制器

UserSignInController

@RequestMapping(value="/analyzeinternet1.html", method=RequestMethod.GET) 
    public ModelAndView getSocialMediaAdmin(HttpSession session, Model model) { 
     LOG.info(" session..." + session); 
     ModelAndView mv = null; 

     UserProfile up = (UserProfile) session.getAttribute("userDetails"); 
     if(up == null) { //Checking whether the user is already signed up or not. If not, the user is redirected to login page. 
      LOG.info("No user in session..."); 
      mv = new ModelAndView("redirect:/login.html"); 
     } else { 
      LOG.info("User in session..." + up); 
      mv = new ModelAndView("internetanalyze"); 
      model.addAttribute("userDetails", up); 
      session.setAttribute("userDetails", up); 
      mv.addObject("clientId", up.getUserId()); 
     } 

     LOG.info(mv); 
     return mv; 
    } 

PageNavigationController

@RequestMapping(value="/analyzeinternet.html", method=RequestMethod.GET) 
    public ModelAndView getAnalyzeInternet(HttpSession session, Model model) { 
     LOG.info("-----session..." + session); 
     //LOG.info("-----userprofile..." + userDetails); 
     ModelAndView mv = null; 
     up = (UserProfile) session.getAttribute("userDetails"); 
      LOG.info("User in session..." + up); 
      mv = new ModelAndView("internetanalyze"); 
      //mv.addObject("clientId", up.getUserId()); 
      return mv; 
    } 

兩個會話ID是不同的,我的重定向代碼

<a href="<%=request.getContextPath()%>/analyzeinternet.html"> 
+1

你能告訴我你找到了什麼不同嗎?據我所知,所有的控制器是單身人士,所以沒有問題,會話跨越控制器。 – OQJF 2013-03-18 06:50:17

回答

0

你的意思是你從一個頁面到第二個頁面瀏覽應用程序而第二頁使用的是PageNavigationController,你沒有得到th同一屆會議?你如何檢查它是不是同一個會話?你確定你在會話中設置了userDetails嗎?

同時檢查會話cookie是否在請求中正確傳遞。您可以使用firebug或chrome控制檯來檢查響應中的cookie值和請求頭。

+1

我有打印會話,它得到差異value.yeh我已經在會話 – Biswajit 2013-03-18 07:05:31

+0

中設置用戶配置文件,請調試有關會話cookie以及確認 – 2013-03-18 07:08:42

+0

它在控制檯中給diff會話ID – Biswajit 2013-03-18 07:45:59

0

我找到了答案。此代碼寫在context.xml中

<Context path="/sm" docBase="sm" 
     debug="5" reloadable="true" crossContext="true" cookies="false"> 

其中cookies =「false」,它應該是cookies =「true」。