servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx

上传人:b****3 文档编号:8116783 上传时间:2023-05-10 格式:DOCX 页数:35 大小:45.24KB
下载 相关 举报
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第1页
第1页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第2页
第2页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第3页
第3页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第4页
第4页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第5页
第5页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第6页
第6页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第7页
第7页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第8页
第8页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第9页
第9页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第10页
第10页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第11页
第11页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第12页
第12页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第13页
第13页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第14页
第14页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第15页
第15页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第16页
第16页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第17页
第17页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第18页
第18页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第19页
第19页 / 共35页
servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx

《servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx(35页珍藏版)》请在冰点文库上搜索。

servlet概述以及API中文版及学习笔记综合Word文档下载推荐.docx

  *Servlet则没有图形界面,运行在服务器端。

与传统CGI的比较

  JavaServlet与CGI(CommonGatewayInterface)的比较:

  与传统的CGI和许多其他类似CGI的技术相比,JavaServlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资。

在未来的技术发展过程中,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编写,ServletAPI具有完善的标准。

因此,为IPlanetEnterpriseServer写的Servlet无需任何实质上的改动即可移植到Apache、MicrosoftIIS或者WebStar。

几乎所有的主流服务器都直接或通过插件支持Servlet。

   *节省投资 

  不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持Servlet的话,要加上这部分功能也往往是免费的(或只需要极少的投资)。

JavaServlet与JSP的比较

  JavaServerPages(JSP)是一种实现普通静态HTML和动态HTML混合编码的技术,JSP并没有增加任何本质上不能用Servlet实现的功能。

但是,在JSP中编写静态HTML更加方便,不必再用println语句来输出每一行HTML代码。

更重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开:

比如,由页面设计者进行HTML设计,同时留出供Servlet程序员插入动态内容的空间。

HTTPServlet应用编程接口

  HTTPServlet使用一个HTML表格来发送和接收数据。

要创建一个HTTPServlet,请扩展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表单发出一个HTTPGET请求或直接请求一个URL时,doGet()方法被调用。

与GET请求相关的参数添加到URL的后面,并与这个请求一起发送。

当不会修改服务器端的数据时,应该使用doGet()方法。

  (4)doPost()方法

  当一个客户通过HTML表单发出一个HTTPPOST请求时,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可以调用"

对象的方法发送响应,该响应是准备发回客户机的。

ServletAPI中文版

基本类和接口

一、javax.servlet.Servlet接口

servlet抽象集是javax.servlet.Servlet接口,它规定了必须由Servlet类实现由servlet引擎识别和管理的方法集。

Servlet接口的基本目标是提供生命期方法init()、service()和destroy()方法。

servlet接口中的方法

voidinit(ServletConfitconfig)throwsServletException在servlet被载入后和实施服务前由servlet引擎进行?

次性调用。

如果init()产生溢出UnavailableException,则servle退出服务。

ServletConfiggetServletConfig()返回传递到servlet的init()方法的ServletConfig对象

voidservice(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOException处理request对象中描述的请求,使用response对象返回请求结果

StringgetServletInfo()返回描述servlet的一个字符串

voiddestory()当servlet将要卸载时由servlet引擎调用

二、javax.servlet.GenericServlet类(协议无关版本)

GenericServlet是一种与协议无关的servlet,是一种跟本不对请求提供服务的servlet,而是简单地从init()方法启动后台线程并在destory()中杀死。

它可以用于模拟操作系统的端口监控进程。

servletAPI提供了Servlet接口的直接实现,称为GenericServlet。

此类提供除了service()方法外所有接口中方法的缺省实现。

这意味着通过简单地扩展GenericServlte可以编写一个基本的servlet。

除了Servlet接口外,GenericServlet也实现了ServletConfig接口,处理初始化参数和servlet上下文,提供对授权传递到init()方法中的ServletConfig对象的方法。

GenericServlet类中的方法

voiddestory()编飞组成单词“destory”的一个注册入口

StringgetInitParameter(Stringname)返回具有指定名称的初始化参数值。

通过凋用config.getInitParameter(name)实现。

EnumerationgetInitParameterNames()返回此serv]et已编码的所有初始化参数的?

个枚举类型值。

调用config.getInitParameterNames()获得列表。

如果未提供初始化参数,则返回?

个空的枚举类型值(但不是null)

ServletConfiggetServletConfig()返回传递到init()方法的ServletConfig对象

ServletContextgetServletContext()返回在config对象中引用的ServletContext

StringgetServletInfo()返回空字符串

voidinit(ServletConfigconfig)throwsServletException在一实例变量中保存config对象。

编写组成单词“init”的注册入口,然后调用方法init()

voidinit()throwsServletException可以被跳过以处理servlet初始化.在config对象被保存后init(ServletConfigconfig)的结尾处自动被调用.servlet作者经常会忘记调用super.init(config)

