• 【Head First Servlets and JSP】笔记3:Servlet的生命周期


    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 

        extended byjavax.servlet.GenericServlet

          extended byjavax.servlet.http.HttpServlet

            extended byMyServlet    

    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存在的意义,请求和响应是其中的关键。

  • 相关阅读:
    BOJ 85 Three Points On A Line
    BOJ 84 Single Number
    BOJ 83 A + B Problem
    【转载】运算符优先级
    匹配体重和为特定值的人,两两成对
    The Brand New Beginning!
    【失败】制作CentOS镜像
    【制作镜像】安装VMwareTool
    部署巡检脚本
    windows server 2008镜像重启后密码变为默认密码的问题的解决方案
  • 原文地址:https://www.cnblogs.com/xkxf/p/6851966.html
Copyright © 2020-2023  润新知