Servlet会在服务器启动或第一次请求该Servlet的时候开始生命周期,在服务器结束的时候结束生命周期。无论请求多少次Servlet,最多只有一个Servlet实例。多个客户端并发请求Servlet时,服务器会启动多个线程分别执行该Servlet的service()方法。

一、重点方法说明

1.init(ServletConfig conf)

加载Servlet时运行此方法,如果load-on-startup为0,则客户端第一次请求该Servlet时加载Servlet,如果load-on-startup配置为1,则容器启动时加载Servlet。

2.Service(ServletRequest req, ServletResponse res)

客户端每次请求Servlet都会运行该方法,该方法判断访问类型,然后根据HttpServletRequest的getMethod()返回结果判断是执行doGet还是doPost,doPut等。

3.destroy()

卸载Servlet时执行该方法,当容器关闭时会先卸载所有的Servlet,因此容器关闭时会执行destroy方法。

二、例子实践

1.web.xml

  1. <!-- Servlet生命周期演示 -->
  2. <servlet>
  3. <servlet-name>LifeCycleServlet</servlet-name>
  4. <servlet-class>com.servlet.LifeCycleServlet</servlet-class>
  5. </servlet>
  6. <servlet-mapping>
  7. <servlet-name>LifeCycleServlet</servlet-name>
  8. <url-pattern>/servlet/LifeCycleServlet</url-pattern>
  9. </servlet-mapping>

2.LifeCycleServlet

  1. package com.servlet;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5.  
  6. import javax.servlet.ServletConfig;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11.  
  12. public class LifeCycleServlet extends HttpServlet {
  13.  
  14. private double startPoint;
  15.  
  16. /**
  17. * Destruction of the servlet. <br>
  18. */
  19. public void destroy() {
  20. this.log("执行destroy()方法...");
  21. // Put your code here
  22. }
  23.  
  24. public void doGet(HttpServletRequest request, HttpServletResponse response)
  25. throws ServletException, IOException {
  26. this.log("执行doGet()方法...");
  27. response.setContentType("text/html");
  28. response.setCharacterEncoding("UTF-8");
  29. PrintWriter out = response.getWriter();
  30. out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
  31. out.println("<HTML>");
  32. out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
  33. out.println(" <BODY>");
  34. out.println("<form method='post'>");
  35. out.println("<div align='center'>");
  36. out.print("<h1>Servlet 生命周期(1)</h1></br>");
  37. out.println("<input type='submit' value='点我'>");
  38. out.println("</div>");
  39. out.println("</form>");
  40. out.println(" </BODY>");
  41. out.println("</HTML>");
  42. out.flush();
  43. out.close();
  44.  
  45. }
  46.  
  47. public void doPost(HttpServletRequest request, HttpServletResponse response)
  48. throws ServletException, IOException {
  49. this.log("执行doPost()方法...");
  50. response.setContentType("text/html");
  51. response.setCharacterEncoding("UTF-8");
  52. PrintWriter out = response.getWriter();
  53. out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
  54. out.println("<HTML>");
  55. out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
  56. out.println(" <BODY>");
  57. out.println("<div align='center'>");
  58. out.print("<h1>Servlet 生命周期(2)</h1></br>");
  59. out.println("<input type='button' onclick='history.go(-1)' value='返回上一级'>");
  60. out.println("</div>");
  61. out.println(" </BODY>");
  62. out.println("</HTML>");
  63. out.flush();
  64. out.close();
  65.  
  66. }
  67.  
  68. public void service(HttpServletRequest request,HttpServletResponse response)
  69. throws ServletException, IOException {
  70. this.log("执行service()方法...");
  71. super.service(request, response);
  72. }
  73.  
  74. public void init() throws ServletException {
  75. // Put your code here
  76. this.log("执行init()方法...");
  77. }
  78.  
  79. }

3.效果图

浏览器:

控制台输出:

