java - servlet容器如何为多个 "first"请求实例化 session ?

标签 java session servlets

很明显,浏览器在渲染 html 页面之前发送了多个请求。假设用户打开一个页面,浏览器发送 3 个请求,这些请求被 servlet Filter 捕获。 :

public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        saveVisitorQueue = new SaveVisitorQueue();
    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        if (req.getSession().getAttrbute("name")!=null) {
            req.getSession().setAttrbute("name", "helloValue" + new Date());            
        }
    }
}

第一个请求“初始化” session 属性,但是其他请求呢?如果用户第一次访问页面,请求不会有任何带有 session ID 的 cookie。并且此 id 仅在处理第一个请求后才会设置。

那么其他发送的请求是否具有相同的 session 和相同的属性?服务器如何为多个“第一个”请求“建立” session ?

最佳答案

通常不会有多个“首次”请求。浏览器需要首先获取它正在显示的页面,然后在解析该页面时,通常会在遇到这些资源时请求该页面引用的资源(图像、样式表、JavaScript 等)(尽管有多种方法可以获取这些资源)。修改)和并行(达到某些特定于浏览器的限制)并且通常在相同的 TCP/IP 连接上(取决于浏览器和服务器)。所以第一个页面请求应该设置session ID,后续请求就会有session cookie。

关于java - servlet容器如何为多个 "first"请求实例化 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33340350/

相关文章:

java - 使用hibernate java mysql保存@Lob时出错

php - PDO参数绑定(bind)导致异常

java - 处理 STOMP SEND 时在 Spring 中获取 Websocket session 数据

Java servlet 和身份验证

java - 用Java读取文件并记住停止处的字节

java - 如何从 Hadoop MR 中的非结构化数据生成 JSON 对象?

asp.net - ASP 到 ASP.NET session 变量

java - 在我的 JSP 中映射 servlet

java - android 中的严格性及其用途是什么

java - : Lcom/google/android/gms/common/internal/zzbq; 解析失败