如何在使用Spring MVC的会话中保存字符串?

如何在使用Spring MVC的会话中保存字符串?

问题描述:

我是Spring MVC的新手,我试图找出合适的方法去做一些我认为非常简单的事情。如何在使用Spring MVC的会话中保存字符串?

我有一个简单的jQuery AJAX调用:

var dataString = 'existingProject='+ $("#existingProject").val() + '&newProjName=' +  $("#newProjName").val(); 

    $.ajax({ 
     type: "POST", 
     url: "manageProjects.html", 
     data: dataString    
    }); 

我要将此用户设置“项目”为用户的会话。这个AJAX调用来自JS文件中的一个javascript,并连接到我的Spring MVC控制器。

控制器正在获取这些变量,但我不确定如何处理它以使该数据传入会话特定。

我已经使用了这个主题,并且遇到了6个不同的选项(使用自动装配注入Session scoped bean,使用xml config和cgl-nodep库的Bean,HttpServlet属性,@ModelAttribute,@SessionAttribute等等)。我尝试着使用Session范围的bean并定义如下:

@Component 
@Scope("session") 
public class UserSettings 

...但是这个bean没有被锁定到会话中。我在我的控制器中使用了@Autowire,发现它在两次会话之间仍然是相同的实例,所以我明显地搞砸了它。

我只想保存一个吓人的字符串!还有的必须是一个101级简单的方法来做到这一点...

@RequestMapping(value = "/request/mapping") 
public ModelAndView methodName(HttpSession session,...){ 

session.setAttribute("testVariable", "Test Values!!"); 
} 

@RequestMapping("/test") 
@Controller 
public class TestController { 
    @RequestMapping(method = RequestMethod.GET) 
    public String testMestod(HttpServletRequest request) 
    { 
     request.getSession().setAttribute("testVariable", "Test Values!!"); 
     return "testJsp"; 
    } 
} 
+0

好吧,但我怎么设定值时,我在AJAX调用启动?对于在会话中设置属性的AJAX调用有一个“处理程序”方法是适当的,那么其他人只是将它拉回来?这是标准做法吗? – Raevik 2012-03-20 16:51:36

+0

没有区别,只需将通过请求或会话放入您的ajax处理方法即可。 – fmucar 2012-03-20 17:07:16

+0

我用你的第一个建议去使用HttpSession。我接受了AJAX调用并在会话中设置了属性。然后,我在需要它的其他控制器操作中查找该值。 看起来这个属性在会话中持续存在。我打开了一个新标签并再次点击该网站,第一个标签中的设置已经在我的全新标签中设置。 – Raevik 2012-03-20 17:08:09