04---servlet04(servlet生命周期)

生命周期:是一个程序的存在周期,Servlet由于是受到容器的管理,所以容器来决定其生命周期。

Servlet生命周期:
	Servlet程序是运行在服务器端的一段java程序,其生命周期将受到WEB容器的控制,生命周期
	包括:加载程序、初始化、服务、销毁、卸载五个部分;

Servlet生命周期对应的方法:
	·public void init() throws ServletException-------Servlet 初始化时调用
	·public void init(ServletConfig config)
				throws ServletException---Servlet初始化时调用,可以通过
								ServletConfig读取配置信息;
	·public abstract void service(ServletRequest req,
		ServletResponse res)throws ServletException,IOException---Servlet服务一般不

会直接
									   覆盖此方法,而是

使用doGet()和doPost();
									   如果覆写了service

方法就不用覆写doGet和doPost();
	·public void destroy()---------------Servlet 销毁时调用;

1、编写一测试生命周期的程序
		package com.lid.servlet;
		import java.io.*;
		import javax.servlet.*;
		import javax.servlet.http.*;

		public class LifeCycleServlet extends HttpServlet{
			//初始话方法
			public void init() throws ServletException{
				System.out.println("**1、Servlet初始化--->init()");
				}
			public void doGet(HttpServletRequest req,HttpServletResponse res) 

throws ServletException,IOException{
					System.out.println("**2、Servlet服务--->doGet()、

doPost()");
				}
			public void doPost(HttpServletRequest req,HttpServletResponse res) 

throws ServletException,IOException{
					this.doGet(req,res);
				}
			public void destroy(){
					System.out.println("**3、Servlet销毁--->destroy()");
					try{
						Thread.sleep(3000);
						}
					catch(Exception e){
						}
				}
			}
	以上编写了一个完整的Servlet生命周期的测试程序;
2、编译程序;
3、下面修改web.xml 配置servlet的映射路径
	<servlet>
		<servlet-name>life</servlet-name>
		<servlet-class>com.lid.servlet.LifeCycleServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>life</servlet-name>
		<url-pattern>/LifeCycleServlet</url-pattern>
	</servlet-mapping>
4、启动web服务器:注意此时tomcat中没有任何输出;
5、在浏览器中输入:http://localhost/lid/LifeCycleServlet,此时将输出:**1、Servlet初始化---

>init()
								     **2、Servlet服务---

>doGet()、doPost()

在正常情况下服务器启动是将servlet加载,在servlet第一次被运行(访问)时servlet被初始化;
以后每次访问则只执行servlet服务,因为servlet已经被创建;
关于销毁有两种情况:
	·容器关闭
	·一个servlet长时间不适用
	·还有一种开法中的销毁,执行了reload操作;

但是需要注意如果在程序中覆写了services()方法的话,则doGet()和doPost()就没有用了;
	package com.lid.servlet;
	import java.io.*;
	import javax.servlet.*;
	import javax.servlet.http.*;

	public class LifeCycleServlet extends HttpServlet{
		//初始话方法
		public void init() throws ServletException{
			System.out.println("**1、Servlet初始化--->init()");
			}
		public void doGet(HttpServletRequest req,HttpServletResponse res) throws 

ServletException,IOException{
				System.out.println("**2、Servlet服务--->doGet()、doPost()");
			}
		public void doPost(HttpServletRequest req,HttpServletResponse res) throws 

ServletException,IOException{
				this.doGet(req,res);
			}
		public void service(HttpServletRequest req,HttpServletResponse res) throws 

ServletException,IOException{
				System.out.println("***********服务**************");
			}
		public void destroy(){
				System.out.println("**3、Servlet销毁--->destroy()");
				try{
					Thread.sleep(3000);
					}
				catch(Exception e){
					}
			}
		}
		servlet都是继承HttpServlet类而言,里面的service()方法的主要功能是区分是get请

求还post请求,
	如果是get请求则执行doGet,如果是post请求则执行doPost方法。但是一旦service方法被写,

则就不在
	具有此功能了;
		实际上,这种做法更像是一种共涉及的模板操作,因为只需要按照它的要求将方法覆写

完成,
	那么就可以实现相应的功能;
		当然如果想服务器启动的时候servlet就可以直接被初始化的话,则可以在web.xml中增

加一个
	相应的参数,表示的是当容器启动的时候就进行初始化;
			<servlet>
		 		<servlet-name>life</servlet-name>
		 		<servlet-class>com.lid.servlet.LifeCycleServlet</servlet-

class>
		 		<load-on-startup>1</load-on-startup>
	 		</servlet>
		即加上<load-on-startup>1</load-on-startup>其中的数字表示启动的顺序;
	 	


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

bzuld

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

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

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

打赏作者

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

抵扣说明:

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

余额充值