Servlet 的生命周期与线程安全

本文详细介绍了Servlet的生命周期,包括初始化、请求处理和服务终止等阶段,并探讨了Servlet的线程安全问题及其解决方法。

一、servlet的生命周期

    1. servlet 有种初始化情形:

        a.在servlet容器启动时初始化。在web.xml <servlet> 中配置<load-on-startup>1</load-on-startup>表示在容器启动时初始化。默认没有此置,  

     表示另一种情形。

         b.servlet在第一次被访问时初始化。即创建唯一的servlet实例。(单例多线程下面会说)

       

        初始化包括4个步骤:

         servlet容器价值servlet类,把它的.class文件读入内存 

          servlet容器创建ServletConfig对象。servletConfig对象包含特定的初始化配置信息,如servlet初始化参数,servlet还会是servletConfig与当 前                应用的ServletContext对象关联。    

           servlet容器创建servlet对象

          容器调用servlet对象的init(servletConfig config)方法,servlet创建完成。

 

 

 

     2. 当有请求访问该servlet是,servlet容器就会创建针对于这个请求的servletRequest于servletResponse,然后servlet的service方法被调用。当容器把servlet生成的响应结果发送给客户,容器就会销毁request和response对象。

     3. 容器在销毁该实例前调用servlet的destroy方法(释放servlet所占用的资源,如关闭流和数据库连接),此外还会销毁与servlet对象关联的ServletConfig对象。

 

二、 servlet的线程安全

    1. servlet类只创建一个实例,对于可与客户端的并发访问,它是线程不安全的。

    2. servlet的处理方式是,每次访问时重新起一线程执行service方法。所以要想保证servlet的线程安全,不应该在servlet中定义实例变量。

    3. 当然完全可以通过加锁保证线程安全,但对于成千上万的并发访问,性能下降。

转载于:https://www.cnblogs.com/guoyuqiangf8/archive/2012/09/03/2668468.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值