首页 > 编程知识 正文

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

时间:2023-05-06 00:38:23 阅读:259458 作者:4269

(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来生成图片验证码的,防止用户进行暴力破解。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。