tomcat中的HttpSession
我们在web应用程序中使用tomcat,在Javax.servlet.http.HttpSession中使用HttpSession进行会话管理 这就是我们在HTTPSession中设置会话Id和几个用户属性的方式tomcat中的HttpSession,tomcat,servlets,webserver,httpsession,Tomcat,Servlets,Webserver,Httpsession,我们在web应用程序中使用tomcat,在Javax.servlet.http.HttpSession中使用HttpSession进行会话管理 这就是我们在HTTPSession中设置会话Id和几个用户属性的方式 HTTPSession session = request.getSession() session.setAttribute("sessionIdNo",sessionIdNo); 这就是我们如何获得会话Id和在上一次HTTP调用中存储的几个用户属性的方法 HTTPSession
HTTPSession session = request.getSession()
session.setAttribute("sessionIdNo",sessionIdNo);
这就是我们如何获得会话Id和在上一次HTTP调用中存储的几个用户属性的方法
HTTPSession session=request.getSession();
session.getAttribute(“sessionIdNo”)
我的问题是
HttpSession意味着HTTP的使用。在浏览器中,JSESSIONID cookie用于引用会话。用户第一次进入时会被分配一个新的会话id(request.getSession().getId())。这将被放入JSESSIONID cookie并发送回浏览器。在后续请求中,浏览器发送cookie,告知Tomcat使用哪个会话 如果您创建了桌面应用程序,可能需要使用不同的机制。但Tomcat在某种程度上是HTTP服务器,因此这是“正常”机制。桌面应用程序仍然可以与Tomcat和基于web的服务交互,但它的UI可能会以JavaSwing等方式呈现 编辑 只需一点代码,您就可以看到会话被创建和销毁:
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebListener
public class DemoSessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent sessionEvent) {
System.out.println("session \"" + sessionEvent.getSession().getId() +
"\" created);
}
}
@Override
public void sessionDestroyed(HttpSessionEvent sessionEvent) {
System.out.println("session \"" + sessionEvent.getSession().getId() +
"\" destroyed);
}
}
如果我使用curl命令运行HTTP调用,它仍然能够在下一次调用中使用相同的HttpSession。怎么可能呢?我的HttpSession如何在下一次调用中使用同一会话。我也没有在cookies中传递任何输入字段。你如何确定这是同一个会话?看起来curl在默认情况下不会打开cookies,所以听起来不太对劲。