`
- 浏览:
14332 次
- 性别:
- 来自:
陕西
-
Servlet lifecycle can be summarized as;
1. Loading and Instantiation
2. Initialization
3. Service client
4. Destroy
1.Load and Instantiation
when a servlet is loaded ?
a. the servlet container is started
web.xml:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
...省略部分内容...
...省略部分内容...
<load-on-startup>1</load-on-startup>
</servlet>
其中<load-on-startup>1</load-on-startup>便是为这个默认Servlet指定了创建时机, 即是说<load-on-startup>元素是用来指定Servlet被加载的次序.这里的内容必须是一个整型数值,且越小越先加载.比如如果设定为数值0,会在web应用程序部署时就加载.(注意, 如果我们把这个元素的内容误设为为负数或未设定任何元素,客户端会在首次请求时加载,这就好比是没有用到</load-on- startup>元素,其实我们在为Servlet创建映射时,一般不会指定</load-on-startup>元素
b. first request comes
when client's request comes, servlet container instantiate a servlet and invoke method init() only once in a servlet cycle.
说明:在第4点, 我们在为运行的Servlet程序配置时,并未用到<load-on-startup>,尽管每个<servlet>元素下都可以有一个<load-on-startup>元素,其实我们也是可以指定这个元素从而指定它所映射的Servlet的映射顺序. 另外,我们还可以在conf/web.xml文件中发现激活器(第5点提到)也用到<load-on-startup>2</load -on-startup>这个元素,且元素内容为2,这就是说,会加载默认的Servlet对象后再加载激活器Servlet.
>>init方法只被调用一次. 但是service方法可能会被调用多次,原因是当客户端第一次请求访问Servlet时,会先创建这个Servlet实例对象并调用init方法,当再次访问时,由于Servlet引擎检测到已创建了Servlet实例对象,这时候,只是把这次调用所封装的新的HttpServletRequest对象和HttpServletResponse对象传递给service方法进行操作注意:当客户端已经在访问这个Servlet时,便说明这个Servlet实例已经加载到服务器端的内存中,而当我们在服务端改变这个Servlet程序时,客户端仍是访问以前的Serlet 原因如下:由于这个Servlet只被加载一次,我们对它的修改,只是硬盘上的修改,而内存中仍是保留的是未改变前的Servlet. 如果要想访问新的Servlet必须重启tomcat服务器,来重新加载这个Servlet.
>>是不是一定要重启tomcat来重载Servelt程序?不是,那如何监视Servlet程序的更新,以重新载入更新的Servlet. 方法一:当我们将一个目录映射为虚拟子目录,比如将D:\86asm目录映射为http://localhost:8080/system/时会在tomcat的安装目录下的web.xml文件中用<Context path="/system" docBase="D:\86asm" />元素,而事实上这个元素还可以有reloadable属性,即是说我们如果把<Context path="/system" docBase="D:\86asm" />改成<Context path="/system" docBase="D:\86asm" reloadable=true />,tomcat将会监视到D:\86asm\WEB-INF\classes和D:\86asm\WEB-INF\lib目录下的 Servlet类是否改变,如果改变会自动重载入那些改变了的类.reloadable属性默认为false,未设这个属性,也即是这个属性为 false 注意,这种监视不会及时发生,可能要我们多刷新几次浏览器(或是等一定时间),才会真正运行改变了的Servlet程序. 另外,这种监视,必然会增加tomcat程序的额外开销,因而会使tomcat工作效率降低,所以,我们只在web开发调试阶段,使用此法.一旦,web 应用程序发步,应取消这个属性. 方法二:在conf目录下有一个tomcat- users.xml文件,我们只需要其中增加这一句<user username="tomcat" password="tomcat" roles="tomcat,role1"/>内容便可以打开tomcat后台管理,其中roles="tomcat,role1",是关键,大致意思是给tomcat用户managet权限. 怎样进入管理,在tomcat主页默认主页点Administrator栏下的Tomact Manager链接,然后输入上面所设的用户名(tomcat)和密码(tomcat)便进入了manager后台. 便可以对相关Servlet程序进行更新.
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
### Servlet生命周期详解 #### 一、引言 在Java Web开发中,Servlet作为一种重要的技术,被广泛应用于构建动态网页和处理客户端请求。了解Servlet的生命周期对于深入理解和掌握Servlet的工作机制至关重要。本文将...
初始化阶段是整个Servlet生命周期的第一个关键步骤,它标志着Servlet的开始。此阶段主要由以下步骤组成: 1. **Servlet容器加载Servlet类**:Servlet容器负责加载Servlet类,并将.Class文件的数据读入内存。这一...
### Servlet 生命周期演示代码详解 #### 一、Servlet 生命周期概述 在深入分析代码之前,我们先来了解一下 Servlet 的生命周期。Servlet 的生命周期主要包括三个阶段:初始化 (`init` 方法)、请求处理 (`service` ...
### SERVLET生命周期与JSP生命周期比较 #### 一、引言 在现代Web开发中,Servlet和JSP是两种非常重要的技术,它们都属于Java EE平台的一部分,主要用于构建动态Web应用程序。这两种技术各有特点,但又紧密相关,...
Servlet 生命周期与工作原理 Servlet 生命周期与工作原理是指在 Servlet 容器中,Servlet 的从创建到销毁的整个过程。这个过程可以分为三个阶段:初始化阶段、响应客户请求阶段和终止阶段。 初始化阶段 在这个...
**Servlet生命周期** Servlet的生命周期可以分为三个主要阶段:初始化、服务和销毁。 1. **初始化阶段**: - 当Servlet首次被请求或者在web应用启动时,容器(如Tomcat)会加载Servlet类,并调用`init()`方法进行...
### Servlet 生命周期详解 #### 一、概述 Servlet 是 Java Web 开发的核心技术之一,用于处理客户端的 HTTP 请求并返回响应。了解 Servlet 的生命周期对于更好地控制和优化 Web 应用程序至关重要。Servlet 的生命...
#### 三、Servlet生命周期详解 ##### 实例化 - **按需创建**:默认情况下,当第一次HTTP请求到达时,容器会创建Servlet的实例。 - **预加载**:通过在`web.xml`中配置`<load-on-startup>`标签,可以在应用启动时...
Servlet生命周期是Java Web开发中一个关键的概念,它描述了Servlet从创建到销毁的整个过程,这个过程由Servlet容器(如Tomcat)进行管理。Servlet生命周期主要分为三个阶段:初始化阶段、运行阶段和销毁阶段。 1. ...
Servlet生命周期和模板设计模式是Java Web开发中的两个关键概念,它们在构建动态Web应用程序时起着至关重要的作用。 首先,让我们深入理解Servlet的生命周期。Servlet是Java编程语言中的一种接口,用于扩展服务器的...
在Servlet生命周期中,init()方法只会被调用一次,service()方法会在每次用户请求时被调用,destroy()方法只会被调用一次,在Servlet生命周期结束时被调用。Servlet生命周期的正确实现是保证Servlet正确运行的关键。
java servlet生命周期 java servlet生命周期
servlet生命周期详细图解,矢量图。 详细的解释请参考本人博客:http://blog.csdn.net/dwyers/article/details/38435949
关于对Servlet声明周期的图例示意!
Servlet生命周期主要包括三个阶段:加载、初始化和销毁。当Web容器启动或者第一次接收到对Servlet的请求时,Servlet会被加载并实例化。然后,调用`init()`方法进行初始化,这个方法可以用来设置Servlet的初始状态...
Java WEB 篇七 Servlet 生命周期