servlet生命周期过程,servlet 的生命周期

2022年 12月 20日 发表评论
腾讯云正在大促:点击直达 阿里云超级红包:点击领取
免费/便宜/高性价比服务器汇总入口(已更新):点击这里了解

咸鱼优惠网

(1)init()方法:

在Servlet生命周期中,仅执行一次init()方法,他是在服务器装入Servlet时执行的,可以配置服务器,以在服务器或客户端首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,init()方法都只会执行一次(单例)。

(2)service()方法:

它是Servlet.的核心,每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”( ServletReguest)对象和一个“响应”(ServletResponse) 对象作为参数。在HttpServlet.中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。

(3)destory()方法:

仅执行一次,在服务器端停止且卸载Servlet时执行该方法,有点类似于C++的delete方法。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。

(4)如何解决servlet线程安全:

第一种:继承SingleThreadModel但是这样每次都会创建一个新的servlet实例,但这样消耗服务器的内存,降低了性能,并且这个接口现在已经过时了,不推荐使用。
第二种:我们尽量避免使用全局变量。(推荐使用)
第三种:我们可以通过使用ThreadLocal,内部结构是一个Map结构,用当前线程作为key,他会创建多个副本。get, set方法
第四种:我们当然还可以来加锁,进行解决线程问题。而且我还知道,向我们这种常用的MVC框架,strutsl, springMVC 这些MVC框架,都是基于serylet. 发展而来的,就比如strutsl的核心总控制器是ActionServlet,而springVVC的前端总控制器是dispatchServleth在项目中我们曾经用servlet来生成图片验证码的,防止用户进行暴力破解。

07778064

小咸鱼

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: