当前位置:网站首页>Servlet的生命周期
Servlet的生命周期
2022-07-21 18:16:00 【苏尧木子】
Servlet的生命周期可以分为四步,即:
Servlet类加载—>实例化Servelet—>Servlet提供服务—>销毁Servelet
Servlet类加载,该阶段只执行一次,Servlet容器在被第一次请求时执行,主要操作内容将Servlet类加载到内存。
实例化Servelet,该阶段只执行一次,Servelet容器创建ServletConfig对象,包括初始化Servlet的初始化配置,依次调用init(ServletConfig config)和init()方法
注: 一般情况下,Servlet类加载和实例化Servlet这两个阶段在Servlet被第一次请求时有web容器执行,如果配置元素,情况就要另外讨论
0:
>=0代表web应用启动时就加载病实例化这个Servlet,当没有指定或为一个负数时,则表示容器在被访问时才加载和实例化Servlet提供服务,该阶段客户端请求一次执行一次,具体执行几次取决于客户端的请求次数。当Servlet接到请求时,该容器会正对这个请求创建ServletRequet和ServletResponse对象,前者封装请求,后者封装响应信息,然后调用service(ServletRequest req, ServletResponse res) ,然后调用service(HttpServletRequest req, HttpServletResponse resp),再执行doGet()或者doPost()方法
实际上,无论是post还是get方式的请求,都会在service方法中处理,就不会处理doPost和doGet方法了,所以开发人员没必要重写service方法。销毁Servlet,该阶段执行一次。
测试代码如下:
依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
index.jsp代码
<html>
<body>
<h2>Hello World!</h2>
<a href="lifeservlet">lifeservlet</a>
</body>
</html>
web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>lifeServlet</servlet-name>
<servlet-class>com.xiaolinzi.LiveServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>lifeServlet</servlet-name>
<url-pattern>/lifeservlet</url-pattern>
</servlet-mapping>
</web-app>
LiveServlet类:
package com.xiaolinzi;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class LiveServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doPost()...");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doGet()...");
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("service(HS,HS)...");
super.service(req, resp);
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("service(S,S)...");
super.service(req, res);
}
@Override
public void init() throws ServletException {
System.out.println("init()...");
}
@Override
public void destroy() {
System.out.println("destroy()...");
super.destroy();
}
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("init(ServletConfig)");
super.init(config);
}
}
运行结果:
销毁对象:
边栏推荐
猜你喜欢
EAS BOS custom export (including excel style setting, multi tab export, export file directory verification and backup)
When packaged in the form of build patches, the client cannot load metadata.
The error interface of EAS web page preview is blank
加速企业数据应用创新的核心能力——灵活性
20201127 使用Markdown 画uml图,Graphviz 安装经历吐血整理
EAS Web BIM Start Access prompt 500 Error
响应式布局——视口viewport和常用单位
ConstraintLayout从0到0.n学习
[original] principle of an automatic nine point calibration tool (including part of the source code)
Common properties of flex layout
随机推荐
Error in metadata publishing after EAS version upgrade
simplest-i18n
关于线程 thread (2)线程的使用简介
生物化学复习题V·酶
SwipeMenuRecyclerView 的用法
让盒子居中且距离浏览器左右各100px做动画
File read / write operation (files under the specified file directory)
Sqlserver copies tables in a database to another database
静态属性,super()
Common properties of flex layout
响应式布局——移动web像素
2022年 iuap 春季培训数据中台培训报道
Responsive layout - font common units
class
以构建补丁形式打包时,客户端加载不到元数据。
EAS 审批流相关表
为什么2.toString()会报错
[original] principle of an automatic nine point calibration tool (including part of the source code)
Three implementation methods of Kingdee EAS unpacking deployment
EAS 扩展报表常用函数(自用)