Servlet生命周期

Servlet生命周期

1.什么是servlet生命周期

​ servlet容器创建servlet对象,到servlet对象销毁这个过程称之为servlet生命周期。

2.生命周期如下

2-1:实例化

​ a.什么时候实例化?

​ 情况1:容器收到请求后创建servlet对象

​ 情况2:启动容器之后立刻创建servlet对象(需要配置文件)

​ 以上两种情况容器调用Servlet的构造器创建对象。

​ b.创建了几个实例?

​ 容器之创建了一个实例。

2-2:初始化

​ a.什么是初始化?

​ 容器调用servlet的init方法(该方法只会执行一次)

​ b.GenericServlet已经提供了init方法的实现

​ c.如何实现自己的初始化处理逻辑?

​ 只要重写GenericServlet的init方法(不带有参数的init方法)

​ d.初始化参数

​ 1.配置初始化参数

​ 2.使用servletConfig提供的genInitParpameter方法来读取初始化参数

2-3:就绪(调用servlet方法)

​ 容器收到请求之后调用servlet的service方法来处理。

2-4:销毁

​ genericServlet提供的destory方法在容器删除servlet对象之前会调用destroy方法实现销毁功能。

3.代码演示

3.1整个生命周期
public class OneServlet extends HttpServlet {
	//1.创建servlet实例
	public OneServlet(){
		System.out.println("OneServlet创建了对象");
	}
	
	//2.通过重写GenericServlet的init方法来实现servlet的初始化逻辑
	public void init(){
		System.out.println("OneServlet的初始化");
		//获取局部初始化参数
		String value=getInitParameter("UserName");
		System.out.println(value);
	}
	
	//3.初始化service方法
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("OneServlet执行了service方法");
	}
	
	//4.销毁:通过重写GenericServlet中的destory,实现销毁
	@Override
	public void destroy(){
		System.out.println("OneServlet对象销毁了");
	}
	
	//获取全局的初始化参数
	@Override
	public void init(ServletConfig config) throws ServletException {
		String value=config.getServletContext().getInitParameter("password");
		System.out.println("全局的参数:"+value);
	}
}
3.2创建实例
1.容器启动时创建实例
 	<!--
 		配置启动加载:容器启动之后会立即创建响应的实例,
    	文件的值大于零,值越小,优先级越高(优先被创建实例)
    -->
	<load-on-startup>1</load-on-startup>

当启动容器后:
在这里插入图片描述

2.局部和全局初始化参数
 <!--局部初始化参数-->
    <init-param>
    	<param-name>UserName</param-name>
    	<param-value>admin</param-value>
    </init-param>
	//2.通过重写GenericServlet的init方法来实现servlet的初始化逻辑
	public void init(){
		System.out.println("OneServlet的初始化");
		//获取局部初始化参数
		String value=getInitParameter("UserName");
		System.out.println(value);
	}

局部初始化参数要写在标签里面

<!--全局的初始化参数-->
  <context-param>
  		<param-name>password</param-name>
  		<param-value>123654</param-value>
  </context-param>
	//获取全局的初始化参数
	@Override
	public void init(ServletConfig config) throws ServletException {
		String value=config.getServletContext().getInitParameter("password");
		System.out.println("全局的参数:"+value);
	}

全局初始化参数写在外面

3.就绪(调用servlet方法)
	//3.初始化service方法
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("OneServlet执行了service方法");
	}
4.销毁
	//4.销毁:通过重写GenericServlet中的destory,实现销毁
	@Override
	public void destroy(){
		System.out.println("OneServlet对象销毁了");
	}

当停止容器运行后,会执行此方法,表示该servlet销毁。
在这里插入图片描述

4.总结

Servlet生命周期分为4部分:创建实例->初始化->就绪->销毁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值