Servlet框架基础和生命周期(结合源码)、destroy()的思考

本文深入探讨Servlet的生命周期,包括加载、初始化(init()方法)、响应客户请求(service方法)和终止(destroy()方法)。通过源码分析,揭示Servlet在Tomcat中的工作原理,强调Servlet并非在destroy()方法调用后立即销毁,而是由Tomcat管理其生命周期。同时,文章通过示例展示了Servlet的生命周期过程。
摘要由CSDN通过智能技术生成

         前言

                 Servlet是一个java编写的程序,此程序是在服务器端运行的,是按照Servlet规范编写的一个

             java类。Servlet是处理客户端的请求,并将处理结果以响应的方式返回给客户端。Servlet框架

             是怎样的呢?它的生命周期又是什么情况呢?这是本文需要探求的。

         Servlet框架

                 网上下载Servlet源码,解压之后发现其由两个包组成:

                         1、javax.servlet

                         2、javax.servlet.http

            javax.servlet

                  此包中定义了所有Servlet类都必须实现的接口或类。

                  接口定义:

                  ServletConfig接口---在初始化过程中由Servlet容器(Tomcat调用)

                  ServletContext接口---定义Servlet用于获取容器信息的方法

                  ServletRequest接口---向服务器请求信息

                  ServletResponse接口 ---响应客户端请求

                  Servlet接口---定义所有的Servlet必须实现的方法

                  类定义:

                  ServletInputStream类 --- 用于从客户端读取二进制数据

                  ServletOutputStream类 ---用于将二进制数据写入到客户端

                  GenricServlet--- 抽象类,定义一个通用的,独立于底层协议的servlet。

            java.servlet.http

                  此包中定义了使用HTTP通信协议的所有Servlet类应该实现的类、接口。

                  接口定义:

                   HttpServletRequest接口 --- 封装http请求

                   HttpServletResponse接口 --- 封装http响应

                   HttpSession接口 --- 用于表示客户端存储有关客户的信息

                   HttpSessionAttributeListener接口---实现这个监听接口,当用户获取Session的属性列表发生

                                                             改变的时候得到通知。

                   类的定义:

                   HttpServlet类 --- 扩展了GenericServlet的抽象类

                   Cookie类 --- 创建一个Cookie,Cookie技术,用户存储服务器发送给客户端的信息。

               通过阅读Servlet框架源码,其主要的框架结构如下图:

              

             Servlet工作过程

                        通过上述Servlet框架的了解我们可以初步描述一下Servlet在Tomcat容器中是如何工作的。

                   来看下面的时序图:

                

                    1、Web Client 向Servlet容器(Tomcat)发出Http请求

                    2、Servlet容器接收Web Client的请求


                    3、Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中

                    4、Servlet容器创建一个HttpResponse对象

                    5、Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse

                        对象作为参数传给 HttpServlet对象

                   6、HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息

                   7、HttpServlet调用HttpResponse对象的有关方法,生成响应数据

                   8、Servlet容器把HttpServlet的响应结果传给Web Client

                Tomcat和HttpServlet是如何进行交互的呢?从源码中我们可以得到

                

            Servlet生命周期

                       在Servlet框架中所有的Servlet类都必须实现Servlet这个接口。其中定义了三个方法:

                            1、init方法:负责初始化Servlet对象。

                            2、service方法:用于响应客户端的请求

                            3、destroy:销毁Servlet对象,释放占用的资源。

                       Servlet生命周期四个阶段:

                             ●  加载阶段:加载并实例化(创建Servlet实例)

                             ●  初始化阶段:调用init()方法

                             ●  响应客户请求阶段:调用service()方法,doGet、doPost

                             ●  终止阶段:调用destroy()方法

                           

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值