没有合适的资源?快使用搜索试试~ 我知道了~
servlet概述以及API中文版及学习笔记综合
需积分: 9 7 下载量 92 浏览量
2011-09-03
10:42:22
上传
评论
收藏 191KB DOC 举报
温馨提示
试读
28页
servlet概述以及API中文版及学习笔记综合,介绍详细,方便大家学习
资源推荐
资源详情
资源评论
servlet 概述
Servlet 是一种独立于平台和协议的服务器端的 Java
应用程序,可以生成动态的 Web
页
面。 它担当 Web 浏览器或其他 HTTP
客户程序发出请求,与 HTTP 服务器上的数据库或应
用程序之间的中间层。
Servlet 是位于 Web 服务器内部的服务器端的 Java 应用程序,与传统的从命令行启动的
Java 应用程序不同,Servlet 由 Web 服务器进行加载,该 Web 服务器必须包含支持 Servlet
的 Java 虚拟机。
servlet 由来
servlet 是在服务器上运行的小程序。这个词是在 Java applet 的环境中创造的,Java
applet 是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得
到为用户进行运算或者根据用户互作用定位图形等服务。
服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公
共网关接口 (CGI)应用程序完成的。然而,在服务器上运行 Java,这种程序可使用 Java
编程语言实现。在通信量大的服务器上,Java servlet 的优点在于它们的执行速度更快于
CGI 程序。各个用户请求被激活成单个程序中的一个线程,而创建单独的程序,这意味着
各个请求的系统开销比 较小。
Java Servlet 与 Applet 的比较
相似之处:
* 它们不是独立的应用程序,没有 main()方法。
* 它们不是由用户或程序员调用,而是由另外一个应用程序(容器)调用。
* 它们都有一个生存周期,包含 init()和 destroy()方法。
不同之处:
* Applet
具有很好的图形界面(AWT),与浏览器一起,在客户端运行。
* Servlet 则没有图形界面,运行在服务器端。
与传统 CGI 的比较
Java Servlet 与 CGI(Common Gateway Interface) 的比较:
与传统的 CGI 和许多其他类似 CGI 的技术相比,Java Servlet 具有更高的效率,更容易
使用,功能更强大,具有更好的可移植性,更节省投资。在未来的技术发展过程中
Servlet 有可能彻底取代 CGI。
在传统的 CGI
中,每个请求都要启动一个新的进程,如果 CGI 程序本身的执行时间较
短,启动进程所需要的开销很可能反而超过实际执行时间。而在 Servlet 中,每个请求由一
个轻量级的 Java 线程处理(而不是重量级的操作系统进程)。
在传统 CGI 中,如果有 N 个并发的对同一 CGI 程序的请求,则该 CGI 程序的代码在内
存中重复装载了 N 次;而对于 Servlet,处理请求的是 N 个线程,只需要一份 Servlet 类代码。
在性能优化方面,Servlet 也比 CGI 有着更多的选择。
* 方便
Servlet 提供了大量的实用工具例程,例如自动地解析和解码 HTML 表单数据、读取和
设置 HTTP 头、处理 Cookie、跟踪会话状态等。
* 功能强大
在 Servlet 中,许多使用传统 CGI 程序很难完成的任务都可以轻松地完成。例如 ,
Servlet 能够直接和 Web 服务器交互,而普通的 CGI 程序不能。Servlet 还能够在各个程序之
间共享数据,使得数据库连接池之类的功能很容易实现。
* 可移植性好
Servlet 用 Java 编写,Servlet API
具有完善的标准。因此,为 IPlanet Enterprise Server
写的 Servlet 无需任何实质上的改动即可移植到 Apache、Microsoft IIS 或者 WebStar。几乎
所有的主流服务器都直接或通过插件支持 Servlet。
* 节省投资
不仅有许多廉价甚至免费的 Web 服务器可供个人或小规模网站使用,而且对于现有的
服务器,如果它不支持 Servlet 的话,要加上这部分功能也往往是免费的(或只需要极少的
投资)。
Java Servlet 与 JSP 的比较
JavaServer Pages(JSP) 是一种实现普通静态 HTML 和动态 HTML 混合编码的技术,JSP
并没有增加任何本质上不能用 Servlet 实现的功能。但是,在 JSP 中编写静态 HTML 更加方
便,不必再用 println 语句来输出每一行 HTML 代码。更重要的是,借助内容和外观的分离,
页面制作中不同性质的任务可以方便地分开: 比如,由页面设计者进行 HTML 设计,同时
留出供 Servlet 程序员插入动态内容的空间。
HTTP Servlet 应用编程接口
HTTP Servlet 使用一个 HTML 表格来发送和接收数据。要创建一个 HTTP Servlet,请
扩展 HttpServlet 类, 该类是用专门的方法来处理 HTML 表格的 GenericServlet 的一个子类。
HTML 表单是由 <FORM> 和 </FORM> 标记定义的。表单中典型地包含输入字段(如文本
输入字段、复选框、单选按钮和选择列表)和用于提交数据的按钮。当提交信息时,它们还
指 定 服 务 器 应 执 行 哪 一 个 Servlet( 或 其 它 的 程 序 ) 。 HttpServlet 类 包 含
init()、destroy()、service() 等方法。其中 init() 和 destroy() 方法是继承的。
(1) init() 方法
在 Servlet 的生命期中,仅执行一次 init() 方法。它是在服务器装入 Servlet 时执行的。
可以配置服务器,以在启动服务器或客户机首次访问 Servlet 时装入 Servlet。 无论有多少
客户机访问 Servlet,都不会重复执行 init() 。
缺省的 init() 方法通常是符合要求的,但也可以用定制 init() 方法来覆盖它,典型的是
管理服务器端资源。 例如,可能编写一个定制 init() 来只用于一次装入 GIF 图像,改进
Servlet 返回 GIF 图像和含有多个客户机请求的性能。另一个示例是初始化数据库连接。缺
省的 init() 方法设置了 Servlet 的初始化参数,并用它的 ServletConfig 对象参数来启动配置,
因此所有覆盖 init() 方法的 Servlet 应调用 super.init() 以确保仍然执行这些任务。在调用
service() 方法之前,应确保已完成了 init() 方法。
(2) service() 方法
service() 方法是 Servlet 的核心。每当一个客户请求一个 HttpServlet 对象,该对象的
service() 方法就要被调用,而且传递给这个方法一个"请求"(ServletRequest)对象和一个"响
应"(ServletResponse)对象作为参数。 在 HttpServlet 中已存在 service() 方法。缺省的服务功
能是调用与 HTTP 请求的方法相应的 do 功能。例如, 如果 HTTP 请求方法为 GET,则缺
省情况下就调用 doGet() 。Servlet 应该为 Servlet 支持的 HTTP 方法覆盖 do 功能。因为
HttpServlet.service() 方法会检查请求方法是否调用了适当的处理方法,不必要覆盖 service()
方法。只需覆盖相应的 do 方法就可以了。
Servlet 的响应可以是下列几种类型:
一个输出流,浏览器根据它的内容类型(如 text/HTML)进行解释。
一个 HTTP 错误响应, 重定向到另一个 URL、servlet、JSP。
(3)doGet()方法
当 一个客 户通过 HTML 表 单发出 一 个 HTTP GET 请求 或直接 请 求一 个 URL 时 ,
doGet()方法被调用。与 GET 请求相关的参数添加到 URL 的后面,并与这个请求一起发送。
当不会修改服务器端的数据时,应该使用 doGet()方法。
(4)doPost()方法
当一个客户通过 HTML 表单发出一个 HTTP POST 请求时,doPost()方法被调用。与
POST 请求相关的参数作为一个单独的 HTTP 请求从浏览器发送到服务器。当需要修改服
务器端的数据时,应该使用 doPost()方法。
(5) destroy() 方法
destroy() 方法仅执行一次,即在服务器停止且卸装 Servlet 时执行该方法。典型的,将
Servlet 作为服务器进程的一部分来关闭。缺省的 destroy() 方法通常是符合要求的,但也可
以覆盖它,典型的是管理服务器端资源。例如,如果 Servlet 在运行时会累计统计数据,则
可以编写一个 destroy() 方法,该方法用于在未装入 Servlet 时将统计数字保存在文件中。另
一个示例是关闭数据库连接。
当服务器卸装 Servlet 时,将在所有 service() 方法调用完成后,或在指定的时间间隔过
后调用 destroy() 方法。一个 Servlet 在运行 service() 方法时可能会产生其它的线程,因此请
确认在调用 destroy() 方法时,这些线程已终止或完成。
(6) GetServletConfig()方法
GetServletConfig()方法返回一个 ServletConfig 对象,该对象用来返回初始化参数和
ServletContext。ServletContext 接口提供有关 servlet 的环境信息。
(7) GetServletInfo()方法
GetServletInfo()方法是一个可选的方法,它提供有关 servlet 的信息,如作者、版本、
版权。
当 服务器 调用 sevlet 的 Service() 、doGet() 和 doPost() 这 三个方 法时, 均 需要 " 请
求"和"响应"对象作为参数。"请求"对象提供有关请求的信息,而"响应"对象提供了一个将
响应信息返回给浏览器的一个通信途径。
javax.servlet 软 件 包 中 的 相 关 类 为 ServletResponse 和 ServletRequest , 而
javax.servlet.http 软件包中的相关类为 HttpServletRequest 和 HttpServletResponse。Servlet 通
过这些对象与服务器通信并最终与客户机通信。Servlet 能通过调用"请求"对象的方法获知
客户机环境,服务器环境的信息和所有由客户机提供的信息。Servlet 可以调用"响应"对象
的方法发送响应,该响应是准备发回客户机的。
Servlet API 中文版
基本类和接口
一、javax.servlet.Servlet 接口
servlet 抽象集是 javax.servlet.Servlet 接口,它规定了必须由 Servlet 类实现由 servlet 引擎识
别和管理的方法集。
Servlet 接口的基本目标是提供生命期方法 init()、service()和 destroy()方法。
servlet 接口中的方法
void init(ServletConfit config)throws ServletException 在 servlet 被载入后和实施服务前由
servlet 引擎进行?次性调用。如果 init()产生溢出 UnavailableException,则 servle 退出服务。
ServletConfig getServletConfig() 返回传递到 servlet 的 init()方法的 ServletConfig 对象
void service(ServletRequest request, ServletResponse response)throws
ServletException,IOException 处理 request 对象中描述的请求,使用 response 对象返回请
求结果
String getServletInfo() 返回描述 servlet 的一个字符串
void destory() 当 servlet 将要卸载时由 servlet 引擎调用
二、javax.servlet.GenericServlet 类(协议无关版本)
GenericServlet 是一种与协议无关的 servlet,是一种跟本不对请求提供服务的 servlet,而是
简单地从 init()方法启动后台线程并在 destory()中杀死。它可以用于模拟操作系统的端口监
控进程。
servlet API 提供了 Servlet 接口的直接实现,称为 GenericServlet。此类提供除了 service()方
法外所有接口中方法的缺省实现。这意味着通过简单地扩展 GenericServlte 可以编写一个基
本的 servlet。
除了 Servlet 接口外,GenericServlet 也实现了 ServletConfig 接口,处理初始化参数和 servlet
上下文,提供对授权传递到 init()方法中的 ServletConfig 对象的方法。
GenericServlet 类中的方法
void destory() 编飞组成单词“destory”的一个注册入口
String getInitParameter(String name) 返回具 有指定 名 称的 初 始化 参 数值。 通 过凋 用
config.getInitParameter(name)实现。
Enumeration getInitParameterNames() 返回此 serv]et 已编码的所有初始化参数的?个枚举类
型值。调用 config.getInitParameterNames()获得列表。如果未提供初始化参数,则返回?个空
的枚举类型值(但不是 null)
ServletConfig getServletConfig() 返回传递到 init()方法的 ServletConfig 对象
ServletContext getServletContext() 返回在 config 对象中引用的 ServletContext
String getServletInfo() 返回空字符串
void init(ServletConfig config)throws ServletException 在一实例变量中保存 config 对象。编
写组成单词“init”的注册入口,然后调用方法 init()
void init()throws ServletException 可以被跳过以处理 servlet 初始化.在 config 对象被保存后
init(ServletConfig config)的结尾处自动被调用.servlet 作者经常会忘记调用 super.init(config)
void log(String msg) 编写注册 servlet 的入口.为此调用 servlet 上下文的 log()方法.servlet 的
名字被加到消息文本的开头。
void log(String msg,Throwable t) 编写一个入口和 servlet 注册的栈轨迹。此方法也是
ServletContext 中相应方法的一个副本。
abstract void service(Request request,Response response)throws ServletException,IOException
由 servlet 引擎调用为请求对象描述的请求提供服务。这是 GenericServlet 中唯一的抽象方法。
因此它也是唯一必须被子类所覆盖的方法。
String getServletName() 返回在 Web 应用发布描述器(web.xml)中指定的 servlet 的名字。
三、javax.servlet.http.HttpServlet 类(HTTP 版本)
虽然 servlet API 允许扩展到其它协议,但最终所有的 servlet 均在 Web 环境下实施操作,只
有 几 种 servlet 直 接 扩 展 了 GenericServlet 。 对 servlet 更 一 般 的 是 扩 展 其 HTTP 子 类
HttpServlet。
HttpServlet 类 通 过 调 用 指 定 到 HTTP 请 求 方 法 的 方 法 实 现 service() , 亦 即 对
DELETE 、 HEAD 、 GET 、 OPTIONS 、 POST 、 PUT 和 TRACE , 分 别 调 用
doDelete()、doHead()、doGet()、doOptions()、doPost()、doPut()和 doTrace()方法,将请求和
响应对象置入其 HTTP 指定子类。
HttpServlet 类中的方法
Void doGet(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException 由 servlet 引擎调用用处理一个 HTTP GET 请求。输入参数、
HTTP 头标和输入流可从 request 对象、response 头标和 response 对象的输出流中获得。
Void doPost(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException 由 servlet 引擎调用用处理一个 HTTP POST 请求。输入参数、
HTTP 头标和输入流可从 request 对象、response 头标和 response 对象的输出流中获得。
Void doPut(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException 由 servlet 引擎调用用处理一个 HTTP PUT 请求。本方法中
请求 URI 指出被载入的文件位置。
Void doDelete(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException 由 servlet 引擎调用用处理一个 HTTP DELETE 请求。请求
URI 指出资源被删除。
Void doOptions(HttpServletRequest request,HttpServletResponse response)throws
ServletException,IOException 由 servlet 引擎调用用处理一个 HTTP OPTIONS 请求。返回
剩余27页未读,继续阅读
资源评论
EvelynHouseba
- 粉丝: 10
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功