Servlet总结(1)--Servlet的生命周期
2016-12-09 20:17
417 查看
一、Servlet简介
Servlet是sun公司提供的一门用于开发动态web资源的技术。
主要过程
1、编写一个JAVA类,实现Servlet接口。
2、把项目部署到服务器上
二、Servlet的生命周期
1、servlet接口的主要方法
1)init()方法
初始化方法,在一个servlet创建时调用一次。何时为初始化?也就是Servlet容器装转Servlet时,进行的初始化,在以下情况下,Servlet容器会装载Servlet:
a、web.xml文件中配置了一下信息:
代表Servlet容器在启动后自动加载Servlet,这个时候会调用init()方法。
b、Servlet容器启动后,客户端第一次调用Servlet时,由于Servlet还没被加载,所以需要先进行加载,则调用init()方法
c、Servlet更新之后重新加载,也会调用init()方法
在整个Servlet的生命周期里,init()方法只被调用一次!!!!!!!!!!!!!!
2)service()方法
servlet创建之后调用该方法,用于响应客户端的请求,在此基础上,更具客户端调用方法的不同,分别还有doPost()和doGet()方法,通常,我们所有的响应程序都会写在改方法里面。
这里需要注意的是,Servlet接口是没有这些方法的,这些方法都是在HttpServlet接口中定义的。
这几个接口的关系:
新建的Servlet类,继承于HttpServlet
HttpServlet—-继承自—->GenericServlet—-继承自—->Servlet
GenericServlet和Servlet接口都不特定于任何协议,而HttpServlet特定于HTTP协议,所以,在HttpServlet实现service()方法时,将ServletRequest和ServletResponse对象强制转型为HttpRequest和HttpResponse对象。
客户端发送请求到Servlet之后,Servlet会创建两个对象ServletRequest和ServletResponse对象,我们可以通过ServletRequest对象获取到客户端传过来的参数。这些参数存放在一个HashTable当中,HashTable的定义为
通过键值获取value值。
3)destroy()方法
一个servlet结束时,调用该方法,何时为结束?当web应用终止时,或者Servlet容器终止运行,或Servlet容器重新装载Servlet新实例,这些情况下,会调用该方法,释放servlet中的所有资源。
三、实例
通过代码输出到控制台可以清楚的看到servlet的生命周期
控制台信息:
*构造方法:0
init:1
service:2
doGet:3*****
当停止tomcat服务时,相当于web应用终止,控制台:
destroy4
综上:
Servlet的生命周期
1、被加载时,创建一个servlet对象
2、调用初始化方法Init()
3、请求响应阶段调用service()方法
4、web应用终止时,调用destroy()方法。
Servlet是sun公司提供的一门用于开发动态web资源的技术。
主要过程
1、编写一个JAVA类,实现Servlet接口。
2、把项目部署到服务器上
二、Servlet的生命周期
1、servlet接口的主要方法
1)init()方法
初始化方法,在一个servlet创建时调用一次。何时为初始化?也就是Servlet容器装转Servlet时,进行的初始化,在以下情况下,Servlet容器会装载Servlet:
a、web.xml文件中配置了一下信息:
<loadon-startup>1</loadon-startup>
代表Servlet容器在启动后自动加载Servlet,这个时候会调用init()方法。
b、Servlet容器启动后,客户端第一次调用Servlet时,由于Servlet还没被加载,所以需要先进行加载,则调用init()方法
c、Servlet更新之后重新加载,也会调用init()方法
在整个Servlet的生命周期里,init()方法只被调用一次!!!!!!!!!!!!!!
2)service()方法
servlet创建之后调用该方法,用于响应客户端的请求,在此基础上,更具客户端调用方法的不同,分别还有doPost()和doGet()方法,通常,我们所有的响应程序都会写在改方法里面。
这里需要注意的是,Servlet接口是没有这些方法的,这些方法都是在HttpServlet接口中定义的。
这几个接口的关系:
新建的Servlet类,继承于HttpServlet
HttpServlet—-继承自—->GenericServlet—-继承自—->Servlet
GenericServlet和Servlet接口都不特定于任何协议,而HttpServlet特定于HTTP协议,所以,在HttpServlet实现service()方法时,将ServletRequest和ServletResponse对象强制转型为HttpRequest和HttpResponse对象。
客户端发送请求到Servlet之后,Servlet会创建两个对象ServletRequest和ServletResponse对象,我们可以通过ServletRequest对象获取到客户端传过来的参数。这些参数存放在一个HashTable当中,HashTable的定义为
private Hashtable<String String[]> paramHashStringArray = new Hashtable<String String[]>();
通过键值获取value值。
3)destroy()方法
一个servlet结束时,调用该方法,何时为结束?当web应用终止时,或者Servlet容器终止运行,或Servlet容器重新装载Servlet新实例,这些情况下,会调用该方法,释放servlet中的所有资源。
三、实例
通过代码输出到控制台可以清楚的看到servlet的生命周期
package day.servlet01; import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; 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 ServletDemo01 extends HttpServlet { static int i = 0; private ServletConfig config; /** * Constructor of the object. */ public ServletDemo01() { super(); sop("构造方法:"+i++); } /** * Destruction of the servlet. <br> */ public void destroy() { sop("destroy"+i++); super.destroy(); // Just puts "destroy" string in log // Put your code here } /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { sop("doGet:"+i++); response.setContentType("text/html"); PrintWriter out = response.getWriter(); /* * 获取初始化参数 */ String paramUser = this.config.getInitParameter("name"); out.print(paramUser); out.print("<hr>"); //获取所有初始化参数 Enumeration<String> e = config.getInitParameterNames(); while(e.hasMoreElements()){ String name = e.nextElement(); String value = config.getInitParameter(name); out.print(name + "=" + value+ "<br>"); } out.print("<hr>"); out.close(); } /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { sop("doPost:"+i++); doGet(request, response); } /** * Initialization of the servlet. <br> * * @throws ServletException if an error occurs */ public void init(ServletConfig config) throws ServletException { // Put your code here this.config = config;//获取初始化参数 sop("init:"+i++); } @Override protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { sop("service:"+i++); // TODO Auto-generated method stub super.service(arg0, arg1); } public static void sop(Object o){ System.out.println(o); } }
控制台信息:
*构造方法:0
init:1
service:2
doGet:3*****
当停止tomcat服务时,相当于web应用终止,控制台:
destroy4
综上:
Servlet的生命周期
1、被加载时,创建一个servlet对象
2、调用初始化方法Init()
3、请求响应阶段调用service()方法
4、web应用终止时,调用destroy()方法。
相关文章推荐
- Servlet生命周期总结
- Java Web学习总结(9)——servlet和Jsp生命周期解读
- servlet生命周期的好的总结文章
- Java Web学习总结(9)——servlet和Jsp生命周期解读
- Java Web学习总结(9)——servlet和Jsp生命周期解读
- Servlet学习总结(3)----Servlet的生命周期
- Servlet的部署,生命周期---昨天--4月20号学习总结
- Servlet第三章知识点总结——Servlet生命周期
- javaweb学习总结二十一(servlet开发入门、servlet生命周期以及调用过程)
- Servlet的生命周期及其调用
- JSP/Servlet 中include方法的总结
- 通俗易懂Tomcat中Servlet的生命周期
- servlet规范定义的Servlet生命周期 - Java - J2EE - Servlet/JSP - linux宝库
- servlet配置总结
- Servlet 的生命周期是什么,和cgi的区别是什么
- JSP/Servlet: JSP 生命周期
- JSP/Servlet 常识总结
- Servlet简介及生命周期
- servlet的生命周期
- Servlet生命周期