gpt4 book ai didi

java - 使用 JSESSIONID cookie 的 servlet 中的 session 处理未获取 session

转载 作者:行者123 更新时间:2023-11-30 02:30:22 25 4
gpt4 key购买 nike

我读到,要在 servlet 中保留 session ,cookie 会以 JSESSIONID 的名称保存在客户端

我也检查了它,发现了 <的 cookie strong>localhost,名称为JSESSIONID,带有一些随机字符串值

因此,我尝试通过在 servlet 中创建 JSESSIONID cookie 来手动创建 session ,但是当我尝试获取 session 时,它不起作用。

这里发生了什么?

除了 cookie(JSESSIONID) 之外,还有其他东西存储在某个地方以用于 session 创建吗?

如果不是,为什么我无法获得 session ?

请帮忙。

我用来创建 cookie 并获取 session 的代码

package sessionHandling;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet("/sessionhandling")
public class SessionHandling extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletOutputStream out = response.getOutputStream();
out.print("Hello Mr.! How are you?");
HttpSession session = request.getSession(false);
if(session != null){
out.println("You are logged in.");

out.println("session found with "+session.getId());
out.println("session found with "+session.getLastAccessedTime());

}else{
//session = request.getSession(true);
Cookie JSESSIONID = new Cookie("JSESSIONID", "12345");
JSESSIONID.setMaxAge(-1);
response.addCookie(JSESSIONID);
System.out.println("Cookie Created");

out.print("You are not logged in");
}
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}

}

最佳答案

您不负责创建或跟踪 cookie。 servlet 容器会为您处理这件事。

一旦您调用:

   HttpSession session = request.getSession(true);

   HttpSession session = request.getSession();

然后 servlet 容器将开始为您维护 session (并根据需要生成 cookie)。

HttpSession 对象在请求之间维护在服务器内存中,通常通过 session ID 进行查找。如果您自己创建 cookie,服务器将不会知道任何有关它或任何关联的 HttpSession 的信息。

关于java - 使用 JSESSIONID cookie 的 servlet 中的 session 处理未获取 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44428449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com