Servlet生命周期及运行过程

本文详细介绍了Servlet的概念、工作原理及生命周期流程,包括如何通过容器与组件模型进行扩展,以及Servlet在处理请求和响应过程中的具体步骤。同时解释了Servlet在服务器端的运行过程,包括与浏览器的交互、请求数据包的封装与解析、以及响应数据的生成与发送。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Servlet是什么?

Servletsun公司制订的一种用于扩展web服务器功能的组件规范。

       扩展方式:早期采用CGI(common gateway interface)技术。因采用 cgi程序编写的代码,可移植性差、编程相当复杂。

       现在,采用的是【容器+组件】的方式来扩展。

       【组件:】符合规范,实现特定功能,并且可以部署在容器上的软件模块

       【容器:】符合规范,为组件提供运行环境,并且管理组件的生命周期

       (将组件实例化,调用其方法、销毁组件的过程)的软件程序;

       采用【容器+组件】这种编程模型的优势:容器负责大量的基础服务

       (包括浏览器与服务器之间的网络通信、多线程、参数传递等等)。而组件只需要处理业务逻辑。另外,组件的运行不依赖于特定的容器

2.Servlet生命周期

       1)加载Servlet

       2)实例化(调用类的构造方法)

       3)初始化(调用该类对象的init()方法)

       4)处理请求(调用该类对象的service()doGet()doPost()方法)

       5)销毁对象(调用该类对象的destory()方法)

       注:在整个Servlet生命周期,只创建一个Servlet对象,提供服务,处理请求是以多线程的方式进行的,为了线程安全,一般不要在Servlet类中定义成员变量,避免多个请求共用一个成员变量,而是在方法中定义局部变量。

3.Servlet运行过程

当用户向浏览器地址栏输入:http://ip:port/appname/servleturl-pattern配置

       1)浏览器使用ip:port(端口号)连接服务器

       2)浏览器将请求数据按照http协议封装成一个数据包(请求数据包)发送给服务器

         请求数据包的内容包含了请求资源路径(/helloweb/sayhello?name=zs),另外,

         在请求数据包中,还会包含浏览器自动生成的一些信息。

       3)服务器创建两个对象:请求对象(Request)和响应对象(Response)

         服务器解析请求数据包,将解析之后的数据存放到请求对象里面,方便

         servlet读取请求数据(因为servlet不用解析请求数据包,否则,需要理解http协议)

         请求对象是HttpServletRequest接口的一个实现。

         响应对象是HttpServletResponse接口的一个实现,响应对象用于存放servlet处理的结果。

       4)依据请求资源路径找到相应的servlet配置,通过反射创建servlet实例,

         然后调用其service()方法。在调用service()方法时,会将事先创建好的请求对象(request)

         和响应对象(response)作为参数进行传递。在servlet内部,可以通过request获得请求数据,

         或者通过response设置响应数据。

       5)服务器从response中获取数据,按照http协议打成一个数据包(响应数据包),发送给浏览器。

       6)浏览器会解析响应数据包,取出相应的数据,生成相应的页面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值