将弹簧控制器迁移到安静的Web服务控制器

时间:2015-01-06 12:48:08

标签: json spring

我目前在我的网络应用程序中使用spring 3 MVC,我很喜欢使用spring 3 restful(@ResponseBody)功能将所有控制器迁移到安静的Web服务。我正在使用JSON请求和响应。但是我不确定在使用JSON响应时如何进行会话管理,这样我就可以在多个Web请求中获得相同的数据。 请建议所有有利可图的场景

1 个答案:

答案 0 :(得分:1)

如果您需要控制器内的会话,只需将Request作为方法的参数添加,Spring将为您完成工作。 然后,您可以在请求中致电getSession(),然后就可以了。

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

这与响应体无关,它是纯粹的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。 Rest意味着无状态API。更改API并在第二种方法中发送DataOne和DataTwo不是更好吗?