关于容器

    技术2026-05-19  6

    因为j2ee实在是太繁杂了,这里我只关注容器、servelt、jsp相关的内容。 当用户通过Url访问我们的网络资源的时候。有很多工作需要进行,比如判断调用哪一个servelt,调用对应servelt的service方法等等, 这些操作就都是容器来实现的。 容器是j2ee的一种组件,包括了web 容器和ejb容器,web容器主要提供了如下的功能:

    对通讯的支持。 有了容器我们就不需要创建Socekt来跟web server进行交互了,能够更加关注于业务代码。生命周期管理,管理servlet的生命周期,加载,创建,初始化,方法调用。多线程的支持,给每个request创建一个线程。JSP的支持,能够把jsp翻译成servelt。

    下面来看一下,容器是怎样处理一个请求的。

    用户通过url访问一个servelt。容器发现这个请求,于是创建两个对象HttpServeltRequest,..Response.根据request中包含的url信息判断调用的servelt。然后为这个请求创建一个servelt线程,把request和response对象做为参数传入。调用servelt的service方法,在根据request中的Method信息调用对应的doGet或者是doPost方法。在doGet或者是doPost方法中往response中写入html然后容器会把HTML信息返回给web server。然后servelt线程终止,回收request,response对象。

    容器要想管理servelt首先必须得知道用户请求的是哪一个servelt。这个主要是通过在部署描述符也就是web.xml文件中定义的。 一个servelt在DD中的样子就是:

    <servelt> <servlet-name>Servelt1</servlet-name> <servlet-class>com.prince.Servelt1</servelt-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Servelt1</servlet-name> <url-pattern>/Servelt1</url-pattern> </servlet-mapping>

    servelt-name        部署描述名称servelt-class        对应的class文件load-on-startup    启动优先级,随服务器启动,越小优先级越高。正数才有效。url-pattern        url访问的名字。用户在客户端使用url-pattern中定义的名称,然后通过servelt-name关联找到对应的servelt。使用DD而不是直接用文件的名称,能够增加灵活性,不需要在服务器中文件结构发生变化的时候通知客户端更改访问的url。还能够屏蔽服务器中的文件结构,更加的安全。

    对于容器管理servelt的声明周期和解释JSP文件的表现放在servelt和JSP的中进行说明。

    最新回复(0)