`

Servlet加载和实例化的时间

阅读更多
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之后。
分享到:
评论

相关推荐

    深入学习:Java Servlet开发与实例

    在服务器启动时或首次接收到请求时,Servlet会被加载和初始化。然后,每当有请求到达,Servlet会处理该请求并返回响应。最后,当服务器关闭或者Servlet不再需要时,Servlet会被销毁。 2. **Servlet配置**:在`web....

    Java Servlet开发与实例

    初始化阶段,Servlet容器(如Tomcat)加载Servlet类并调用`init()`方法;服务阶段,每次接收到请求时,都会调用`service()`方法来处理;销毁阶段,当Servlet不再使用或服务器关闭时,调用`destroy()`方法进行资源...

    servlet+eayui实例

    Servlet生命周期包括加载、初始化、服务、销毁四个阶段,通过Servlet容器(如Tomcat)管理。在Web应用中,Servlet通常用于处理HTTP请求,如登录验证、数据处理、业务逻辑等。 EasyUI是一个基于jQuery的前端UI框架,...

    servlet 留言板实例

    - **Servlet生命周期**:Servlet的生命周期包括加载、初始化、服务和销毁四个阶段。在初始化阶段,Servlet会根据配置文件(如web.xml)进行初始化,创建数据库连接池等资源。 - **HTTP请求和响应**:Servlet通过`...

    servlet程序小实例

    当服务器启动或第一次接收到对Servlet的请求时,Servlet会被加载和初始化。初始化通常在`init()`方法中完成,这里可以进行配置文件读取、数据库连接等初始化操作。然后,每当有请求到达,`service()`方法会被调用,...

    servlet及MVC学习实例

    Servlet生命周期包括加载、初始化、服务、销毁四个阶段,它们在服务器启动、首次请求或配置改变时触发。Servlet通过`service()`方法接收客户端请求,然后根据请求类型调用`doGet()`或`doPost()`等方法进行处理。此外...

    java +jsp+servlet 登录验证实例

    在本实例中,我们使用 JSP 和 Servlet 来实现登录验证功能。JSP 负责接收用户输入,并将其传递给 Servlet 进行处理。Servlet 负责处理用户的请求,并将结果返回给用户。 知识点五:MySQL 数据库连接 在本实例中,...

    Servlet实例源码

    1. **Servlet生命周期**:Servlet的生命周期包括加载、初始化、服务和销毁四个阶段。在`init()`方法中,通常会进行一些初始化设置;`service()`方法负责处理客户端请求;`destroy()`方法则用于释放资源。 2. **HTTP...

    servlet相关的实例(共三个包)第一包

    这个压缩包包含源码下载和一个使用JSP(JavaServer Pages)和Servlet实现的人力资源管理系统实例。 首先,我们来看看Servlet的基本概念。Servlet是一个Java类,它遵循Servlet接口,由Web服务器加载并执行,用于动态...

    使用servlet的一些实例

    1. **加载与实例化**:当服务器启动或第一次接收到对Servlet的请求时,会加载Servlet类并创建其单个实例。 2. **初始化**:创建实例后,服务器调用`init()`方法进行初始化,通常用于配置Servlet。 3. **服务**:每当...

    servlet +API+实例

    Servlet有良好的生存期的定义,包括如何加载、实例化、初始化、处理客户端请求以及如何被移除。这个生存期由javax.Servlet.Servlet接口的init,service和destroy方法表达。

    Servlet实例和JDBC的连接.rar

    在初始化阶段,Servlet容器(如Tomcat)加载Servlet类,创建Servlet实例,并调用`init()`方法进行初始化。当客户端发起请求时,Servlet容器会根据请求URL找到对应的Servlet,然后调用`service()`方法处理请求。`...

    java web servlet实例

    这个实例是为初学者设计的,帮助理解Servlet的基础概念和工作原理。 1. **Servlet生命周期** Servlet的生命周期包括加载、初始化、服务、销毁四个阶段。当服务器启动或第一次接收到对Servlet的请求时,Servlet被...

    Java Servlet开发与实例.rar

    3. **Servlet生命周期**:Servlet的生命周期包括加载、初始化、服务、销毁四个阶段,可以通过`init()`, `service()`, `destroy()`方法进行控制。 4. **请求和响应对象**:`HttpServletRequest`和`...

Global site tag (gtag.js) - Google Analytics