Java servlet容器如何为几个;“第一”;请求?

Java servlet容器如何为几个;“第一”;请求?,java,session,servlets,Java,Session,Servlets,很明显,浏览器在呈现html页面之前会发送几个请求。假设用户打开一个页面,浏览器发送3个请求,该请求被以下内容捕获: 第一个请求“初始化”会话属性,但其他请求呢?如果用户第一次访问页面,则请求没有任何会话id为的Cookie,并且只有在处理第一次请求后才会设置此id 那个么其他发送的请求是否具有相同的会话和相同的属性呢?服务器如何为几个“第一”请求“建立”会话 通常不会有几个“第一”请求。浏览器需要首先获取它显示的页面,然后在解析该页面时,通常在遇到该页面引用的资源(图像、样式表、JavaScr

很明显,浏览器在呈现html页面之前会发送几个请求。假设用户打开一个页面,浏览器发送3个请求,该请求被以下内容捕获:

第一个请求“初始化”会话属性,但其他请求呢?如果用户第一次访问页面,则请求没有任何会话id为的Cookie,并且只有在处理第一次请求后才会设置此id


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

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

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

它在浏览器中如何工作?
第一个请求请求一些html。
服务器返回一些Html和。。。会话ID。

浏览器解析html并执行一些请求(css、js、图像),以便能够正确呈现页面并将会话ID发送回服务器。

它在浏览器中如何工作?
第一个请求请求一些html。
服务器返回一些Html和。。。会话ID。

浏览器解析html并执行一些请求(css、js、图像),以便能够正确呈现页面并将会话ID发送回服务器。

浏览器在呈现html时确实向服务器发送多个请求。 服务器第一次将HTML返回到浏览器,然后浏览器开始渲染。当浏览器看到像或这样的标记时,这意味着他必须发出另一个请求来获取关联的资源,但他不会再次发送整个网页的请求,只发送资源的请求。 关于会话对象,第一次调用request.getSession()时,它将创建一个新会话和一个具有会话id的cookie,前提是客户端支持cookie。下次用户发出请求时,request.getSession()将返回与请求关联的当前会话。因此,您的问题的答案是:是的,其他发送的请求将具有相同的会话和相同的会话属性,直到会话无效或超时。
要了解更多信息,我建议阅读“headfirstservletsandjsp”一书,我觉得这本书非常有帮助,也很有趣。在本文中,您对servlet的工作原理进行了详细的解释。

浏览器在呈现HTML时确实会向服务器发送多个请求。 服务器第一次将HTML返回到浏览器,然后浏览器开始渲染。当浏览器看到像或这样的标记时,这意味着他必须发出另一个请求来获取关联的资源,但他不会再次发送整个网页的请求,只发送资源的请求。 关于会话对象,第一次调用request.getSession()时,它将创建一个新会话和一个具有会话id的cookie,前提是客户端支持cookie。下次用户发出请求时,request.getSession()将返回与请求关联的当前会话。因此,您的问题的答案是:是的,其他发送的请求将具有相同的会话和相同的会话属性,直到会话无效或超时。 要了解更多信息,我建议阅读“headfirstservletsandjsp”一书,我觉得这本书非常有帮助,也很有趣。在这篇文章中,您对servlet的工作原理有了广泛的解释

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