tomcat - tomcat 中的 HttpSession

标签 tomcat servlets webserver httpsession

我们在 Web 应用程序中使用 tomcat,对于 session 管理,我们在 Javax.servlet.http.HttpSession 中使用 HttpSession

这就是我们在 HTTPSession 中设置 session ID 和一些用户属性的方式

HTTPSession session = request.getSession()
session.setAttribute("sessionIdNo",sessionIdNo);

这就是我们获取 session ID 和在之前的 HTTP 调用中存储的一些用户属性的方式。

HTTPSession session = request.getSession(); session.getAttribute("sessionIdNo");

我的问题是

  1. 在浏览器的下一个 HTTP 调用中,我们如何能够获取服务器端的 session 属性,该属性是在 HTTPSession 中的上一个 HTTP 调用中设置的。

    注意:我也没有保存在 cookie 中,我相信它不是从我的浏览器发送的。 它与 JSESSION_ID 有任何联系吗?

  2. 如果是这样,我的第二个问题是,这些 HTTP session 管理如何在桌面应用程序中工作(我的意思是不使用浏览器)? 我的意思是如何利用这里的 JESSION_ID 进行 session 管理。

  3. 如果没有,还有什么办法?

最佳答案

HttpSession 意味着 HTTP 的使用。在您的浏览器中,JSESSIONID cookie 用于引用 session 。用户第一次进入时会被分配一个新的 session ID (request.getSession().getId())。这将被放入 JSESSIONID cookie 中并发送回浏览器。在后续请求中,浏览器会发送 cookie,告诉 Tomcat 使用哪个 session 。

如果您创建了桌面应用程序,您可能需要使用不同的机制。但 Tomcat 在某种程度上是一个 HTTP 服务器,因此这是“正常”机制。桌面应用程序仍然可以与 Tomcat 和基于 Web 的服务交互,但它的 UI 可能会用 Java Swing 等方式呈现。

编辑

您只需使用少量代码即可观看 session 的创建和销毁:

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

关于tomcat - tomcat 中的 HttpSession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37331919/

相关文章:

tomcat - EC2(Amazon) 中的 Linux 不能为 tomcat 使用端口 80

java - Grails:在 Tomcat 7 中获取端口号

go - 我如何在 go lang 中导出变量/属性

python - 永远运行服务器端脚本的方法有哪些?

Apache-Tomcat 7 上的 JAVA_OPTS

maven - 是否可以使 JSF FacesServlet 与 AspectJ 一起工作?

java - 特定资源路径的 Tomcat 域重定向

java - 无法使用 JavaScript 显示 XML 文件?

java - 如何使用该字段的 id 通过 Servlet 读取 JSP 表单中输入字段的值?

apache - 如何在apache2服务器上部署j2ee应用