Servlet生命周期(JavaWeb相关)

Servlet在一个生命周期中只有一个实例,属于单实例,多线程。

我们通过一个例子来直观的看一下:

首先写一个Servlet

package com.xintouyun.jweb.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LifeCycleServlet extends HttpServlet{
	public void destroy() {
		System.out.println("销毁");
	}
	public void init() throws ServletException{
		System.out.println("初始化");
	}
	public LifeCycleServlet(){
		System.out.println("实例化");
	}
	public void doGet(HttpServletRequest request,HttpServletResponse reponse)throws IOException,ServletException{
		System.out.println("处理请求");
	}
}

配置xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	id="WebApp_ID" version="3.1">
        <servlet>
		<servlet-name>LifeCycleServlet</servlet-name>
		<servlet-class>com.xintouyun.jweb.servlet.LifeCycleServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>LifeCycleServlet</servlet-name>
		<!--访问servlet的路径:必须以/开头,这个/代表应用的根 -->
		<url-pattern>/LifeCycleServlet</url-pattern>
	</servlet-mapping>
</web-app>

配置完,我们开启tomcat,在tomcat上运行一下,看结果:

第一次运行:相当于第一次发送请求:实例化,初始化,处理请求

 第二次运行:相当于第二次发送请求:只处理请求,不实例化,初始化

 第三次运行:相当于第三次发送请求:只处理请求,不实例化,初始化

当关闭tomcat服务器时:在服务器关闭前销毁。

总结:servlet在一个生命周期中只在第一次请求时,初始化,实例化,之后再请求,就只处理请求。在停止服务器前销毁(典型的单实例,多线程)。

猜你喜欢

转载自blog.csdn.net/qq_40180411/article/details/82084388
今日推荐