欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Servlet的生命周期执行流程与参数配置

程序员文章站 2022-06-03 08:34:00
...

Servlet的生命周期
大多数资料是这样说:

客户端请求该 Servlet;
加载 Servlet 类到内存;
实例化servlet,并调用init()方法初始化该 Servlet;
service()(根据请求方法不同调用doGet() 或者 doPost(),此外还有doHead()、doPut()、doTrace()、doDelete()、doOptions()、destroy());
调用destroy( ),销毁过程;
直接上图解释;

Servlet的生命周期执行流程与参数配置
那么问题来了:在Servlet生命周期中,init()、destroy()执行了几次?(执行流程)
直接上图解释:
Servlet的生命周期执行流程与参数配置
servlet在web应用运行期间只会在第一次请求时被实例化一次、初始化一次,后面再次请求servlet时只会调用service方法。
在重新发布web应用时,在两次发布切换之间,先会调用destroy()方法,从内存中清理servlet实例。
在实际的开发中不需要复写doGet() 或者 doPost()方法,只需要复写service方法即可
service()方法对于用get方式或者post方式提交的请求多可以处理。所以只需要复写service方法即可。

@WebServlet("/OutputHtmlServlet")
public class OutputHtmlServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");		
		 PrintWriter out=response.getWriter(); 

		 out.println("<script>alert('hello');</script>"); //往页面写文本
	}	
}

servlet参数配置
servlet的参数配置在web.xml中配置

  <servlet>
  	<servlet-name>OutputHtmlServlet</servlet-name>
  	<servlet-class>net.neuedu.web919.controller.OutputHtmlServlet</servlet-class>
  	<load-on-startup>2</load-on-startup>
  </servlet>

Servlet的生命周期执行流程与参数配置
load-on-startup 参数用来配置servlet的实例化时将
值为-1:表示请求时才把servlet实例化
值为 0:表示应用部署时就把servlet实例化
值为 1:表示应用部署时就把servlet实例化

数字越大,越先被实例化
默认值是负数(不配置时),即是请求时才把servlet实例化。