
Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他>
大多数程序员都知道Servlet的生命周期,简单的概括这就分为四步:servlet类加载--->实例化--->服务--->销毁。对这个过程只是肤浅了解下,对于servlet何时被销毁,还是不太情楚。下面我们描述一下Tomcat与Servlet是如何工作的,首先看下面的时序图
1、Web Client 向Servlet容器(Tomcat)发出>
2、Servlet容器接收Web Client的请求
3、Servlet容器创建一个>
4、Servlet容器创建一个>
5、Servlet容器调用>
传给 >
6、>
7、>
8、Servlet容器把>
对于Servlet容器(Tomcat)与>
Servlet的框架是由两个Java包组成的:javaxservlet与javaxservlet>
在Servlet接口中定义了5个方法,
其中3个方法代表了Servlet的生命周期:
1、init方法:负责初始化Servlet对象。
2、service方法:负责响应客户的请求。
3、destroy方法:当Servlet对象退出生命周期时,负责释放占用的资源。
一、创建Servlet对象的时机
1、Servlet容器启动时:读取webxml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,同时将ServletConfig对象作为参数来调用Servlet对象的init方法。
2、在Servlet容器启动后:客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据客户的请求创建>
对象的service方法。
3、Servlet的类文件被更新后,重新创建Servlet
Servlet容器在启动时自动创建Servlet,这是由在webxml文件中为Servlet设置的<load-on-startup>属性决定
的。从中我们也能看到同一个类型的Servlet对象在Servlet容器中以单例的形式存在。
二、销毁Servlet对象的时机
1、Servlet容器停止或者重新启动:Servlet容器调用Servlet对象的destroy方法来释放资源。以上所讲的就是Servlet对象的生命周期。那么Servlet容器如何知道创建哪一个Servlet对象?
Servlet对象如何配置?实际上这些信息是通过读取webxml配置文件来实现的。
我们来看一下webxml文件中的Servlet对象的配置节信息
-------------------------------------------
<servlet>
<servlet-name>action<servlet-name>
<servlet-class>orgapachestrutsactionActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-configxml</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>do</url-pattern>
</servlet-mapping>
--------------------------------------------
下面对上面的配置节信息进行解析
servlet-name:Servlet对象的名称
servlet-class:创建Servlet对象所要调用的类
param-name:参数名称
param-value:参数值
load-on-startup:Servlet容器启动时加载Servlet对象的顺序
servlet-mapping/servlet-name:要与servlet中的servlet-name配置节内容对应
url-pattern:客户访问的Servlet的相对URL路径
当Servlet容器启动的时候读取<servlet>配置节信息,根据<servlet-class>配置节信息创建Servlet对象,同时根据<init-param>配置节信息创建>
为了验证下,我新建了一个web app工程,新建一个Servlet,如下:
Java代码 收藏代码
package comtdtservlet;
import javaioIOException;
import javaioPrintWriter;
import javaxservletServletException;
import javaxservlet>
import javaxservlet>
import javaxservlet>
public class TestServlet extends >
public void doGet(>
throws ServletException, IOException {
thisdoPost(request, response);
}
public void doPost(>
throws ServletException, IOException {
responsesetContentType("text/html");
PrintWriter out = responsegetWriter();
outprintln("Hello,this is a test");
outflush();
outclose();
}
public void destroy() {
Systemerrprintln(getServletName()+"生命周期结束");;
}
public void init() throws ServletException {
Systemoutprintln(getServletName()+"执行初始化");
}
}
以上就是关于httpget请求怎么选定serverlet全部的内容,包括:httpget请求怎么选定serverlet、javabean、jsp、serverlet是什么关系、如何serverlet生命周期测试代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)