servlet的生命周期-java


Servlet的生命周期通过javax.servlet.Servlet接口中的init()、service()和destroy()方法来表示

Servlet的生命周期包含了下面4个阶段:

1.加载和实例化

Servlet容器负责加载和实例化Servlet。当Servlet容器启动或客户端发送一个请求时,Servlet容器会查找内存中是否存在该Servlet实例,若存在,则直接读取该实例响应请求;如果不存在,就创建一个Servlet实例。(服务器第一次被访问时,加载一个Servlet容器,而且只会被加载一次。)

2.初始化

实例化后,Servlet容器将调用Servlet的init()方法进行初始化,初始化的目的是为了让Servlet对象在处理客户端请求前完成一些初始化的工作, 对于每一个Servlet实例,init()方法只被调用一次。 在初始化期间,Servlet实例可以使用容器为它准备的ServletConfig对象从Web应用程序的配置信息(在web.xml中配置)中获取初始化的参数信息。

<servlet>
     <servlet-name>TimeServlet</servlet-name>
     <servlet-class>com.allanlxf.servlet.basic.TimeServlet</servlet-class>
    <init-param>
        <param-name>user</param-name>
        <param-value>username</param-value>
   </init-param>
   <init-param>
       <param-name>blog</param-name>
       <param-value>http://。。。</param-value>
   </init-param>
</servlet>
配置了两个初始化参数user和blog它们的值分别为username和http://。。。, 这样以后要修改用户名和博客的地址不需要修改Servlet代码,只需修改配置文件即可。

在初始化期间,如果发生错误,Servlet实例可以抛出
ServletException异常或者UnavailableException异常来通知容器。

ServletException异常用于指明一般的初始化失败,例如没有找到初始化参数;而

UnavailableException异常用于通知容器该Servlet实例不可用。例如,数据库服务器没有启动,数据库连接无法建立,Servlet就可以抛出

UnavailableException异常向容器指出它暂时或永久不可用。。

3.请求处理

Servlet 调用 service() 方法来处理客户端的请求。

Servlet处理请求的过程:
1.客户端发送请求给服务器。
2.容器根据请求及web.xml判断对应的Servlet是否存在,如果不存在则返回404
3.容器根据请求及web.xml判断对应的Servlet是否已经被实例化,若是相应的Servlet没有被实例化,则容器将会加载相应的Servlet到Java虚拟机并实例化
4.调用实例对象的service()方法,并开启一个新的线程去执行相关处理。调用servce方法,判断是调用doGet方法还是doPost方法
5.业务完成后响应相关的页面发送给客户端。

注意:为了提高效率,Servlet规范要求一个Servlet实例必须能够同时服务于多个客户端请求,即service()方法运行在多线程的环境下,开发者必须保证该方法的线程安全性。

4.服务终止

当Servlet容器关闭时,Servlet实例也随时销毁。其间,Servlet容器会调用Servlet 的destroy()方法去判断该Servlet是否应当被释放(或回收资源)。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值