Java开发之Servlet生命周期的更多相关文章

  1. Java开发之Servlet之间的跳转

    一.转向(Forward) 1.要点说明 转向是通过RequestDispatcher对象的forward()方法来实现的.RequestDispatcher可以通过HttpServletReques ...

  2. Android开发之Activity生命周期篇

    一.Activity: 1.Activity:Activity是一个与用记交互的系统模块,几乎所有的Activity都是和用户进行交互的. 2.在Android中Activity主要是用来做控制的,它 ...

  3. Java Servlet系列之Servlet生命周期

    Servlet生命周期定义了一个Servlet如何被加载.初始化,以及它怎样接收请求.响应请求,提供服务.在讨论Servlet生命周期之前,先让我们来看一下这几个方法: 1. init()方法 在Se ...

  4. 测试Servlet生命周期学习笔记

    测试环境:windows xp旗舰版 软件环境:myclipse8.5+tomcat7.0 ****************************************************** ...

  5. Java开发之@PostConstruct和@PreConstruct注解

    从Java EE5规范开始,Servlet增加了两个影响Servlet生命周期的注解(Annotation):@PostConstruct和@PreConstruct.这两个注解被用来修饰一个非静态的 ...

  6. servlet生命周期与工作原理

    →   Jsp的本质是Servlet,Servlet是服务器端的小程序,运行在服务器,用于处理及响应客户端的请求. Servlet和JSP的区别: servlet是特殊的Java类,必须继承HttpS ...

  7. Servlet 生命周期、工作原理

    按照单例的编码规则,Servlet本身只是一个Java,结构并不是单例结构. 只是Web容器在维护这些Servlet的时候只给创建一个实例存在JVM中,用户请求服务时,服务器只调用它已经实例化好的Se ...

  8. 【drp 9】Servlet生命周期

    一.基本概念 Servlet(Server Applet):全称Java Servlet,是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容.狭义的Servlet ...

  9. javaweb学习总结二十一(servlet开发入门、servlet生命周期以及调用过程)

    一:servlet开发入门 servlet是sun公司一门开发动态web资源的技术,下面编写一个servlet入门程序: 1:在tomcat服务器webapps目录下新建firstServlet目录, ...

随机推荐

  1. 充满想象力的 JavaScript 物理和重力实验

    在这个列表中挑选了9个物理和重力实验,用来展示 Javascript 的强大.几年前,所有这些实验都必须使用 Java 或 Flash 才能做.在下面这些惊人的例子中,就个人而言,我比较喜欢仿真布料的 ...

  2. 免费 PSD 下载: 20个精美的登录和注册表单

    注册表单有许多不同的形状和尺寸,有的只是单个的输入框,有的则需要多个步骤.登录表单的设计将定义网站的性质,因此它应进行针对性的设计.下面的列表提供了20个醒目的登录和注册表单设计为您提供灵感. 您可能 ...

  3. 为你的网页图标(Favicon)添加炫丽的动画和图片

    Favico.js 在让你的网页图标显示徽章,图像或视频.你设置可以轻松地在网页图标中使用动画,可以自定义类型的动画,背景颜色和文字颜色.它支持的动画,像幻灯片,渐变,弹出等等. 您可能感兴趣的相关文 ...

  4. aBowman >>可以运用到自己博客上的小插件

    大家进入我的博客会发现页面右边有一只小狗这部分.这个就是我用在上面的 一个小插件.插件网址是:http://abowman.com/google-modules/,这上面有很多的小插件,可以直接运用到 ...

  5. HTML 表单

    HTML 表单包含表单元素. <form> 元素定义 HTML 表单 表单元素指的是不同类型的 input 元素.复选框.单选按钮.提交按钮等等. HTML 表单用于搜集不同类型的用户输入 ...

  6. C/C++构建系统 -工具汇总

    关于构建系统可以先参考百科 http://en.wikipedia.org/wiki/List_of_build_automation_software http://www.drdobbs.com/ ...

  7. sqlite3 not found问题解决方法

    测试发现,有些Android手机自带sqlite3命令,有些不带.对于不带sqlite3的手机,我们可以手动将sqlite3加入系统. 执行如下命令 adb remount adb push 路径/s ...

  8. chrome插件——Vimium 键盘手福利

    chrome插件——Vimium 键盘手福利 金刚 chrome chrome插件 Vimium 一直希望纯键盘操作,但是在浏览网页的时候,发现还是很难做到这点的.因为网页浏览的时候会有 各种各样的内 ...

  9. json官方学习档案

    项目经常用json开发,但说实话,对json了解的一直不深入.今天看了下json的官方资料,明了很多. json官方网址:http://www.json.org/json-zh.html JSON(J ...

  10. WPF学习之路(二) XAML

    在WPF中引入了XAML语言,主要用于界面设计,业务逻辑则使用C#实现后台代码,将界面设计与业务逻辑分离 XAML是一种声明式语言,类似XML\HTML 示例: <!--Start Tag--& ...