如何在使用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";
}
}
好吧,但我怎么设定值时,我在AJAX调用启动?对于在会话中设置属性的AJAX调用有一个“处理程序”方法是适当的,那么其他人只是将它拉回来?这是标准做法吗? – Raevik 2012-03-20 16:51:36
没有区别,只需将通过请求或会话放入您的ajax处理方法即可。 – fmucar 2012-03-20 17:07:16
我用你的第一个建议去使用HttpSession。我接受了AJAX调用并在会话中设置了属性。然后,我在需要它的其他控制器操作中查找该值。 看起来这个属性在会话中持续存在。我打开了一个新标签并再次点击该网站,第一个标签中的设置已经在我的全新标签中设置。 – Raevik 2012-03-20 17:08:09