2013-03-18 124 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”。