《Servlet生命周期》

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

其流程可简化为:

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

  二.详细流程:

在通过一个URL路径发起对一个Servlet请求的过程中,其本质是调用执行Servlet实例的doXXX()方法。该Servlet实例创建和使用的过程,被称为Servlet的生命周期。整个生命周期包括:实例化,初始化,服务,销毁。

1.实例化:根据Servlet请求的路径(例如:home.do),查找该Servlet的实例。如果实例不存在,则通过调用构造方法,完成Servlet实例的创建。

 

 

连续请求了两次Servlet,但只有第一次才创建了Servlet实例。 

2.初始化:通过该Servlet的实例,调用init()方法,执行初始化的逻辑。

在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象。初始化的目的是为了让Servlet对象在处理客户端请求前完成一些初始化的工作,如建立数据库的连接,获取配置信息等。对于每一个Servlet实例,init()方法只被调用一次。

 

 

3.服务:通过该Servlet的实例,调用service()方法,如果子类没有重写该方法,则调用HttpServlet父类的service()方法,在父类的该方法中进行请求方式的判断,如果是GET请求,则调用doGet方法;如果是POST请求,则调用doPost()方法;

        如果子类重写doXXX()方法,则调用子类重写后的doXXX()方法;

        如果子类没有重写doXXX()方法,则调用父类的doXXX()方法,在父类的方法实现中,返回一个405状态码的错误页面。(405状态码:代表请求的方式服务器不提供支持。)

 

 4.doPost()方法和doGet()方法:

(1)doGet()方法:

GET调用用于获取服务器信息,并将其作为响应返回给客户端。当经由Web浏览器或通过HTML,JSP直接通过访问Servlet的URL时,一般用GET调用。GET调用在URL里显示正传送给Servlet的数据,这在系统的安全方面可能会带来一些问题。比如用户登录,表单里的用户名和密码需要发送到服务器端,若使用Get调用,就会在浏览器的URL中显示用户名和密码。

方法定义如下

 运行

( 2)doPost():

它用于客户端把数据传送到服务器端。好处是可以隐藏传送给服务器的任何数据。

方法定义如下:

 二者的区别:

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

2.网页中的超链接;

3.form中method为get;

4.form中method方法为空时,默认是get;

2:数据传输方式:

GET:get方式提交时HTTP中没有消息体.

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

3.传送的数据量

GET方式:数据长度有限制。

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

4.安全性

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

POST方式:安全性高。字段和值用户看不见。

5.销毁:服务器关闭或重启时,会销毁所有的Servlet实例,会调用Servlet实例的destroy()方法。

在destroy方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收。如果再次需要这个Servlet处理请求,Servlet容器会创建一个新的Servlet实例。

 

  • 11
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值