voidlog(Stringmsg)编写注册servlet的入口.为此调用servlet上下文的log()方法.servlet的名字被加到消息文本的开头。

voidlog(Stringmsg,Throwablet)编写一个入口和servlet注册的栈轨迹。

此方法也是ServletContext中相应方法的一个副本。

abstractvoidservice(Requestrequest,Responseresponse)throwsServletException,IOException由servlet引擎调用为请求对象描述的请求提供服务。

这是GenericServlet中唯一的抽象方法。

因此它也是唯一必须被子类所覆盖的方法。

StringgetServletName()返回在Web应用发布描述器(web.xml)中指定的servlet的名字。

三、javax.servlet.http.HttpServlet类(HTTP版本)

虽然servletAPI允许扩展到其它协议,但最终所有的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类中的方法

VoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException由servlet引擎调用用处理一个HTTPGET请求。

输入参数、HTTP头标和输入流可从request对象、response头标和response对象的输出流中获得。

VoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException由servlet引擎调用用处理一个HTTPPOST请求。

VoiddoPut(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException由servlet引擎调用用处理一个HTTPPUT请求。

本方法中请求URI指出被载入的文件位置。

VoiddoDelete(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException由servlet引擎调用用处理一个HTTPDELETE请求。

请求URI指出资源被删除。

VoiddoOptions(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException由servlet引擎调用用处理一个HTTPOPTIONS请求。

返回一个Allow响应头标表明此servlet支持的HTTP方法。

一个servlet不需要覆盖此方法,因为HttpServlet方法已经实现规范所需的功能。

VoiddoTrace(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException由servlet引擎调用用处理一个HTTPTRACE请求。

使得请求头标被反馈成响应关标。

一个servlet不需要覆盖此方法,因为HttpServlet方法已经实现HTTP规范所需的功能。

Voidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOExceptionService(Requestrequest,Responseresponse)调用的一个立即方法,带有指定HTTP请求和响应。

此方法实际上将请求导向doGet()、doPost()等等。

不应该覆盖此方法。

Voidservice(Requestrequest,Responseresponse)throwsServletException,IOException将请求和响应对象置入其指定的HTTP子类,并调用指定HTTP的service()方法。

四、javax.servlet.ServletRequest类(协议无关版本)

ServletRequest接口封装了客户端请求的细节。

它与协议无关,并有一个指定HTTP的子接口。

ServletRequest主要处理:

1.找到客户端的主机名和IP地址

2.检索请求参数

3.取得和设置属性

4.取得输入和输出流

ServletRequest类中的方法

ObjectgetAttribute(Stringname)返回具有指定名字的请求属性,如果不存在则返回null。

属性可由servlet引擎设置或使用setAttribute()显式加入。

EnumerationgetAttributeName()返回请求中所有属性名的枚举。

如果不存在属性,则返回一个空的枚举。

StringgetCharacteEncoding()返回请求所用的字符编码。

IntgetContentLength()指定输入流的长度,如果未知则返回-1。

ServletInputStreamgetInputStream()throwsIOException返回与请求相关的(二进制)输入流。

可以调用getInputStream()或getReader()方法之一。

StringgetParameter(Stringname)返回指定输入参数,如果不存在,返回null。

EnumerationgetParameterName()返回请求中所有参数名的一个可能为空的枚举。

String[]getParameterValues(Stringname)返回指定输入参数名的取值数组,如果取值不存在则返回null。

它在参数具有多个取值的情况下十分有用。

StringgetProtocol()返回请求使用协议的名称和版本。

StringgetScheme()返回请求URI的子串,但不包含第一个冒号前的内容。

StringgetServerName()返回处理请求的服务器的主机名。

StringgetServerPort()返回接收主机正在侦听的端口号。

BufferedReadergetReader()throwsIOException返回与请求相关输入数据的一个字符解读器。

此方法与getInputStream()只可分别调用,不能同时使用。

StringgetRemoteAddr()返回客户端主机的数字型IP地址。

StringgetRemoteHost()如果知道,返回客户端主机名。

voidsetAttribute(Stringname,Objectobj)以指定名称保存请求中指定对象的引用。

voidremoveAttribute(Stringname)从请求中删除指定属性

LocalegetLocale()如果已知,返回客户端的第一现场或者为null。

EnumerationgetLocales()如果已知,返回客户端的第一现场的一个枚举,否则返回服务器第一现场。

booleanisSecure()如果请求使用了如HTTPS安全隧道,返回true

RequestDispatchergetRequestDispatcher(Stringname)返回指定源名称的RequsetDispatcher对象。

五、javax.servlet.http.HttpServletRequest接口(HTTP版本)

HttpServletRequest类主要处理:

1.读取和写入HTTP头标

2.取得和设置cookies

3.取得路径信息

4.标识HTTP会话。

HttpServletRequest接口中

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2