正在将 spring 个控制器迁移到 restful 网络服务控制器

Migrating spring controllers to restful web service controller

我目前在我的 Web 应用程序中使用 spring 3 MVC,我有兴趣使用 spring 3 restful( @ResponseBody)功能。我正在使用 JSON 请求和响应。但我不确定在使用 JSON 响应时如何进行会话管理,以便我可以在多个 Web 请求中使用相同的数据。 请建议所有可能的场景,优缺点

如果您需要控制器内部的会话,只需将 Request 添加为方法的参数,Spring 就会为您完成这项工作。 然后你可以根据请求调用 getSession() 就可以了。

public void myMethodInController(HttpServletRequest request) {
      HttpSession session = request.getSession();
}

这与responsebody无关,它是纯粹的Spring MVC。

编辑:如果你想通过会话在控制器之间共享表单数据,你可以这样做:

public ResourceOne myMethodInControllerOne(HttpServletRequest request, DataOne data) {

      // call some injected service to create a ResourceOne
      ResourceOne response = service.doSomething(data);

      if ( null != response) {
          HttpSession session = request.getSession();
          session.setAttribute("dataOne", data);
      }
      return response;
}


public ResourceTwo myMethodInControllerTwo(HttpServletRequest request, DataTwo data) {

      HttpSession session = request.getSession();
      DataOne priorData = (DataOne) session.getAttribute("dataOne");

      // call some injected service to create a ResourceTwo
      ResourceTwo response = service.doSomething(data, priorData);
      return response;
}

但这并不是真的RestFul。休息意味着无状态 API。更改您的 API 并在第二种方法中发送 DataOne 和 DataTwo 不是更好吗?