使用 JSESSIONID cookie 的 servlet 中的会话处理未获取会话

穆罕默德·纳迪姆

我读到为了在 servlet 中持久化会话,cookie 会以 JSESSIONID 的名称保存在客户端

我也检查了它,我找到了localhost的 cookie,名称为JSESSIONID,带有一些随机字符串值

因此,我尝试通过在 servlet 中创建 JSESSIONID cookie 来手动创建会话,但是当我尝试获取会话时,它无法正常工作。

这里发生了什么?

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

如果不是,为什么我无法参加会议?

请帮忙。

我用来创建 cookie 和获取会话的代码

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);
}

}
史蒂夫·C

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

一旦你调用:

   HttpSession session = request.getSession(true);

或者

   HttpSession session = request.getSession();

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

HttpSession对象在请求之间维护在服务器内存中,通常由会话 id 查找。如果您自己创建 cookie,服务器将不知道任何关于它或任何关联的 HttpSession。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

防止在复制JSESSIONID cookie时复制会话

来自分类Dev

如何在Servlet中获取会话Cookie名称?

来自分类Dev

使用会话和cookie进行Servlet身份验证

来自分类Dev

如何在WebClient中获取Cookie JSESSIONID

来自分类Dev

使用Gatling工具管理jsessionid cookie

来自分类Dev

如何使用jsoup设置jsessionid cookie?

来自分类Dev

使用Gatling工具管理jsessionid cookie

来自分类Dev

jboss集群会话复制不起作用(多个jsessionid cookie)

来自分类Dev

来自错误会话的 jsessionid 在 JBOSS7.2 的 cookie 中设置

来自分类Dev

使用jQuery获取Servlet会话属性

来自分类Dev

JSESSIONID cookie未存储

来自分类Dev

使用(无)Cookie的会话

来自分类Dev

使用cURL获取当前会话的cookie

来自分类Dev

您如何从Dojo中的XHR请求中提取JSESSIONID cookie?

来自分类Dev

何时将JSESSIONID cookie添加到响应中

来自分类Dev

如何使用ContainerRequestContext从HTTP请求获取JSESSIONID?

来自分类Dev

Tomcat自发设置cookie JSESSIONID

来自分类Dev

使用会话值设置Cookie

来自分类Dev

在django中使用会话或cookie

来自分类Dev

无法使用Tomcat设置Servlet Cookie

来自分类Dev

使用Sails.JS和AngularJS处理会话/ cookie

来自分类Dev

如何使用react js从响应中获取jsessionid?

来自分类Dev

在Pedestal中设置和使用基于cookie的会话

来自分类Dev

使用angular js将Json响应存储在cookie /会话中

来自分类Dev

在Pedestal中设置和使用基于cookie的会话

来自分类Dev

在Servlet中使用有状态会话bean

来自分类Dev

spring-为JSESSIONID cookie配置域

来自分类Dev

Servlet会话

来自分类Dev

是否可以从 cookie 中获取会话 ID?