Servlet生命周期

代码如下:

package web;

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

public class HiServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public HiServlet() {
		System.out.println("实例化HiServlet");
	}
	
	@Override
	public void init(ServletConfig config) throws ServletException {
		super.init(config);
		System.out.println("初始化HiServlet");
	}

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse res) 
			throws ServletException, IOException {
		System.out.println("调用HiServlet处理请求");
	}

	@Override
	public void destroy() {
		super.destroy();
		System.out.println("销毁HiServlet");
	}
	
}
情况下一:默认在第一次访问servlet时实例化

配置文件为:

  <servlet>
    <servlet-name>hi</servlet-name>
    <servlet-class>web.HiServlet</servlet-class
  </servlet>
  <servlet-mapping>
    <servlet-name>hi</servlet-name>
    <url-pattern>/hi</url-pattern>
  </servlet-mapping>
此时启动Tomcat时,由于没有new,所以没有任何的输出,当在浏览器的地址栏输入请求路径:http://localhost:8080/servlet2/hi

这时会有输出,因为实例化new和初始化init()了,new和init()是由服务器自动执行的,其中new调用了对象的默认构造器,输出结果如下:

实例化HiServlet
初始化HiServlet
调用HiServlet处理请求(此过程可以重复多次)
--------------------------------------------------------------

最后关闭服务器时会自动调用对象的destroy()方法

最后输出:销毁HiServlet

总结:1 2 4 步骤只执行一次,而service()方法根据业务需求可以执行多次

----------------------------------------------------------------------------------------------------------------------------------------------------------

情况下二:启动服务器(Tomcat)时自动servlet时实例化

配置文件为:

<servlet>
    <servlet-name>hi</servlet-name>
    <servlet-class>web.HiServlet</servlet-class>
    <!-- 启动时加载此servlet,中间的数字是加载的顺序,可能有多个servlet要加载 -->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>hi</servlet-name>
    <url-pattern>/hi</url-pattern>
  </servlet-mapping>
此时,当启动服务器,会输出如下:

实例化HiServlet
初始化HiServlet

---------------------------------------------
当在浏览器的地址栏输入请求路径:http://localhost:8080/servlet2/hi

再次输出:调用HiServlet处理请求(可以多次)

最后关闭服务器时会自动调用对象的destroy()方法

最后输出:销毁HiServlet

----------------------------------------------

根据不同需求看是否需要启动时就实例化servlet

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荒--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值