一、实例化
1、什么是实例化?
容器创建Servlet对象
2、创建的时机
可以是在容器收到针对这个组件的请求之后,即用了才创建;
也可以在容器启动之后立刻创建实例,而不管此时Servlet是否使用的上。
创建的具体时机可以设置:
<servlet> <servlet-name>someServlet</servlet-name> <servlet-class>test.SomeServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>someServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
配置文件说明:load-on-startup节点用于设置该Servlet的创建时机。
1、当其中的值大于等于0时,表示容器在启动时就会创建实例
2、小于0时或没有指定时,代表容器在该Servlet被请求时再执行创建
3、正数的值越小,优先级越高,应用启动时就越先被创建。
二、初始化
1、什么是初始化?
init()方法被调用。Servlet在被加载实例化之后,必须要初始化它。
这个方法在javax.servlet.Servlet接口中定义,其中,方法以一个ServletConfig类型的对象作为参数。ServletConfig对象由Servlet引擎负责创建,从中可以读取到事先在web.xml文件中通过<init-param>节点配置的多个name-value名值对。ServletConfig对象还可以让Servlet接受一个ServletContext对象。一般情况下,init方法不需要编写,因为GenericServlet已经提供了init方法的实现,并且提供了getServletConfig()来获得ServletConfig对象。
注:init方法只被执行一次。
以下代码为在servlet配置中,增加初始化参数
<servlet> <servlet-name>someServlet</servlet-na me> <servlet-class>test/SomeServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-valule> </init-param> </servlet>
可以用如下方法读取Servlet配置中增加的初始化参数
ServletConfig config = getServletConfig();
String debug = config.getInitParameter("debug");
三、就绪(调用)
1、什么是调用?
容器收到请求之后,会调用servlet实例的service方法
2、HttpServlet的service方法是如何实现的?
依据请求类型,分别调用对应的doPost或者doGet方法
doGet方法处理get请求,doPost方法处理post请求
四、销毁
1、什么是销毁?
容器在删除servlet实例之前,会调用该实例的destroy方法。该方法只会执行一次。
2、可以重写GenericServlet提供的init方法来实现自已的销毁处理逻辑。