Servlet:(一)基本概念及生命周期

java 专栏收录该内容
3 篇文章 0 订阅

    现在web开发很少直接全部用Servlet来做,但是了解Servlet仍然是很必要的,可以帮助我们更加了解Java web的基本实现。

    文章有以下部分:

    1.Servlet是什么?有哪些优点?

    2.Servlet的生命周期

    3.实现方法


1.Servlet是什么?有哪些优点?

1.1基本概念

Servlet是什么?
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。

狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

另一个blog上的说法:处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。理解这个的前提是了解一些http协议的东西,并且知道B/S模式(浏览器/服务器)。

    B/S:浏览器/服务器。 浏览器通过网址来访问服务器,比如访问百度,在浏览器中输入www.baidu.com,这个时候浏览器就会显示百度的首页。

小结:Servlet本质上是一个Java接口,可以响应http请求。在B/S模式(浏览器/服务器)下,浏览器向服务器发送请求(request)后,会调用对应的实现类的方法,并且将响应(response)返回给浏览器。1.2优点

总结就一句:高效易用,可移植性好。

 a.高效

      在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。而在Servlet中,每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程)。
在传统CGI中,如果有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了N次;而对于Servlet,处理请求的是N个线程,只需要一份Servlet类代码。在性能优化方面,Servlet也比CGI有着更多的选择,比如缓冲以前的计算结果,保持数据库连接的活动,等等。

   b. 方便

     Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。

   c.功能强大

在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。

   d.可移植性好
     Servlet用Java编写,Servlet API具有完善的标准。因此,为I-Planet Enterprise Server写的Servlet无需任何实质上的改动即可移植到Apache、Microsoft IIS或者WebStar。几乎所有的主流服务器都直接或通过插件支持Servlet。

2.Servlet的生命周期


1.加载Servlet类
类加载器负责加载servlet类。 当Web容器接收到servlet的第一个请求时,将加载servlet类。

2.创建Servlet实例
Web容器在加载servlet类之后创建一个servlet的实例。servlet实例在servlet生命周期中只创建一次。

3.调用init方法

Web容器在创建servlet实例后调用init方法一次。 init方法用于初始化servlet。 它是javax.servlet.Servlet接口的生命周期方法。

4.调用service方法

每当接收到servlet的请求时,Web容器都会调用service方法。servlet容器通过产生多个线程来处理多个请求,每个线程执行servlet的单个实例的service()方法。

如果servlet未初始化,则遵循上述前三个步骤,然后调用service方法。 如果servlet被初始化,它调用service方法。 请注意,servlet仅初始化一次。 

5.调用destroy方法
从服务中删除servlet实例之前,即在停止服务器或取消部署项目时,Web容器调用destroy方法。它使servlet有机会清理所有资源,例如内存,线程等。


这些方法由web容器调用。


3.实现方法

实现方法有三种:

1.实现Servlet接口

2.继承GenericServlet

3. 继承HttpServlet

常用的是第三种。

下一篇会详细的说如何创建一个最简单的Servlet~~






  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值