Servlet生命周期工作原理

开发一个Servlet:

1.1 步骤:

1)编写java类,继承HttpServlet类

2)重新doGet和doPost方法

3)Servlet程序交给tomcat服务器运行!!

3.1 servlet程序的class码拷贝到WEB-INF/classes目录

3.2 在web.xml文件中进行配置

<!-- 配置一个servlet -->
  <!-- servlet的配置 -->
  <servlet>
      <!-- servlet的内部名称,自定义。尽量有意义 -->
      <servlet-name>FirstServlet</servlet-name>
      <!-- servlet的类全名: 包名+简单类名 -->
      <servlet-class>servlet.FirstServlet</servlet-class>
  </servlet>

  <!-- servlet的映射配置 -->
  <servlet-mapping>
      <!-- servlet的内部名称,一定要和上面的内部名称保持一致!! -->
      <servlet-name>FirstServlet</servlet-name>
      <!-- servlet的映射路径(访问servlet的名称) -->
      <url-pattern>/first</url-pattern>
  </servlet-mapping>

/first    资源名称。

1)在day10的web.xml中查找是否有匹配的url-pattern的内容(/first)

2)如果找到匹配的url-pattern,则使用当前servlet-name的名称到web.xml文件中查询是否相同名称的

servlet配置

3)如果找到,则取出对应的servlet配置信息中的servlet-class内容: 字符串:servlet.FirstServlet

              通过反射:

a)构造FirstServlet的对象

b)然后调用FirstServlet里面的方法

Servlet映射路径

<servlet-mapping>
  	<!-- servlet的内部名称,一定要和上面的内部名称保持一致!! -->
  	<servlet-name>FirstServlet</servlet-name>
  	<!-- servlet的映射路径(访问servlet的名称) -->
  	<url-pattern>/first</url-pattern>
  </servlet-mapping>

Servlet缺省路径

<url-pattern>为Servlet内的一个默认路径,对应一个DefualtServlet .用于解析静态文件。如果最后文件名输入错误,没有匹配的url-pattern,就执行Tomcat默认路径,default自动寻找如果找不到,就返回404页面

Servlet 生命周期由Tomcat服务器控制

构造方法:创建Servet第一次访问时创建一次

init:只调用一次创建完Servlet方法后调用

service:调用多次。调用n次

destroy:销毁servlet对象的时候调用。停止服务器或者重新部署web应用时销毁servlet对象。只调用1次。

Servlet 生命周期演示:Tomcat内部调用过程(理解):

1)通过通过映射找到Servlet-class内容,刚才代码中的     servlet.FirstServlet

2) 通过反射构造FirstServlet对象

2.1得到字节码对象 class clazz=class.forName("Servlet.FirstServlet");

2.2 调用无参数的构造方法来构造对象

Object obj = clazz.newInstance();            --1.servlet的构造方法被调用

3)创建ServletConfig对象,通过反射调用init方法

3.1 得到方法对象

Method m = clazz.getDeclareMethod("init",ServletConfig.class);

3.2 调用方法

m.invoke(obj,config);                             --2.servlet的init方法被调用

4)创建request,response对象,通过反射调用service方法

4.1得到方法对象

Method m=clazz.getDeclareMethod("service",HttpServletRequest.class,HttpServletResponse.class);

4.2调用方法

m.invoke(obj.request,response);            --3.servlet service方法调用

5)当tomcat服务器停止或web应用重新部署,通过反射调用destroy方法

5.1 得到方法对象

Method m = clazz.getDeclareMethod("destroy",null);

5.2 调用方法

m.invoke(obj,null);                                    --4.servlet的destroy方法被调用

Servlet自动加载

默认情况下,第一次访问servlet的时候创建servlet对象。如果servlet的构造方法或init方法中执行了比较多的逻辑代码,那么导致用户第一次访问sevrlet的时候比较慢。

改变servlet创建对象的时机: 提前到加载web应用的时候!!!

在servlet的配置信息中,加上一个<load-on-startup>即可!!

时间: 2024-08-07 00:18:44

Servlet生命周期工作原理的相关文章

Servlet生命周期+工作原理

Servlet生命周期+工作原理 1.Servlet的生命周期: ????Servlet加载,加载,服务,销毁. 2.典型函数解释: ????Init():这个函数是用来初始化Servlet对象的.在Servlet的生命周期中,仅仅执行一次Servlet函数. ????Destroy():这个函数是用来销毁Servlet对象的,同样的,在Servlet的生命周期中,仅仅执行一次Servlet函数. ????Service():这个函数是Servlet对象响应客户请求时候使用的.是Servlet的

Servlet生命周期和工作原理

Servlet生命周期分为三个阶段: 1,初始化阶段  调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在下列时刻Servlet容器装载Servlet: 1,Servlet容器启动时自动装载某些Servlet,实现它只需要在web.XML文件中的<Servlet></Servlet>之间添加如下代码: <loadon-startup>1</loadon-startup&g

Servlet生命周期、工作原理、配置

Servlet生命周期 分为三个阶段: 1,初始化阶段  调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet工作原理 每一个自定义的Servlet都必须实现Servlet的接口,Servlet接口中定义了五个方法,其中比较重要的三个方法涉及到Servlet的生命周期,分别是上文提到的init(),service(),destroy()方法.GenericServlet是一个通用的,不特定于任何协议的Servlet,它实

Servlet 生命周期、工作原理

一. Servlet 生命周期 servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命周期中,仅执行一次init()方法.它是在服务器装入Servlet时执行的,负责初始化Servlet对象.可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet.无论有多少客户机访问Servlet,都不会重复执行init(). service():它是Servlet的核心,负责响应客户的请求.每当一个客户请求一个HttpServlet

Servlet生命周期与工作原理

Servlet生命周期分为三个阶段: 1,初始化阶段  调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在下列时刻Servlet容器装载Servlet: 1,Servlet容器启动时自动装载某些Servlet,实现它只需要在web.XML文件中的<Servlet></Servlet>之间添加如下代码: <loadon-startup>1</loadon-startup&g

servlet生命周期、工作原理

Servlet 生命周期:Servlet 加载--->实例化并初始化--->服务--->销毁. servlet加载:当容器启动的时候加载(或第一次访问servlet时加载):可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet init():在Servlet的生命周期中,仅执行一次init()方法.在服务器装入Servlet时,实例化servlet,并调用init()方法初始化. service():它是Servlet的核心,负责响应客户的请求.每当一个客户请

Servlet生命周期及工作原理

1 Servlet生命周期Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命周期中,仅执行一次init()方法.它是在服务器装入Servlet时执行的,负责初始化Servlet对象.可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet.无论有多少客户机访问Servlet,都不会重复执行init().service():它是Servlet的核心,负责响应客户的请求.每当一个客户请求一个Ht

Servlet生命周期与工作原理(转载)

Servlet生命周期分为三个阶段: 1,初始化阶段  调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在下列时刻Servlet容器装载Servlet: 1,Servlet容器启动时自动装载某些Servlet,实现它只需要在web.XML文件中的<Servlet></Servlet>之间添加如下代码: <loadon-startup>1</loadon-startup&g

面试题思考:Servlet 生命周期、工作原理

Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命周期中,仅执行一次init()方法.它是在服务器装入Servlet时执行的,负责初始化Servlet对象.可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet.无论有多少客户机访问Servlet,都不会重复执行init(). service():它是Servlet的核心,负责响应客户的请求.每当一个客户请求一个HttpServlet对象,