我试图通过反复向java代码发出ajax请求来管理用户会话
function sendSessionKeepAliveRequest() {
$.get('${URL}/sessionKeepAlive?nd=' + new Date().getTime());
}
处理此请求的
和java代码(使用的spring框架):
@RequestMapping("/sessionKeepAlive")
public String dummySessionKeepAlive(HttpServletResponse response,
HttpServletRequest request) {
PrintWriter writer = null;
try {
writer = response.getWriter();
} catch (IOException e) {
logger.error(e.getMessage());
}
if (writer != null) {
response.setContentType("application/json");
// Sending an empty JSON response.
Gson gson = new Gson();
writer.write(gson.toJson(""));
}
return null;
}
现在问题是有时会发现 302找到而不是 200 OK ,这会让 jsessionid 更改并且会话超时。我已经在IE和FF上测试过并且两个浏览器都有相同的行为。
代码部署在IBM websphere v7.0
上请帮忙或任何指示。如果需要更多输入或我需要修改我的问题,请随意。
亲切的问候
答案 0 :(得分:0)
您遇到了所谓的重定向:您请求的资源的网址已更改。新网址在http标题'位置'。
中提供您可以使用此网址读出此位置并发出另一个请求,也可以设置响应处理代码以自动遵循重定向。
示例代码:
function sendSessionKeepAliveRequest() {
$.ajax(
url: '${URL}/sessionKeepAlive?nd=' + new Date().getTime()
, statusCode: {
302: function ( jqXHR, textStatus, errorThrown ) {
var url_trg = jqXHR.getResponseHeader('Location');
$.get(url_trg);
}
}
});
<强> 更新 强>
jquery ajax请求应自动处理302状态代码,因此可能存在其他一些问题。它可能是一个跨域问题吗?
答案 1 :(得分:-1)
如果目的仅仅是活动会话,那么不需要使用GSON就可以传递空字符串并添加一个注释
<强> @ResposeBody 强>
这将帮助您获得ajax响应。