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