您的位置:首页 > 其它

Servlet入门介绍第三章——Servlet的生命周期

2016-10-10 19:42 489 查看
之前简单提过Servlet的生命周期,现在详细介绍下。

Servlet 的生命周期可以分为三个阶段:

(1)、初始化阶段(init方法)

(2)、响应客户请求阶段(service方法)

(3)、终止阶段(destroy方法)

首先,Servlet的运行时阶段

(一)、在下列时刻Servlet容器装载Servlet:

(1)Servlet容器启动时自动装载某些Servlet,Load-on-startup设置时值小的优先初始化

(2)在Servlet容器启动后,客户首次向Servlet 发出请求

(3)Servlet的类文件被更新后,重新装载Servlet

(二)、Servlet被装载后,Servlet容器创建一个Servlet 实例并且调 用Servlet 的init()方法进行初始化。在Servlet的整个生命周期中,init方法只会被调用一次。

其次,Servlet的运行时阶段

(一)、对于到达Servlet容器的客户请求,Servlet容器创建特定于这个请求的ServletRequest对象和ServletResponse对象,然后调用Servlet的service()方法。service方法从ServletRequest对象获得客户请求信息、处理该请求,并通过ServletResponse对象向客户返回响应结果。

(二)、当Servlet容器把响应结果发送给了客户,Servlet容器就会销毁ServletRequest和ServletResponse对象。

最后,Servlet的终止阶段

当Web应用被终止,或Servlet容器终止运行,或Servlet容器重新装载Servlet的新实例时,Servlet容器会先调用Servlet的destroy方法。在destroy方法中,可以释放Servlet所占用的资源。

接下来做个测试Servlet生命周期的LifeServlet,具体代码如下:

package com.java.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
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 LifeServlet extends HttpServlet{

private static final long serialVersionUID = -2389496689326872536L;
private int initCount;
private int serviceCount;
private int destroyCount;
private String name;

@Override
public void init(ServletConfig config) throws ServletException {
initCount++;
name = config.getServletName();
System.out.println(name + "初始化次数" + initCount);
}

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html");
serviceCount++;
PrintWriter writer = resp.getWriter();
writer.write(name + "初始化次数:" + initCount + "<br>");
System.out.println(name +"响应次数:" + serviceCount);
writer.write(name + "响应次数:" + serviceCount + "<br>");
writer.write(name + "销毁次数:" + destroyCount + "<br>");
writer.flush();
writer.close();

}

@Override
public void destroy() {
destroyCount++;
System.out.println(name + "销毁次数" + destroyCount);
}
}


配置信息:

<servlet>
<servlet-name>LifeServlet</servlet-name>
<servlet-class>com.java.web.servlet.LifeServlet
</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>LifeServlet</servlet-name>
<url-pattern>/LifeServlet</url-pattern>
</servlet-mapping>


测试结果:





在Tomcat 安装目录下的conf目录下的server.xml中添加



将Servlet16_10_3改为自己相应的项目名即可。添加完后只需随意在LifeServlet中变动下,然后保存,即可重新加载Servlet。

还有其他方法测试生命周期这边不多介绍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