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. Mysql 变量讲解

    set语句的学习: 使用select定义用户变量的实践将如下语句改成select的形式: set @VAR=(select sum(amount) from penalties);我的修改: sele ...

  2. 接入qq登录功能出现的问题

    在调用qq授权的接口时,出现以上错误. 原因是: 打包的应用签名和第一次上传包的签名不一致造成的 解决方法: 第一种方法:用上次打包apk的keystore重新打包apk,使签名一致. 第二种方法:联 ...

  3. jdbc 中 excute executeUpdate的用法作用

    Statement 接口提供了三种执行 SQL 语句的方法:executeQuery.executeUpdate 和 execute.使用哪一个方法由 SQL 语句所产生的内容决定. 方法execut ...

  4. 正则表达式初识,re模块

    作业收藏 # 3.reversed和sorted和list列表类型内置的sort.reverse有什么区别? #reversed 的返回值是一个迭代器并不会直接修改原列表 sorted的返回值是生成一 ...

  5. go语言发送邮件

    package main import ( "fmt" "net/smtp" "strings" ) //发送邮件的逻辑函数 func Se ...

  6. python中json操作

    1.写操作.json文件dumps().dump()函数 d = { 'zll': { 'addr': '北京', 'age': 28 }, 'ljj': { 'addr': '北京', 'age': ...

  7. Win7系统安装 MySQL 5.7.23

    1. 下载 MySQL 5.7版本:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 2. 解压到指定文件夹,mysql根目录下创建my ...

  8. :eq()中的参数详解——需要注意

    :eq()的括号中的参数如果是非负数则在DOM对象中按从上到下的顺序查找指定的元素,但是,如果是是负数,则在DOM中从下向上查找指定元素. 如下实例: 如果 $("#divTag div:e ...

  9. 深入理解javascript原型和闭包(17)——补充:上下文环境和作用域的关系

    摘自:http://www.cnblogs.com/wangfupeng1988/p/4000798.html:作者:王福朋: 本系列用了大量的篇幅讲解了上下文环境和作用域,有些人反映这两个是一回儿事 ...

  10. 0x04 MySQl 表操作

    0x01 存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 详见:http://www.cnblogs.com/linhaifeng/articles/7213670.ht ...