我正在尝试将属性设置为会话cookie,并将该属性用于后续请求(在第一次请求之后)。以下是我的代码。在这里,我使用check
变量来检查代码的功能。对于第一个请求,它应该给我" init"和"原创"对于后续请求。但是,我正在" init"作为所有请求的输出。这个问题的原因是什么?
@Override
protected void doGet(HttpServletRequest reqest, HttpServletResponse response) throws IOException {
HttpSession ssn = reqest.getSession();
reqest.getSession(true);
String check="original";
if(ssn.getAttribute("currentQuestion")==null){
check="init";
ssn.setAttribute("currentQuestion","0");
}
response.addHeader("Access-Control-Allow-Origin", "*");
response.getWriter().println(check);
}
我正在使用下面的AJAX客户端发送请求
function submitAnswer() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = this.responseText;
}
};
xhttp.open("GET", "http://example.com:8080/Simple/hello?username=malintha", true);
xhttp.send();
}
答案 0 :(得分:0)
你的代码的逻辑很好。但是,我注意到你正在调用getSession两次。这不是必需的。尝试删除第二个getSession(true)调用。
另外,请确保使用Chrome或Firefox等外部浏览器,而不是eclipse中内置的浏览器。