8:Servlet生命周期-Java Web

目录

  • 8.1 Servlet生命周期
  • 8.2 Servlet生命周期对应的方法
  • 8.3 Servlet的多线程机制

8.1 Servlet生命周期

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

8.2 Servlet生命周期对应的方法

8:Servlet生命周期-Java Web_第1张图片
各个生命周期的作用
• 加载Servlet
• WEB容器负责加载Servlet,当WEB容器启动的时候或者是在第一次使用这个Servlet的时候,容器会负责创建Servlet实例,但是用户必须通过部署描述符(web.xml)指定Servlet的位置(Servlet所在的包.类名称),成功加载之后,WEB容器会通过反射的方式对Servlet进行实例化。• 初始化
• 当一个Servlet被实例化之后,容器将调用init()方法初始化这个对象,初始化的目的是为了让Servlet对象在处理客户端请求前完成一些初始化的工作,例如:建立数据库连接、读取资源文件信息等,如果初始化失败,则此Servlet将被直接卸载。
• 处理服务
• 当有请求提交时,Servlet将调用service()方法(常用的是doGet()或doPost())进行处理,在service()方法中,Servlet可以通过ServletRequest接收客户的请求,也可以利用ServletResponse设置响应信息。
• 销毁
• 当WEB容器关闭或者检测到一个Servlet要从容器中被删除时,会自动调用destroy()方法,以便让该实例释放掉所占用的资源。
• 卸载
• 当一个Servlet调用完destroy()方法后,此实例将等待被垃圾收集器所回收,如果需要再次使用此Servlet的时候,会重新调用init()方法初始化。

如果觉得Servlet生命周期不好理解的话,读者可以按照人的生命周期进行对照,每个人的一生都要经历如下步骤:孕育生命、出生、成长、死亡、销毁。

LifeCycleServlet.java

package com.org;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LifeCycleServlet extends HttpServlet { // 继承HttpServlet
public void init() throws ServletException { // 初始化操作System.out.println("** 1、Servlet初始化 --> init()");
}
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, java.io.IOException { // 处理服务System.out.println("** 2、Servlet服务 --> doGet()、doPost()");
}
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, java.io.IOException { // 处理服务this.doGet(req, resp); // 调用doGet()
}
public void destroy() { // Servlet销毁System.out.println("** 3、Servlet销毁 --> destroy()");
}
}

在web.xml中配置Servlet

<servlet> <!-- 定义servlet -->
<servlet-name>life</servlet-name> <!-- 与servlet-mapping对应--><servlet-class> <!-- 定义包.类名称-->com.org.LifeCycleServlet
</servlet-class>
</servlet>
<servlet-mapping> <!-- 映射路径-->
<servlet-name>life</servlet-name> <!-- 与servlet相对应--><url-pattern>/LifeServlet</url-pattern> <!-- 页面的映射路径--></servlet-mapping>

配置启动选项

<servlet> <!-- 定义servlet -->
<servlet-name>life</servlet-name> <!-- 与servlet-mapping对应 -->
<servlet-class> <!-- 定义包.类名称 -->
org.lxh.servletdemo.LifeCycleServlet
</servlet-class>
<load-on-startup>1</load-on-startup><!-- 自动加载 -->
</servlet>

8.3 Servlet的多线程机制

• Servlet体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。
• 当客户端第一次请求某个Servlet时,Servlet 容器将会根据web.xml配置文件实例化这个Servlet类。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有 多个线程在使用这个实例。• Servlet容器会自动使用线程池等技术来支持系统的运行

你可能感兴趣的:(Java,Web,servlet,java,前端)