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

Posted

技术标签:

【中文标题】如何使用 Spring MVC 在会话中保存字符串?【英文标题】:How do I save a string in the session with Spring MVC? 【发布时间】:2012-04-05 03:42:51 【问题描述】:

我是 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 范围 bean、具有 xml 配置和 cgl-nodep 库的 bean、HttpServlet 属性、@ModelAttribute、@SessionAttribute 等) .我尝试使用 Session 范围的 bean 并定义了以下内容:

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

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

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

【问题讨论】:

【参考方案1】:
@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 调用设置会话中的属性的“处理程序”方法是否合适,然后其他所有人都将其拉回?这是标准做法吗? 没区别,只是把pass request或者session放到你的ajax处理方法中。 我接受了您的第一个建议并使用了 HttpSession。我接受了 AJAX 调用并在会话中设置了属性。然后我在其他需要它的控制器操作中查找该值。看起来该属性在会话中持续存在。我打开了一个新标签并再次访问该网站,第一个标签的设置已经在我的全新标签中设置。 你到底想做什么。如果您在会话中放置一些变量,则只有该会话能够访问它,而不是每个人。 这就是我的意图。我希望此设置对单个用户/选项卡/窗口“坚持”,只要他们留在页面上或直到他们手动更改它。我看到的是,当我从第一个选项卡设置属性时,我的第二个选项卡可以“刷新”他们的页面并查看它们的状态变化以反映第一个选项卡的作用。

以上是关于如何使用 Spring MVC 在会话中保存字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring MVC 中存储会话

如何在 Spring MVC-Spring Security 应用程序中处理 GWT RPC 调用的会话过期异常

如何使用 C# 在 ASP.NET Core 3.1 MVC 中使用会话变量

在 Spring MVC 中设置会话超时

如何使用 Spring MVC 和 Spring Security 更新有关授权用户的信息并将其保存在数据库中

如何在 Spring-mvc 中使用 Session 属性