Java Servlet:后续请求的会话cookie为空

时间:2018-03-13 09:25:33

标签: java servlets session-cookies

我正在尝试将属性设置为会话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();
}

1 个答案:

答案 0 :(得分:0)

你的代码的逻辑很好。但是,我注意到你正在调用getSession两次。这不是必需的。尝试删除第二个getSession(true)调用。

另外,请确保使用Chrome或Firefox等外部浏览器,而不是eclipse中内置的浏览器。