谈谈 web容器请求处理流程

什么是web容器?

Web容器是一种服务程序,给处于其中的应用程序组件提供环境,使其直接跟容器中的环境变量交互,不必关注其它系统问题。主要由应用服务器来实现,如Tomcat、JBoss,Weblogic、WebSphere等。

最常见的tomcat就是这样一个容器。如果web服务器应用得到一个指向某个servlet的请求,此时服务器不是把servlet交给servlet本身,而是交给部署该servlet的容器。要有容器向servlet提供http请求和响应,而且要由容器调用servlet的方法,如doPost或者doGet。

容器启动时的加载顺序

1、启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<context-param>结点。/<context-param>

2、容创建一个ServletContext(servlet上下文),这个 web项目的所有部分都将共享这个上下文。

3、容器将<context-param>转换为键值对,并交给 servletContext。 因为listener, filter 等在初始化时会用到这些上下文中的信息,所以要先加载。 /<context-param>

4、容器创建<listener>中的类实例,创建监听器。/<listener>

5、加载filter和servlet

load- on-startup 元素在web应用启动的时候指定了servlet被加载的顺序,它的值必须是一个整数。

如果它的值是一个负整数或是这个元素不存在,那么容器会在该servlet被调用的时候,加载这个servlet。如果值是正整数或零,容器在配置的时候就加载并初始化这个servlet,容器必须保证值小的先被加载。如果值相等,容器可以自动选择先加载谁。

web.xml 的加载顺序是:context-param -> listener -> filter -> servlet。

谈谈 web容器请求处理流程

web容器的作用

servlet需要由web容器来管理,那么采取这种机制有什么好处呢?

通信支持 :

利用容器提供的方法,你可以简单的实现servlet与web服务器的对话。否则你就要自己建立server搜创可贴,监听端口,创建新的流等等一系列复杂的操作。而容器的存在就帮我们封装这一系列复杂的操作。使我们能够专注于servlet中的业务逻辑的实现。

生命周期管理 :

容器负责servlet的整个生命周期。如何加载类,实例化和初始化servlet,调用servlet方法,并使servlet实例能够被垃圾回收。有了容器,我们就不用花精力去考虑这些资源管理垃圾回收之类的事情。

多线程支持 :

容器会自动为接收的每个servlet请求创建一个新的java线程,servlet运行完之后,容器会自动结束这个线程。

利用容器,可以使用xml部署描述文件来配置安全性,而不必将其硬编码到servlet中。

谈谈 web容器请求处理流程

处理流程

1.浏览器发出请求,被web容器获取到

2.Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。

3.装载并创建该Servlet的一个实例对象,调用Servlet实例对象的init()方法。

4.创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。

5.WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。

谈谈 web容器请求处理流程

好啦今天的文章就到这里了喜欢的话关注一下吧。


分享到:


相關文章: