Servlet的生命周期(面试题)以及配置xml文件(二)
一.Servlet生命周期:
当servlet被第一次访问的时候,init()方法会被调用。Servlet的实例默认情况下是第一次被访问的时候创建(这个可以是更改的),第二次访问不会了。Servlet的实例是单例的,Servlet每次请求会被调用。当Servlet对象销毁时会调用这个方法destroy()。
Servlet对象实例化(创建) ——> Servlet对象初始化——> 处理请求 ——> Servlet对象销毁(服务器关闭或崩溃了)
大致在这几个方法中体现: init(); service(); destroy();
二.专注Http请求的Servlet
Servlet(一个标准)接口 ——> GenericServlet是Servlet接口子类——>HttpServlet是GenericServlet的子类(一个专门处理http请求的Servlet)
httpServlet中的需要了解的几个方法
①doGet(HttpServletRequest req, HttpServletResponse resp); 是给Get方式的Http的请求做响应。
②doPost(HttpServletRequest req, HttpServletResponse resp); 是给POST方式的Http的请求做响应。
③service(HttpServletRequest arg0, HttpServletResponse arg1);响应请求,请求并将其分配到该类中定义的doXXX方法。
三.Tomcat启动创建Servlet实例
①怎么添加在Tomcat启动创建Servlet实例?
在Web.xml文件中,<Servlet>下添加一个元素对象<load-on-startup>1<load-on-startup>里面必须是大于等于0的整数。
所有添加了<load-on-startup>子元素的Servlet。都会在Tomcat启动时创建Servlet对象。只是被创建,但没有处理请求。但我们知道在Servlet生命周期中init()方法会在Servlet对象创建时被调用。所以你可以在init()方法中做一些输出,查看是否在Tomcat启动时被调用了它。
<load-on-startup>元素的值是一个序号,Tomcat会使用这个序号给多个Servlet排序,然后再Tomcat启动时会按照这个顺序来创建Servlet实例对象。