servlet有良好的生存期的定义,包括如何加载、实例化、初始化、处理客户端请求以及如何被移除。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。那么Servlet是何时被加载和实例化的呢?很多人认为是在容器启动的时候。这个观点是在一定条件下才成立的。我们来看一个例子:
//TestServlet.java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet extends javax.servlet.http.HttpServlet {
static final long serialVersionUID = 1L;
public TestServlet() {
super();
System.out.println("实例化Servlet.");
}
public void destroy() {
// TODO Auto-generated method stub
super.destroy();
System.out.println("销毁Servlet.");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("正在处理请求.");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
public void init() throws ServletException {
// TODO Auto-generated method stub
super.init();
System.out.println("初始化Servlet.");
}
}
<!--web.xml-->
<servlet>
<display-name>TestServlet</display-name>
<servlet-name>TestServlet</servlet-name>
<servlet-class>TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/TestServlet</url-pattern>
</servlet-mapping>
我们启动Tomcat服务器,在控制台中我们并没有看到“实例化Servlet.初始化Servlet.”的打印信息;我们在浏览器中输入此Servlet的URL来请求此Servlet,控制台中打印出“实例化Servlet.初始化Servlet.正在处理请求.”的信息。这说明,Servlet的加载和实例化是发生在第一次请求Servlet之前发生的。接下来我们在web.xml文件中的Servlet下面加上“1”这一句配置,重复上面的过程。发现在启动Tomcat服务器时就看到了“实例化Servlet.初始化Servlet.”的打印信息;请求的时候只打印了“正在处理请求”信息。这说明,Servlet的加载和实例化是发生在容器启动的时候发生的。当我们把配置改为“-1”,结果和第一种相同。
如此说来,什么时候加载和实例化Servlet是由“1”配置来决定的。同意初始化发生在实例化Servlet之后。
分享到:
相关推荐
在服务器启动时或首次接收到请求时,Servlet会被加载和初始化。然后,每当有请求到达,Servlet会处理该请求并返回响应。最后,当服务器关闭或者Servlet不再需要时,Servlet会被销毁。 2. **Servlet配置**:在`web....
初始化阶段,Servlet容器(如Tomcat)加载Servlet类并调用`init()`方法;服务阶段,每次接收到请求时,都会调用`service()`方法来处理;销毁阶段,当Servlet不再使用或服务器关闭时,调用`destroy()`方法进行资源...
Servlet生命周期包括加载、初始化、服务、销毁四个阶段,通过Servlet容器(如Tomcat)管理。在Web应用中,Servlet通常用于处理HTTP请求,如登录验证、数据处理、业务逻辑等。 EasyUI是一个基于jQuery的前端UI框架,...
- **Servlet生命周期**:Servlet的生命周期包括加载、初始化、服务和销毁四个阶段。在初始化阶段,Servlet会根据配置文件(如web.xml)进行初始化,创建数据库连接池等资源。 - **HTTP请求和响应**:Servlet通过`...
当服务器启动或第一次接收到对Servlet的请求时,Servlet会被加载和初始化。初始化通常在`init()`方法中完成,这里可以进行配置文件读取、数据库连接等初始化操作。然后,每当有请求到达,`service()`方法会被调用,...
Servlet生命周期包括加载、初始化、服务、销毁四个阶段,它们在服务器启动、首次请求或配置改变时触发。Servlet通过`service()`方法接收客户端请求,然后根据请求类型调用`doGet()`或`doPost()`等方法进行处理。此外...
在本实例中,我们使用 JSP 和 Servlet 来实现登录验证功能。JSP 负责接收用户输入,并将其传递给 Servlet 进行处理。Servlet 负责处理用户的请求,并将结果返回给用户。 知识点五:MySQL 数据库连接 在本实例中,...
1. **Servlet生命周期**:Servlet的生命周期包括加载、初始化、服务和销毁四个阶段。在`init()`方法中,通常会进行一些初始化设置;`service()`方法负责处理客户端请求;`destroy()`方法则用于释放资源。 2. **HTTP...
这个压缩包包含源码下载和一个使用JSP(JavaServer Pages)和Servlet实现的人力资源管理系统实例。 首先,我们来看看Servlet的基本概念。Servlet是一个Java类,它遵循Servlet接口,由Web服务器加载并执行,用于动态...
1. **加载与实例化**:当服务器启动或第一次接收到对Servlet的请求时,会加载Servlet类并创建其单个实例。 2. **初始化**:创建实例后,服务器调用`init()`方法进行初始化,通常用于配置Servlet。 3. **服务**:每当...
Servlet有良好的生存期的定义,包括如何加载、实例化、初始化、处理客户端请求以及如何被移除。这个生存期由javax.Servlet.Servlet接口的init,service和destroy方法表达。
在初始化阶段,Servlet容器(如Tomcat)加载Servlet类,创建Servlet实例,并调用`init()`方法进行初始化。当客户端发起请求时,Servlet容器会根据请求URL找到对应的Servlet,然后调用`service()`方法处理请求。`...
这个实例是为初学者设计的,帮助理解Servlet的基础概念和工作原理。 1. **Servlet生命周期** Servlet的生命周期包括加载、初始化、服务、销毁四个阶段。当服务器启动或第一次接收到对Servlet的请求时,Servlet被...
3. **Servlet生命周期**:Servlet的生命周期包括加载、初始化、服务、销毁四个阶段,可以通过`init()`, `service()`, `destroy()`方法进行控制。 4. **请求和响应对象**:`HttpServletRequest`和`...