Servlet调用过程

浏览器上输入网站,dns解析域名成服务器的IP地址,浏览器带着一个请求行,和众多request请求头,找服务器。

  1.分析请求的是哪台虚拟主机,查看Host请求头,如果没有Host请求头就访问缺省虚拟主机

  2.分析访问的是当前虚拟主机中的哪个web资源,从请求行中分析出当前访问哪个web应用的资源

  3.查找web.xml,查看有没有对应的虚拟路径

Servlet的生命周期

 

1、Servlet在第一次被访问到的时候,服务器创建出Servlet对象。

2、创建出对象之后,立即调用init()方法做初始化操作。

3、创建出的对象会一直驻留在内存中,为后续请求服务

4、每次对这个Servlet的访问请求,都会导致这个Servletservice()方法的执行。

5、对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servletservice()方法,service方法再根据请求方式分别调用doXXX方法

6、Servlet销毁之前,服务器会调用Servletdestroy()方法做一些善后的工作。

7、web应用被移除出容器,或服务器被关闭时,Servlet会被销毁

 

Servlet的继承结构

Servlet接口 -- 定义了Servlet应该具有的基本方法

    |--GenericServlet --通用基本Servlet实现对于不常用的方法在这个实现类中进行了基本的实现,对于Service设计为了抽象方法,需要子类去实现

           |--HttpServlet --在通用Servlet的基础上基于HTTP协议进行了进一步的强化:现了GenericServlet中的Service方法,判断当前的请求方式,调用对应doXXX方法,这样一来我们开发Servlet的过程中只需继承HttpServlet ,覆盖具体要处理的doXXX方法就可以根据不同的请求方式实现不同的处理.一般不要覆盖父类中的Service方法只要覆盖doGet/doPost就可以了