`
cakin24
  • 浏览: 1390194 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Tomcat装载Servlet的三种情况

    博客分类:
  • java
阅读更多
一 时刻1
Servlet容器启动时自动装载某些Servlet,实现它只需要在web.xml文件中的<Servlet></Servlet>之间添加如下代码
<loadon-startup>1</loadon-startup>
数字越小表示优先级别越高。
1 关键代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
        xmlns="http://java.sun.com/xml/ns/javaee";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  <display-name></display-name>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>TestServlet1</servlet-name>
    <servlet-class>servlet.TestServlet1</servlet-class>
 
    <load-on-startup>2</load-on-startup>
 
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>TestServlet2</servlet-name>
    <servlet-class>servlet.TestServlet2</servlet-class>
 
    <load-on-startup>1</load-on-startup>
 
  </servlet>
 
 
  <servlet-mapping>
    <servlet-name>TestServlet1</servlet-name>
    <url-pattern>/servlet/TestServlet1</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>TestServlet2</servlet-name>
    <url-pattern>/servlet/TestServlet2</url-pattern>
  </servlet-mapping>       
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
2 测试
TestServlet2构造方法被执行....
TestServlet2的初始化方法被执行....
TestServlet1构造方法被执行....
TestServlet1的初始化方法被执行....
 
二 时刻2
在Servlet容器启动后,客户首次向Servlet发送请求。
1 关键代码
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet1 extends HttpServlet {
   
    
    
    /**
     * Constructor of the object.
     */
    public TestServlet1() {
        System.out.println("TestServlet1构造方法被执行....");
    }
    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        System.out.println("TestServlet1销毁方法被执行....");
    }
    /**
     * The doGet method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to get.
     *
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("TestServlet1的doGet()方法被执行...");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
        out.println("<h1>大家好,我是TestServlet1!</h1>");
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
    /**
     * The doPost method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to post.
     *
     * @param request the request send by the client to the server
     * @param response the response send by the server to the client
     * @throws ServletException if an error occurred
     * @throws IOException if an error occurred
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("TestServlet1的doPost()方法被执行...");
        doGet(request,response); //让doPost()执行与doGet()相同的操作。
    }
    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException if an error occurs
     */
    public void init() throws ServletException {
        // Put your code here
        System.out.println("TestServlet1的初始化方法被执行....");
    }
}
 
2 测试
TestServlet1构造方法被执行....
TestServlet1的初始化方法被执行....
TestServlet1的doGet()方法被执行...
九月 24, 2017 2:51:01 下午 org.apache.catalina.core.StandardServer await
信息: A valid shutdown command was received via the shutdown port. Stopping the Server instance.
九月 24, 2017 2:51:01 下午 org.apache.coyote.AbstractProtocol pause
信息: Pausing ProtocolHandler ["http-apr-8888"]
九月 24, 2017 2:51:01 下午 org.apache.coyote.AbstractProtocol pause
信息: Pausing ProtocolHandler ["ajp-apr-8009"]
九月 24, 2017 2:51:01 下午 org.apache.catalina.core.StandardService stopInternal
信息: Stopping service Catalina
九月 24, 2017 2:51:02 下午 org.apache.catalina.core.ApplicationContext log
信息: SessionListener: contextDestroyed()
九月 24, 2017 2:51:02 下午 org.apache.catalina.core.ApplicationContext log
信息: ContextListener: contextDestroyed()
TestServlet1销毁方法被执行....
 
三 时刻3
Servlet类文件被更新后,重新装载Servlet。
修改文件后,生成类文件时间发生变化


 
 
四 说明
Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的整个生命周期,init()方法只被调用一次。
  • 大小: 55.6 KB
1
0
分享到:
评论

相关推荐

    tomcat启动服务运行servlet

    6. 装载Servlet:根据`web.xml`中的配置,Tomcat实例化Servlet类,并调用其`init()`方法进行初始化。 7. 服务器开始监听并处理请求:一旦启动完成,Tomcat就开始接受HTTP请求,将请求分发给相应的Servlet进行处理。 ...

    servlet执行过程与生命周期

    当Web容器启动时,它会根据`web.xml`配置文件中的信息来装载Servlet。这个过程中,如果在`web.xml`中配置了`&lt;load-on-startup&gt;`元素,那么该Servlet将在服务器启动时自动装载。例如: ```xml &lt;servlet&gt; &lt;servlet-...

    apache和tomcat的区别

    Apache是一个卡车,可以装载静态网页等,而Tomcat是一个桶,可以装载JSP、Servlet等动态网页。如果我们想装载水(JSP、Servlet等),我们需要一个卡车(Apache)和一个桶(Tomcat)。 Apache和Tomcat的区别还可以...

    tomcat源码基于6.0

    4. **生命周期管理**:Tomcat通过`Lifecycle`接口和`LifeCycleListener`机制来管理Servlet的生命周期,包括装载、初始化、启动、停止和卸载等阶段。 5. **JSP编译**:Jasper会监控JSP文件的改动,自动重新编译。JSP...

    Servlet技术入门 Servlet技术入门Servlet技术入门

    1. 装载Servlet:容器根据需要动态加载Servlet,可能在服务器启动时完成。 2. 创建Servlet实例:每个Servlet只有一个实例,由容器负责创建。 3. 初始化:容器调用Servlet的init方法进行初始化。 4. 服务:当收到请求...

    tomcat的工作原理

    2. **容器(Containers)**:容器是Tomcat的核心,用于装载和管理Web应用程序。容器可以分为四个层次:Engine、Host、Context和Wrapper,分别对应整个服务器、虚拟主机、Web应用程序和具体的Servlet或JSP页面。 - ...

    tomcat常见问题及解决方法

    第二种方法是使用 ServletContext 类中的 getResourceAsStream() 方法,该方法允许在不重新加载 Web 程序的情况下升级文件。 2. 如何配置请求日志? 配置请求日志是 Tomcat 中的一项重要功能,可以通过在 context ...

    tomcat源码 tomcat本来就是开源的

    #### 三、Tomcat源码价值 对于希望深入了解Tomcat内部机制或者定制化开发的开发者而言,研究其源码具有重要的意义: 1. **学习价值**:通过阅读Tomcat源码,可以系统地学习到Java语言在实际项目中的应用技巧,特别...

    Servlet生命周期与工作原理

    另外,当Servlet类文件被更新时,容器也会重新装载Servlet。在这一阶段,Servlet容器会创建Servlet的一个实例,并调用`init()`方法进行初始化。`init()`方法在整个Servlet生命周期中只被调用一次,通常用来进行一些...

    how tomcat works中文版.pdf百度网盘下载地址

    - **NIO与APR**:Tomcat支持两种主要的连接器类型——NIO Connector和APR Connector。NIO Connector基于Java NIO库实现,而APR Connector则依赖于Apache Portable Runtime库,能够更好地利用操作系统特性,提高性能...

    apache-tomcat-7.0.75

    描述中提到的"可以装载dubbo-admin项目"表明Tomcat 7.0.75能够支持Dubbo管理控制台的部署和运行。Dubbo是一个高性能、轻量级的服务治理框架,广泛应用于分布式系统。Dubbo-admin是一个用于监控和管理Dubbo服务的Web...

    How Tomcat Work Source

    `Context`负责装载Servlet和处理请求。 2. **Jasper**:JSP的处理涉及`org.apache.jasper.JspC`和`org.apache.jasper.compiler.Generator`类,它们负责将JSP转换为Servlet源代码,并通过`java.sun.net....

    servlet课件,非常好!

    当Web容器启动时,根据配置文件(如web.xml),它会装载Servlet类并创建一个Servlet实例。初始化阶段,Servlet会执行`init()`方法,通常用于设置初始参数。在服务过程中,每当有新的请求到来,Web容器并不会每次都...

    Servlet生命周期

    - 第一种形式定义于 `Servlet` 接口中并在 `GenericServlet` 类中实现,第二种形式则直接定义在 `GenericServlet` 类中。 - **初始化参数**:初始化参数用于向 Servlet 提供配置信息。可以通过 `ServletConfig` ...

    Servlet文檔

    Servlet与Servlet容器之间的关系可以类比为枪和子弹,Servlet是实现业务逻辑的“子弹”,而Servlet容器则是装载和发射这些“子弹”的“枪”。 Servlet容器的工作原理主要涉及以下几个关键点: 1. **Servlet容器...

    servlet实现案例.rar

    2. **装载与初始化**:如果请求对应的Servlet尚未加载到内存中,Servlet容器会根据web.xml配置文件装载Servlet类并调用其`init()`方法进行初始化。 3. **请求处理**:Servlet容器将请求对象(`HttpServletRequest`)...

    JSP教程_JavaServlet开发.pdf

    - **Servlet生命周期**:Servlet的生命周期由容器(如Tomcat)管理,包括装载Servlet类、实例化Servlet、初始化(调用`init()`)、处理请求(调用`service()`)、清理资源(调用`destroy()`)等阶段。 3. **...

    轻松认识servlet

    Servlet是一种基于Java的服务器端应用程序,其设计目的是为了扩展Web服务器的功能,使得开发人员能够创建动态的、交互式的Web内容。Servlet是独立于平台和协议的,能够生成HTTP响应来回应客户端的请求。由于它们运行...

    tomcat6.0(java)

    12. **Tomcat的扩展性**:除了基本功能,Tomcat 6.0还支持许多插件和第三方模块,如Valve(自定义请求处理逻辑)、Manager应用(用于管理Web应用)、Host Manager(用于管理虚拟主机)等。 13. **与IDE集成**:...

Global site tag (gtag.js) - Google Analytics