栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Servlet学习一(生命周期)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Servlet学习一(生命周期)

文章目录
  • 前言
  • 一、生命周期定义
  • 二、生命周期方法
    • 1.Init()
    • 2.service()
    • 3.doGet()
    • 4.doPost()
    • 5.destory()
  • 三、代码展示


前言

简单了解了Servlet是用来干什么后,我开始了其生命周期的学习,我的学习心得可能有不足之处,还请大佬多多指正。


一、生命周期定义

Servlet生命周期可被定义为从创建直到毁灭的整个过程,即加载类–>实例化(为对象分配空间)–>初始化(init())–>请求处理(service())–>销毁(destroy())。

二、生命周期方法

由于加载阶段无法观察,但是初始化、服务、销毁阶段是可以观察到的。所以接下来对这三个阶段的方法展开描述。

1.Init()

在一个Servlet的生命周期中,init方法只会被执行一次,之后无论用户执行多少次请求,都不会在调用该方法。
其定义如下:

public void init() throws ServletException {
  // 初始化
}

init()方法通常负责简单的创建或者加载一些数据,而这些数据将用于该Servlet的整个生命周期中。

2.service()

当一个客户发出请求时,实际处理工作全部由service方法来完成,它用来处理客户端的请求,并生成格式化的数据返回给客户端。
每一次请求服务器都会开启一个新的线程并执行一次service方法,其根据客户端的请求类型,调用doGet、doPost等方法。
其定义如下:

public void service(ServletRequest request, ServletResponse response) 
      throws ServletException, IOException{
}

注:service() 方法由容器调用,所以我们不用对 其做任何动作,我们只需根据来自客户端的请求类型来重写doGet() 方法或doPost() 方法即可。

3.doGet()

doGet() 方法用来处理get请求,get请求来自于一个url的正常请求,或者来自于一个未指定method的html表单。
其定义如下:

public void doGet(HttpServletRequest request,HttpServletResponse response)
    throws ServletException, IOException {
}
4.doPost()

doPost() 方法处理post请求,post请求来自于一个特别指定了method为post的html表单。
其定义如下:

public void doPost(HttpServletRequest request,HttpServletResponse response)
    throws ServletException, IOException {
}
5.destory()

destroy() 方法只会被调用一次,在Servlet生命周期结束时被调用。调用了destroy()方法后,当前servlet实例将会被标记为回收垃圾,会对servlet实例进行清除处理。
其定义如下:

  public void destroy() {
    // 销毁
  }

三、代码展示
public class LifeServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private int count = 0;
    private int count1 = 0;
    private int count2 = 0;
	public void init() throws ServletException{
		count = 0;
		count1 = 0;
		count2 = 0;
		System.out.println("在init中完成计数器的初始化");
		System.out.println(count);//chaqi
	}
	
	public void destroy() {
		System.out.println("该Servlet共进行"+count1+"次doGet方法");//chaqi
		System.out.println("该Servlet共进行"+count2+"次doPost方法");//chaqi
		System.out.println("Servlet已经释放");
	}
    
    public LifeServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		count++;
		count1++;//chaqi
		out.println("这个Servlet已经被访问了"+count+"次了!");
		System.out.println("该Servlet的doGet方法被执行了一次");
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		count2++;//chaqi
		doGet(request, response);
		System.out.println("该Servlet的doPost方法被执行了一次");
	}

}

运行后日志如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/925211.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号