Servlet的生命周期与详解

   日期:2020-07-08     浏览:88    评论:0    
核心提示:前言周期说明initgetServletConfigservicedestoryinit方法的执行时期周期总结initservicedestory前言Servlet例子与注解配置周期创建web项目,写一个测试ServletDemo1类package com.lingaolu.servlet;import javax.servlet.*;import javax.servlet.annotati...

前言

周期  

说明 

init 

getServletConfig

service

destory

init方法的执行时期 

周期总结 

init 

 service

destory

 

前言

Servlet例子与注解配置

周期  

创建web项目,写一个测试ServletDemo1类

package com.lingaolu.servlet;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;


@WebServlet("/demo1")
public class ServletDemo1 implements Servlet {
    
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init......");
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("service......");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    
    @Override
    public void destroy() {
        System.out.println("destroy......");
    }
}

 

运行访

一直刷新访问,控制台输出

可见init方法只执行一次,而service方法每次访问都执行  

 

 我们关闭项目

控制台输出

 destory方法也执行了一次

说明 

init 

初始化方法,在Servlet被创建是执行,只会执行一次

getServletConfig

获取配置对象,不常用

service

提供服务方法,每一次Servlet被访问是执行,执行多次

destory

摧毁方法,在服务器正常关闭是,执行,执行一次

 

init方法的执行时期 

 我们运行项目,没有有init......输出,说明ServletDemo1还没有被创建,init方法还没有执行,直到我们第一次访问demo1,才执行init放发

那么 ServletDemo1能不能在项目启动的时候被创建呢,加载一下资源,可以,需要配置loadOnStartup

loadOnStartup为负数时,是访问才创建,loadOnStartup大于等于0时,是启动项目就创建

默认为-1,访问才创建

我们启动下项目

 ServletDeme1被创建了,也执行了init方法

周期总结 

init 

  • Servlet创建时执行,
  • 可配置loadOnStartup的值来设置执行时期,loadOnStartup为负数时,是访问才创建,loadOnStartup大于等于0时,是启动项目就创建
  • 只执行一次,可用于相关资源的初始化
  • 因为只执行一次,说明只有一个实例,是单例的,在多用户访问时会存在线程安全问题
  • 线程安全问题解决:不能加锁,会影响性能,所以尽量不要在servlet中定义成员变量,要定义局部变量,这样每个用户进来都是一个新的变量,如果要定义成员变量,也是不能修改这个成员变量。

 service

提供服务方法,每一次Servlet被访问是执行,执行多次

destory

摧毁方法,在服务器正常关闭是,执行,执行一次,用于释放资源 

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服