jquery
  • ajax
  • spring
  • model-view-controller
  • session
  • 2012-03-20 62 views 3 likes 
    3

    我是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级简单的方法来做到这一点...

    回答

    10
    @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

    相关问题