【发布时间】:2018-08-21 11:44:53
【问题描述】:
我正在尝试为会话 cookie 设置一个属性,并将该属性用于后续请求(在第一个请求之后)。以下是我的代码。这里我使用check 变量来检查代码的功能。对于第一个请求,它应该给我后续请求的“init”和“original”。但是,我将“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();
}
【问题讨论】:
-
你如何调用 servlet?您确定要传递会话 cookie?
-
似乎有些术语混乱。服务器端会话不是“会话 cookie”。
-
@RobbyCornelissen 添加了我的客户端代码
-
您是从浏览器中发送 AJAX 请求吗?还是来自 NodeJS 之类的?如果您有
JSESSIONIDcookie 进入 (docs.oracle.com/javaee/6/api/javax/servlet/http/…),也可能值得检查。 -
@RobbyCornelissen 是的,在浏览器中
标签: java servlets session-cookies