java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
这篇文章主要为大家详细介绍了 servlet 生命周期的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
1.Servlet 生命周期:Servlet 加载 ---> 实例化 ---> 服务 ---> 销毁。
2.init():在 Servlet 的生命周期中,仅执行一次 init() 方法。它是在服务器装入 Servlet 时执行的,负责初始化 Servlet 对象。可以配置服务器,以在启动服务器或客户机首次访问 Servlet 时装入 Servlet。无论有多少客户机访问 Servlet,都不会重复执行 init()。
3.service():它是 Servlet 的核心,负责响应客户的请求。每当一个客户请求一个 HttpServlet 对象,该对象的 Service() 方法就要调用,而且传递给这个方法一个" 请求 "(ServletRequest)对象和一个" 响应 "(ServletResponse)对象作为参数。在 HttpServlet 中已存在 Service() 方法。默认的服务功能是调用与 HTTP 请求的方法相应的 do 功能。
4.destroy(): 仅执行一次,在服务器端停止且卸载 Servlet 时执行该方法。当 Servlet 对象退出生命周期时,负责释放占用的资源。一个 Servlet 在运行 service() 方法时可能会产生其他的线程,因此需要确认在调用 destroy() 方法时,这些线程已经终止或完成。
Tomcat 与 Servlet 是如何工作的:
步骤:1.web Client 向 Servlet 容器(Tomcat)发出 Http 请求
2.Servlet 容器接收 Web Client 的请求
3.Servlet 容器创建一个 Request 对象,将 Web Client 请求的信息封装到这个对象中。
4.Servlet 容器创建一个 Response 对象
5.Servlet 容器调用 HttpServlet 对象的 service 方法,把 Request 对象与 Response 对象作为参数传给 Servlet 对象。
6.Servlet 调用 Request 对象的有关方法,获取 Http 请求信息。
7.HttpServlet 调用 Response 对象的有关方法,生成响应数据。
8.Servlet 容器把 HttpServlet 的响应结果传给 Web Client。
Servlet 工作原理:1、首先简单解释一下 Servlet 接收和响应客户请求的过程,首先客户发送一个请求,Servlet 是调用 service() 方法对请求进行响应的,通过源代码可见,service() 方法中对请求的方式进行了匹配,选择调用 doGet,doPost 等这些方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。在 Servlet 接口和 GenericServlet 中是没有 doGet()、doPost()等等这些方法的,HttpServlet 中定义了这些方法,但是都是返回 error 信息,所以,我们每次定义一个 Servlet 的时候,都必须实现 doGet 或 doPost 等这些方法。
2、每一个自定义的 Servlet 都必须实现 Servlet 的接口,Servlet 接口中定义了五个方法,其中比较重要的三个方法涉及到 Servlet 的生命周期,分别是上文提到的 init(),service(),destroy() 方法。GenericServlet 是一个通用的,不特定于任何协议的 Servlet, 它实现了 Servlet 接口。而 HttpServlet 继承于 GenericServlet,因此 HttpServlet 也实现了 Servlet 接口。所以我们定义 Servlet 的时候只需要继承 HttpServlet 即可。
3、Servlet 接口和 GenericServlet 是不特定于任何协议的,而 HttpServlet 是特定于 HTTP 协议的类,所以 HttpServlet 中实现了 service() 方法,并将请求 ServletRequest、ServletResponse 强转为 HttpRequest 和 HttpResponse。
创建 Servlet 对象的时机:1.Servlet 容器启动时:读取 web.xml 配置文件中的信息,构造指定的 Servlet 对象,创建 ServletConfig 对象,同时将 ServletConfig 对象作为参数来调用 Servlet 对象的 init 方法。
2. 在 Servlet 容器启动后:客户首次向 Servlet 发出请求,Servlet 容器会判断内存中是否存在指定的 Servlet 对象,如果没有则创建它,然后根据客户的请求创建 HttpRequest、HttpResponse 对象,从而调用 Servlet 对象的 service 方法。
3.Servlet Servlet 容器在启动时自动创建 Servlet,这是由在 web.xml 文件中为 Servlet 设置的
- <servlet>
- <servlet-name>Init</servlet-name>
- <servlet-class>org.xl.servlet.InitServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
来源: http://www.phperz.com/article/18/0103/356162.html