Servlet生命周期


张传聪
久笙 2024-01-18 11:52:34 49021 赞同 0 反对 0
分类: 资源 标签: 运维 后端
Servlet生命周期(Java)

一、生命周期:
1.对servlet来说,它的生命周期指的就是从创建直到毁灭的整个过程。

其流程可简化为:

Servlet 初始化后调用 init () 方法。(该方法只在最开始只调用一次);
Servlet 调用 service() 方法来处理客户端的请求。
Servlet 销毁前调用 destroy() 方法。
最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
2.详细流程:

1):初始化阶段

Servlet容器(Tomcat)加载Servlet,加载完后,Servlet容器将创建一个实例,调用init()方法,init()方法只调用一次。

Servlet容器装载Servlet的情况:

A.Servlet容器启动时自动装载某些servlet,实现这个需要在web.xml文件中添加;

B.在Servlet容器启动后,客户首次向Servlet发送请求;

C.Servlet类文件被更新后,重新装载。

2):处理客户端请求阶段:

服务器每收到一个客服端请求,就会产生一个线程去处理请求。Servlet容器会对用户的Servlet请求创建一个特定于请求的ServletRequest和ServletResponse。

3):终止阶段:

当web应用被终止时,或Servlet容器停止运行后,或Servlet重新装载Servlet新的实例时,Servlet容器会调用Servlet的destory()方法。、

二、init()方法:
init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。因此,它是用于一次性初始化,就像 Applet 的 init 方法一样。

Servlet 创建于用户第一次调用对应于该 Servlet 的 URL 时,但是您也可以指定 Servlet 在服务器第一次启动时被加载。

当用户调用一个 Servlet 时,就会创建一个 Servlet 实例,每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或 doPost 方法。init() 方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。

方法定义如下:

public void init() throws ServletException {
  
}
三、service()方法:
service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。

每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。

方法定义如下:

public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException
{
}
四、doPost() 方法和doGet() 方法:
1.doGet():
GET调用用于获取服务器信息,并将其做为响应返回给客户端。当经由Web浏览器或通过HTML、JSP直接访问Servlet的URL时,一般用GET调用。GET调用在URL里显示正传送给SERVLET的数据,这在系统的安全方面可能带来一些问题,比如用户登录,表单里的用户名和密码需要发送到服务器端,若使用Get调用,就会在浏览器的URL中显示用户名和密码。

方法定义如下:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 
}
JSP定义如下:

<form action="/doGet_servlet" method="get">
………
<input type="text" >
………
</form>
2.doPost():
它用于客户端把数据传送到服务器端,也会有副作用。但好处是可以隐藏传送给服务器的任何数据。Post适合发送大量的数据。

方法定义如下:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 
}
JSP定义如下:

<form action="/doPostt_servlet" method="post">
………
<textarea cols="50" rows="10"></textarea>
………
</form>
3.二者的区别:
1):生成方式

get方式有四种:1.直接在URL地址栏中输入URL;

                           2.网页中的超链接;

                           3.form中method为get;

                           4.form中method为空时,默认是get提交。

post只知道有一种:form中method属性为post。

2):数据传输方式

GET:表单数据存放在URL地址后面。所有get方式提交时HTTP中没有消息体。

POST:表单数据存放在HTTP协议的消息体中以实体的方式传送到服务器。

3):服务器获取数据方式

GET方式:服务器采用request.QueryString来获取变量的值。

POST方式:服务器采用request.Form来获取数据。

4):传送的数据量

GET方式:数据量长度有限制,一般不超过2kb。因为是参数传递,且在地址栏中,故数据量有限制。

POST方式:适合大规模的数据传送。因为是以实体的方式传送的。

5):安全性

GET方式:安全性差。因为是直接将数据显示在地址栏中,浏览器有缓冲,可记录用户信息。所以安全性低。

POST方式:安全性高。因为post方式提交数据时是采用的HTTP post机制,是将表单中的字段与值放置在HTTP HEADER内一起传送到ACTION所指的URL中,用户是看不见的。

6):在用户刷新时

GET方式:不会有任何提示。

POST方式:会弹出提示框,问用户是否重新提交。

7):form运行方式

当form框里面的method为get时,执行doGet方法。
当form框里面的method为post时,执行doPost方法。

五、destroy() 方法:
destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。

在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。

方法定义如下:

 public void destroy() {
 }

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
久笙L2
粉丝 0 资源 35 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  129
统信桌面专业版【全盘安装UOS系统】介绍  128
银河麒麟桌面操作系统安装佳能打印机驱动方法  119
银河麒麟桌面操作系统 V10-SP1用户密码修改  108
麒麟系统连接打印机常见问题及解决方法  20
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
麒麟系统连接打印机常见问题及解决方法 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益210.13元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!