Java Servlet 开发工PJSDKQ提供了多个软g包,在编?Servlet 旉要用到这些Y件包。其中包括两个用于所?Servlet 的基本Y件包Qjavax.servlet ?javax.servlet.http。可从sun公司的Web站点下蝲 Java Servlet 开发工兗?下面主要介绍javax.servlet.http提供的HTTP Servlet应用~程接口?
HTTP Servlet 使用一?HTML 表格来发送和接收数据。要创徏一?HTTP ServletQ请扩展 HttpServlet c, 该类是用专门的方法来处理 HTML 表格?GenericServlet 的一个子cR?HTML 表单是由 < FORM > ?< /FORM > 标记定义的。表单中典型地包含输入字D(如文本输入字Dc复选框、单选按钮和选择列表Q和用于提交数据的按钮。当提交信息Ӟ它们q指定服务器应执行哪一个ServletQ或其它的程序)?HttpServlet cd?init()、destroy()、service() {方法。其?init() ?destroy() Ҏ是承的?
init() Ҏ
?Servlet 的生命期中,仅执行一?init() Ҏ。它是在服务器装?Servlet 时执行的?可以配置服务器,以在启动服务器或客户机首ơ访?Servlet 时装?Servlet?无论有多客h讉K ServletQ都不会重复执行 init() ?
~省?init() Ҏ通常是符合要求的Q但也可以用定制 init() Ҏ来覆盖它Q典型的是管理服务器端资源?例如Q可能编写一个定?init() 来只用于一ơ装?GIF 囑փQ改q?Servlet q回 GIF 囑փ和含有多个客hh的性能。另一个示例是初始化数据库q接。缺省的 init() Ҏ讄?Servlet 的初始化参数Qƈ用它?ServletConfig 对象参数来启动配|, 因此所有覆?init() Ҏ?Servlet 应调?super.init() 以确保仍然执行这些Q务。在调用 service() Ҏ之前Q应保已完成了 init() Ҏ?
service() Ҏ
service() Ҏ?Servlet 的核心。每当一个客戯求一个HttpServlet 对象Q该对象的service() Ҏp被调用,而且传递给q个Ҏ一?h"QServletRequestQ对象和一?响应"QServletResponseQ对象作为参数??HttpServlet 中已存在 service() Ҏ。缺省的服务功能是调用与 HTTP h的方法相应的 do 功能。例如, 如果 HTTP hҎ?GETQ则~省情况下就调用 doGet() 。Servlet 应该?Servlet 支持?HTTP Ҏ覆盖 do 功能。因?HttpServlet.service() Ҏ会检查请求方法是否调用了适当的处理方法,不必要覆?service() Ҏ。只需覆盖相应?do Ҏ可以了?
= 当一个客户通过HTML 表单发出一个HTTP POSThӞdoPostQ)Ҏ被调用。与POSTh相关的参CZ个单独的HTTP h从浏览器发送到服务器。当需要修Ҏ务器端的数据Ӟ应该使用doPost()Ҏ?
= 当一个客户通过HTML 表单发出一个HTTP GETh或直接请求一个URLӞdoGet()Ҏ被调用。与GETh相关的参数添加到URL的后面,q与q个h一起发送。当不会修改服务器端的数据时Q应该用doGet()Ҏ?
Servlet的响应可以是下列几种cdQ?
一个输出流Q浏览器Ҏ它的内容cdQ如text/HTMLQ进行解释?
一个HTTP错误响应, 重定向到另一个URL、servlet、JSP?
destroy() Ҏ
destroy() Ҏ仅执行一ơ,卛_服务器停止且卸装Servlet 时执行该Ҏ。典型的Q将 Servlet 作ؓ服务器进E的一部分来关闭。缺省的 destroy() Ҏ通常是符合要求的Q但也可以覆盖它Q典型的是管理服务器端资源。例如,如果 Servlet 在运行时会篏计统计数据,则可以编写一?destroy() ҎQ该Ҏ用于在未装入 Servlet 时将l计数字保存在文件中。另一个示例是关闭数据库连接?
当服务器卸装 Servlet Ӟ在所?service() Ҏ调用完成后,或在指定的时间间隔过后调?destroy() Ҏ。一个Servlet 在运行service() Ҏ时可能会产生其它的线E,因此L认在调用 destroy() ҎӞq些U程已终止或完成?
GetServletConfigQ)Ҏ
GetServletConfigQ)Ҏq回一?ServletConfig 对象Q该对象用来q回初始化参数和ServletContext。ServletContext 接口提供有关servlet 的环境信息?
GetServletInfoQ)Ҏ
GetServletInfoQ)Ҏ是一个可选的ҎQ它提供有关servlet 的信息,如作者、版本、版权?
当服务器调用sevlet 的ServiceQ)、doGetQ)和doPostQ)q三个方法时Q均需?"h"?响应"对象作ؓ参数?h"对象提供有关h的信息,?响应"对象提供了一个将响应信息q回l浏览器的一个通信途径。javax.servlet 软g包中的相关类为ServletResponse和ServletRequestQ而javax.servlet.http 软g包中的相关类为HttpServletRequest ?HttpServletResponse?
Servlet 通过q些对象与服务器通信q最l与客户机通信。Servlet 能通过调用"h"对象的方法获知客h环境Q服务器环境的信息和所有由客户机提供的信息。Servlet 可以调用"响应"对象的方法发送响应,该响应是准备发回客户机的?/font>