servlet生命周期

servlet生命周期


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

 
- 初始化阶段 调用init()方法
- 响应客户请求阶段  调用service()方法
- 终止阶段  调用destroy()方法


初始化阶段

servlet采用单例模式懒汉式调用init()方法,在Servlet的生命周期中,仅执行一次init()方法。
init()方法共有两种:

  • 不带参数的构造器
@Override
    public void init() throws ServletException {
            super.init();
    }
  • 带参数的构造器
 @Override
    public void init(ServletConfig config) throws ServletException {

        super.init(config);
    }

常用的为不带参数的构造器,带参数的构造器一般由网站后台管理人员使用,用于网站配置文件的更新。

通过xml改变初始化模式

可通过加入一段XML,来设置初始化使用饿汉式还是懒汉式(是在访问服务器的时候直接初始化,还是在执行操作时初始化)

<load-on-startup>1(内填入正整数,代表设置饿汉式,否则该代码无效)</load-on-startup>

响应客户请求阶段

它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。

Service()方法共有两种:

@Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        // TODO Auto-generated method stub
        super.service(req, res);
    }

只有void service(ServletRequest req,ServletResponse response)方法是由tomcat自动调用,它将接收的客户端请求转交给HttpServlet中的另一个protected void service(HttpServletRequest req,HttpServletResponse res)方法。

@Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        super.service(req, resp);
    }

此保护类型的service方法再把将请求分发给doPost()、doGet()方法进行下一步处理。所以我们完全可以重写受保护的service()方法来代替doPost()和doGet()方法。

其中request(请求)和response(响应)会在下一篇博客讲解。


终止阶段

仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。

destroy()方法标志servlet生命周期的结束。当服务需要关闭时,它调用servlet的destroy()方法。此时,在init()方法中创建的任何资源都应该被清除和释放。如果有打开的数据库连接,应当在此处保存任何在下一次加载时需要用到的永久性信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值