1、servlet的存在就是要为客户服务。servlet的任务就是得到一个用户的请求,再发回一些响应。

  • 请求可能很复杂,也可能很简单,例如,“为我的购物车结账”,这个请求携带了一些重要的数据,你必须知道如何获取这些数据;相应的,响应也可能需要携带一些东西,你必须知道怎样把这些附加信息写入响应。
  • servlet既可以直接输出响应给Web容器,也可以转发请求给JSP

2、Web容器(例如Tomcat)全盘控制着servlet的一生。

  1. 用户点击一个URL,这个URL指向一个servlet
  2. 容器“看出”URL指向一个servlet,于是创建两个对象:HttpServletRequestHttpServletResponse
  3. 容器为对应的servlet创建线程,并将两个对象传入service(HttpServletRequest req, HttpServletResponse resp)
  4. service方法根据客户发过来的HTTP方法(GET、POST等)调用servlet的对应方法(doGet(HttpServletRequest req, HttpServletResponse resp)doPost(HttpServletRequest req, HttpServletResponse resp)等)
  5. servlet通过响应对象将响应写给客户,容器传回响应给客户。
  6. service()线程结束,保留或是清理响应的对象,客户得到响应。

3、mark 一下tomcat的官方文档 Servlet API Documentation 以及head first系列 Head First (book series)

4、HttpServlet的继承树、接口

  • java.lang.Object 

    javax.servlet.GenericServlet

      javax.servlet.http.HttpServlet

        MyServlet    

Servlet接口:包括三个生命周期方法

GenericServlet:抽象类,包括大部分基本servlet行为,基本不扩展这个类

HttpServlet:强调servlet的HTTP特性

MyServlet:覆盖所需的HTTP方法,例如doPost等

5、每个请求都在一个单独的线程运行(不是进程),servlet类不会有多个实例!servlet类不会有多个实例!

6、servlet类的加载和实例化到底是什么时候开始的?基本上是在容器启动时,有例外,但是一定是在第一个客户请求提供服务之前。

7、在init()之前,还只是个普通的对象,当且仅当一个对象具备“servlet特性”的时候,才能被称作servlet

8、在构造函数和init()之间,servlet处于一种 介于生与死之间的状态 Schrödinger's cat - Wikipedia

9、ServletConfig和ServletContext。每一个servlet都有一个ServletConfig对象,用处就是字面上的意思;每个Web应用都有个ServletContext(应该叫做AppContext),相当于应用中的一个公告栏。

10、最后,servlet的真正任务是处理请求,这才是servlet存在的意义,请求和响应是其中的关键。

【Head First Servlets and JSP】笔记3:Servlet的生命周期的更多相关文章

  1. JSP Servlet WEB生命周期

    [转载] JavaWeb的生命周期是由Servlet容器来控制的总的来说分为三个阶段1.启动阶段:加载web应用相关数据,创建ServletContext对象,对Filter和servlet进行初始化 ...

  2. Servlet学习笔记(1)--第一个servlet&&三种状态对象(cookie,session,application)&&Servlet的生命周期

    servlet的404错误困扰了两天,各种方法都试过了,翻书逛论坛终于把问题解决了,写此博客来纪念自己的第一个servlet经历. 下面我会将自己的编写第一个servlet的详细过程提供给初学者,大神 ...

  3. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  4. Servlet的生命周期和Jsp的生命周期

    Servlet的生命周期: 1)构造方法(第1次访问) 2)init方法(第1次访问) 3)service方法 4)destroy方法 Jsp的生命周期 1)翻译: jsp->java文件 2) ...

  5. Servlet是什么?JSP和Servlet的区别。Servlet的生命周期。

    Servlet(Server Applet),全称Java Servlet, 是用Java编写的服务器端程序.而这些Sevlet都要实现Servlet这个借口.其主要功能在于交互式地浏览和修改数据,生 ...

  6. Spring,SpringMVC,MyBatis,Hibernate,Servlet的生命周期,jsp有哪些内置对象,Tomcat,Cookie和Session的作用以及区别,oracle,MYSQL等面试题总结

    1. 什么是Spring,谈谈你对Spring的理解 Spring是我们JAVA开发人员在搭建后台时选用的一个轻量级的开源框架,Spring框架目前也是功能丰富,十分优秀企业级采用最多的一个框架. S ...

  7. Servlet的生命周期及工作原理

    Servlet生命周期分为三个阶段: 1,初始化阶段  调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在 ...

  8. Servlet的生命周期+实现方式

    1.Servlet的生命周期:        (1)被创建:            默认情况下,Servlet第一次被访问时,被服务器创建.会调用init()方法.                一个 ...

  9. servlet的生命周期与运行时的线程模型

    第 14 章 生命周期 注意 讲一下servlet的生命周期与运行时的线程模型,对了解servlet的运行原理有所帮助,这样才能避免一些有冲突的设计. 如果你不满足以下任一条件,请继续阅读,否则请跳过 ...

  10. Servlet/JSP-01 Servlet及其生命周期

    一.起步 1.新建一个类继承Servlet接口 public class HelloServlet implements Servlet { @Override public void destroy ...

随机推荐

  1. makefile编写---.so动态库的生成和调用

    http://blog.sina.com.cn/s/blog_559f6ffc0100fl3z.html  动静 http://blog.csdn.net/yuyunliuhen/article/de ...

  2. Python中的多进程与多线程/分布式该如何使用

    在批评Python的讨论中,常常说起Python多线程是多么的难用.还有人对 global interpreter lock(也被亲切的称为“GIL”)指指点点,说它阻碍了Python的多线程程序同时 ...

  3. phpcs,phpmd,phan安装部署,phpstorm配置phpunit

    git参考地址:https://github.com/YunhanTech/overview/blob/master/php/learn-road.md phpcs 安装 composer globa ...

  4. Java 基础巩固:IO

    在学习IO的时候发现IO的类太多,如InputStream下面就用ReaderInputStream.InputStreamBuffer等等, 还用Reader.Writer.OutputStream ...

  5. 【BZOJ3073】[Pa2011]Journeys 线段树+堆优化Dijkstra

    [BZOJ3073][Pa2011]Journeys Description Seter建造了一个很大的星球,他准备建造N个国家和无数双向道路.N个国家很快建造好了,用1..N编号,但是他发现道路实在 ...

  6. NodeJS版本EasyDarwin开源流媒体服务器开发心得

    title: Node版本EasyDarwin开发心得 date: 2018-03-27 22:46:15 tags: 年后着手Node版本EasyDarwin的开发工作,截止到今天2018年03月2 ...

  7. JS实现全选,全不选

    <script type="text/javascript"> function selectItem() { document.getElementById(&quo ...

  8. JS基础知识简介

    使用js的三种方式 1.HTML标签内嵌js <button onclick="javascript:alert(真点啊)">有本事点我</button> ...

  9. Facebook背后的软件

    Facebook的数据规模使得很多传统的解决方案根本不适用,或者无法分解来处理.保持一个拥有5亿用户的系统一直稳定可靠的运行,并不是一件很容易的事情.这篇文章介绍了一下Facebook使用的软件. F ...

  10. Linux中权限管理之文件特殊权限

    SetUID 1.只有在可执行的二进制程序上设定SUID权限才是有意义的 2.命令执行者要对该程序拥有执行权限 3.命令执行者在执行该程序时获得该程序文件属主的身份 4.SetUID权限只在该程序执行 ...