Servlet调用过程
浏览器上输入网站,dns解析域名成服务器的IP地址,浏览器带着一个请求行,和众多request请求头,×××器。
1.分析请求的是哪台虚拟主机,查看Host请求头,如果没有Host请求头就访问缺省虚拟主机
2.分析访问的是当前虚拟主机中的哪个web资源,从请求行中分析出当前访问哪个web应用的资源
3.查找web.xml,查看有没有对应的虚拟路径
Servlet的生命周期
1、Servlet在第一次被访问到的时候,服务器创建出Servlet对象。
2、创建出对象之后,立即调用init()方法做初始化操作。
3、创建出的对象会一直驻留在内存中,为后续请求服务。
4、每次对这个Servlet的访问请求,都会导致这个Servlet中service()方法的执行。
5、对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。
6、在Servlet销毁之前,服务器会调用Servlet的destroy()方法做一些善后的工作。
7、当web应用被移除出容器,或服务器被关闭时,Servlet会被销毁。
Servlet的继承结构
Servlet接口 -- 定义了Servlet应该具有的基本方法
|--GenericServlet --通用基本Servlet实现对于不常用的方法在这个实现类中进行了基本的实现,对于Service设计为了抽象方法,需要子类去实现
|--HttpServlet --在通用Servlet的基础上基于HTTP协议进行了进一步的强化:实现了GenericServlet中的Service方法,判断当前的请求方式,调用对应到doXXX方法,这样一来我们开发Servlet的过程中只需继承HttpServlet ,覆盖具体要处理的doXXX方法就可以根据不同的请求方式实现不同的处理.一般不要覆盖父类中的Service方法只要覆盖doGet/doPost就可以了
转载于:https://blog.51cto.com/pengya123/1764807