《Java服务器高级编程(一)Java服务器高级编程(一)_作者.pdf》由会员分享,可在线阅读,更多相关《Java服务器高级编程(一)Java服务器高级编程(一)_作者.pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、下载第1章We b应用开发在过去几年里,计算机领域发生了令人难以置信的变化。我们不用再被庞大、繁重的桌面应用所困扰了。随着因特网和万维网的推广,我们可以在世界各地实现信息共享,甚至进行网上交易。作为应用开发者,我们面临的挑战是需要进一步推动它的发展。随着技术的发展,需要我们开发出更快、更轻巧、更强壮的能通过 We b进行发布的网上应用。十分幸运的是,在这方面,我们有许多强大的工具可以利用。过去,如果你想通过 We b发布一个数据库驱动的应用给客户的话,你只能写一些 C G I脚本来处理格式化的数据并返回结果。但最近几年,大量的新技术出现了,剩下的问题是选择适合你和你公司的技术了。C G I给W
2、e b增添了动态内容和交互性,但存在着不少的缺点。不论是在开发上还是在可伸缩性上都存在问题,因此出现了像 I S A P I和N S A P I这类与服务器相关的 A P I。虽然它们比C G I的效率更高,但复杂性也随之提高。像 Active Server Pages(A S P,活动服务器页面)和 P H P这类脚本解决方案有助于简化We b应用开发。这些方案已经为用于处理逻辑以及与数据资源进行通信的组件提供了We b接口,这是一种创建We b应用的集成技术。为了充分发挥这些技术的潜力和提供更好扩展、更好移植的服务器端解决方案,S u n公司开发了一种新的称为s e r v l e t的技
3、术。Java servlet非常高效,这是因为它是一种基于线程的模型,在此模型中,每个请求都被占用资源少的线程来处理;s e r v l e t同时具有平台无关性,因为它通过一套标准的接口(它们构成 s e r v l e t引擎)和J a v a虚拟机来和特定的服务器结构联系。最后,J a v as e r v l e t为We b应用提供了一个面向对象的、扩展性好的中间层。s e r v l e t能访问所有如 J N D I、J D B C、R M I这类企业版J a v a的A P I函数和Enterprise JavaBeans(E J B)。本书将讨论Java servlet以及和
4、服务器端相关的J a v a技术。我们希望用浏览客户通过 s e r v l e t访问事务逻辑和数据服务的方式向读者展示,服务器端J a v a如何成为我们开发n-层应用的关键技术。我们将看到如何编写s e r v l e t,以及怎样将它们用于扩展 We b服务器的功能,同时我们也将使用最新的称为JavaServer Pages(J S P)的服务器端J a v a技术。J S P通过创建一个特殊的网页能够让我们把H T M L、J a v a代码及其他成份简单地组合在一起,该网页在第一次调用时能够由 We b服务器动态地编译到一个s e r v l e t里去。本章主要包括:概述We b
5、开发。讨论服务器端应用和客户端应用。介绍服务器端的J a v a技术。考察在服务器上使用J a v a的优点。1.1 We b结构在构造服务器端的J a v a应用之前,我们先来回顾一些基本的东西。对一些有 We b应用开发经验的读者可直接跳到下一节。对其他读者,我们将从在 We b浏览器上键入一个简单的U R L(统一资源定位符)会发生什么事情讲起。为了在浏览器中打开网页,你通常要键入一个 U R L或点击一个指向某个 U R L的现有连接。一旦你发出请求,并且 We b服务器收到后,We b服务器就找出网页并送回到浏览器(见图 1-1),浏览器随后显示出网页。网页中的每幅图同样也由一个 U
6、 R L所定位,浏览器用前面同样的方法向服务器请求每幅图像,直到把组成整个 H T M L网页的图都传回来。图1-1开发这种结构的应用有助于了解 We b浏览器和We b服务器的作用。你将会发现,对这些知识的了解将会有益于你成功开发出We b应用。1.1.1 We b浏览器We b浏览器可以看成一个通用的用户界面。无论你是做一些简单的浏览或是进行在线银行交易,We b浏览器的职责都是显示We b内容,向We b服务器发出请求,并处理该请求生成的结果。在过去几年里,浏览器市场发生了翻天覆地的变化。不管是微软还是网景,都为我们的客户端提供了强大的能力。微软的 I E和网景的C o m m u n
7、i c a t o r这两种主要的浏览器都逐渐成为完全可编程的文档容器,每一种都有自己的对象模型,允许脚本文件或对象对文档本身的元素进行操作。像VBs c r i p t或者J a v a S c r i p t这类脚本语言可用来执行客户端的数据确认或者提供文档中的某些交互特性。动态H T M L(D H T M L)是一种H T M L、层叠样式表单(Cascading Style Sheets,C S S)、文档对象模型和脚本语言的结合物。C S S是一种定位和格式化H T M L的较好方法。由于样式表里的每一属性对对象模型都是可见的,所以你可以用一些脚本来处理和重定位 H T M L元素
8、。D H T M L从整体上说给你的网页提供了更高级的交互性,同样它还为它们的显示增加了更多的控制。最新的浏览器必须具备的一个特性是支持可扩展标记语言(Extensible Markup Language,X M L)。X M L允许你定义自己的标记符(t a g)集来特征化数据,并用这些标记符来构造文档和2第第J a v a服务器高级编程下载请求响应:HTML代码Web浏览器本地文件系统Web服务器数据结构。X M L使得结构化的数据具有自我描述性,这就意味着数据可以方便地进行移植。更进一步,利用可扩充风格语言(Extensible Style Language,X S L)你可以选择你想看
9、的数据,甚至改变标记符名称并把 X M L标记符转换为H T M L。在哪里执行这些转换依赖于客户端浏览器对X M L的支持。在本书中,因为这样的浏览器是普遍存在的,所以我们将集中讨论 X M L在服务器上的转换。当文档显示时,We b浏览器能够在同样的环境中执行应用程序。对客户端 We b应用来说,最常见的两种选择就是微软的 A c t i v e X技术和Java applet。A c t i v e X组件从We b服务器下载,在Wi n d o w s注册表中注册,由其他脚本元素调用它时进行执行;一个 Java applet也是一种从We b服务器下载的小 J a v a程序,在浏览器
10、自己的 J a v a虚拟机中执行。不论是 A c t i v e X对象还是 J a v aa p p l e t,都能完全访问浏览器的文档对象模型并能在浏览器和它们自身之间交换数据。不管我们是怎样使用浏览器的,它总是扮演着一种“世界之窗”的角色,它是我们浏览 We b页面、在线交易甚至玩游戏的主要用户界面。1.1.2 We b服务器We b服务器是We b交互的核心。We b服务器是一个运行在服务器上的程序,它监听到来的请求并处理这些请求。一旦 We b服务器接收到一个请求便开始处理。根据请求的类型,We b服务器或者寻找一个网页,或者执行一个程序。无论哪种情况,它都会将某种类型的结果传回
11、浏览器,即使它无法处理请求也会返回错误提示。根据N e t c r a f t的We b服务器调查表(h t t p:/w w b服务器有Apache We b服务器和M i c r o s o f t的I I S(见表1-1)。Apache We b服务器作为自由软件得到了世界各地程序员的使用和修改。它的功能、灵活性、易用性以及多平台支持使它在过去几年里占了We b服务器市场的绝对优势。另一方面,微软的 I I S作为Wi n d o w s操作系统的一部分运行在 N T操作系统上,虽然 I I S有许许多多的优点,但它依赖于 Wi n d o w s操作系统无疑限制了它的发展。随着L i
12、n u x操作系统的普及,似乎 Apache We b服务器(与L i n u x捆绑在一起发布)会继续在竞争中占据优势。Netcraft We b服务器调查表(h t t p:/w w w.n e t c r a f t.c o m/s u r v e y)表1-1服务器1 9 9 9年7月百分比A p a c h e3 7 1 3 4 7 05 6.2 8M i c r o s o f t-I I S1 4 5 2 3 3 32 2.0 1N e t s c a p e-E n t e r p r i s e3 8 6 9 2 75.8 6C n G1 4 7 2 112.2 3R a p
13、 i d s i t e11 3 0 2 51.7 1We b S i t e P r o8 7 2 9 31.3 2S t r o n g h o l d7 9 5 8 01.2 1Z e u s7 9 2 0 61.2 0t h t t p d7 0 4 1 41.0 7We b S TA R6 3 3 4 70.9 6第1章第We b应用开发第第3下载We b服务器在我们开发的服务器端应用中起了非常重要的作用。Java servlet可以在任何We b服务器上运行。因为 s e r v l e t用一个单独的s e r v l e t引擎就能运行,We b服务器不必非得支持 s e r
14、v l e t才能使用它们。本书中我们使用了 Java We b开发包,但是 Apache JServ、J R u n或者Java We bS e r v e r都能适用于这些例子。1.2 n-层应用在讨论We b应用开发时,有必要介绍 n-层(n-t i e r)结构的概念。典型的客户/服务器属于2-层结构类型,整个应用都在客户端的 P C机上,而数据库则在公司的服务器上。虽然这种方法允许我们在企业范围内共享数据,但还存在许多缺点。在2-层结构的应用中,进程的装载全由 P C机来完成而功能更强大的服务器只是简单地作为应用与数据库之间的流量控制器。这样,不仅应用的执行效率受到 P C机资源限制
15、,而且网络流量也要增大。当整个应用都在 P C机上执行时,在把结果显示给用户时经常需要该应用提出多个数据请求,而多个数据库请求会造成网络拥塞。2-层结构的另一个问题是维护。应用的极小变化都会对整个客户端造成影响。经过一系列变化之后,便很难管理各个版本。一些用户认为不需要变化而继续采用原来的版本,而另一些用户坚持要立即升级,其结果是造成了两种不同的版本需要维护。为解决这些问题,软件开发商提出了3-层结构的概念。整个应用被划分成三个分离的逻辑层,每一层都有一套定义好的接口。第一层是表示层,一般情况下就是展现给用户的图形界面;中间层由应用逻辑组成,第三层包含应用所需的数据。中间层(应用逻辑层)基本上
16、是用户为了获取数据需要(通过表示层)调用的代码。表示层接收到数据后把它格式化并显示出来。这种应用逻辑与用户界面的分离极大地提高了应用设计的灵活性。我们可以在不改变应用逻辑的情况下采用不同的图形用户界面,只要应用逻辑层给表示层提供了一个明确定义的接口。第三层包含应用所需的数据。数据可以是任何类型的信息,既可以是像 O r a c l e或S y b a s e这类的企业级数据库,也可以是一个 X M L文档(根据X M L规范定义存储在文档中的数据)集,甚至可以是如L D A P服务器这类的目录服务。一个应用的数据并不局限于一个相关的数据库。这里存在许多应用能够访问的不同企业数据源。采用三层结构
17、以后,执行效率、网络拥塞和维护等问题都得到了解决。这种结构几乎满足了我们的所有要求,但不是没有缺点,它的不足在于重用性和可伸缩性。在一个组织内,我们会有多个部门,因而有很多相互之间没有任何联系的应用。在这种情况下我们引入 n-层结构。为了把一个3-层结构的系统转化为n-层结构,我们只需把第二层的单一应用扩展为多个应用对象即可(如图1-2)。这些应用对象必须有一个接口以使得它们能在一块工作,接口可以看成为一种契约,每个对象通过接口声明它所接收的参数以及返回的结果集,应用对象之间也通过它们的接口进行通信。采用n-层结构以后,公司内多个应用就可以采用一个统一的事务对象集了。通过创建整个公司可访问的单
18、一事务功能集,这种结构提高了事务实践的标准化。一旦某个事务规则发生了变4第第J a v a服务器高级编程下载化,则只需改变相应的事务对象,如果有必要再修改接口及其访问该接口的对象。这里着重指出当设计一个对象及其接口时,最好使接口尽可能通用化以避免以后过多的修改。因为对象与对象之间既然是通过接口而不是对象本身进行通信的,那么改变对象本身而不是接口就会相对简单快捷。图1-21.3 We b应用的体系结构一个We b应用典型地采用三层结构模型(如图 1-3所示)。第一层包括表示层,对于 We b应用来说,不仅包括We b浏览器而且还包括We b服务器,它们负责把数据格式化为可显示的格式。第二层是应用
19、层,通常包括一些脚本或程序。最后,第三层为第二层提供它所需的数据。一个典型的We b应用从用户处收集数据(第一层),向We b服务器发出请求,运行所请求的相应服务器程序(第二层和第三层),把需要在We b浏览器显示的数据打包,送回到浏览器进行显示(第一层)。第1章第We b应用开发第第5下载表示层逻辑HTML表单(浏览器)Java Applet(浏览器)能够显示数据的任何系统接口应用对象接口应用对象接口应用对象远端系统XML文档应用逻辑数据图1-31.3.1 收集数据一个We b应用的第一步通常(但不总是)涉及从用户处收集某种数据。传统的方法是用一个简单的H T M L表单,用户在指定字段键入
20、信息,然后点击发送按钮,并等待结果。这种方法今天仍然被广泛使用,除此之外,还有另一种方法。既然你已经开始阅读本书,我们假定你对 Java applet很熟悉。a p p l e t是在We b页面内运行的J a v a程序。Java applet是通过向We b服务器简单地打开一个套接字连接而作为服务器端的客户程序的。这种方法可以有助于把大部分数据的格式化和有效性检查工作从服务器端移到客户端。在多层结构中,我们没有必要把所有的工作量都从客户端移走,而是应该把代码放在最合适的地方。应用逻辑不应放在客户端,相应地,表示逻辑也不应放在服务器端。a p p l e t的主要问题就是仍然限制了大多数因特
21、网访问的带宽。1.3.2 向We b服务器发送请求为使We b服务器产生响应并执行一个服务器程序,We b浏览器需要把用户数据打包并向 We b服务器发出一个H T T P请求。一个H T T P请求包括用户所要访问网页或脚本程序的统一资源定位符、表单数据(如果有输入的话)以及任何附加的头信息(浏览信息长度以及请求类型),一个请求一般由浏览器产生,理解如何产生以及如何使用请求是非常重要的。每一个请求都要指明请求所使用的方法,最常用的三种方法是 H E A D、G E T和P O S T。HEAD方法只是简单地取回文档的信息而不是文档本身。G E T和P O S T方法用来请求执行一个We b程
22、序。虽然它们都完成相同的任务,但所用的工作方法是不同的。6第第J a v a服务器高级编程下载请求响应第一层Web浏览器服务器运行时刻环境服务器脚本(或程序)数据存储器第三层第二层1.使用G E T方法当执行G E T请求时,所有被键入的表单数据都被附加到所请求的串后。附加数据使用“关键字=值”对的形式(见表1-2)。例如,h t t p:/w w w.a n y s e r v e w w w.a n y s e r v e r.c o m服务器上c g i-b i n目录中一个名叫 h e l l o.c g i的脚本程序,并向n a m e变量传递一个A s h l e y值。表1-2元
23、素描述h t t p:/w w w.a n y s e r v e r.c o m处理请求的We b服务器/c g i-b i n/h e l l o.c g i服务器资源的名字和位置?把位置和数据分开k e y=v a l u e字段名及相关的值&k e y=v a l u e对的分隔符+代替空格符。注意,其他的特殊字符都是十六进制编码的G E T用作所有We b请求的缺省方法。当用户向 We b页面发出请求时,浏览器就会执行一个G E T请求。因为 G E T请求把所有表单数据打包放到请求串里,因此浏览器把它只看成为另一U R L。如果相同U R L请求的某些结果在缓存里,以前的结果就被显
24、示出来。使用 G E T方法的另一个潜在问题是,数据附加到U R L串后,能传递的数据量会受到一定限制。2.使用P O S T方法使用P O S T方法的请求同样把表单数据打包为请求体的一部分。服务器程序将能够读出输入文件的内容并解析出相应的变量名及其值。P O S T方法能够传递更多的数据,而且向服务器直接发送请求(而不查找缓存目录)。3.你应该使用什么方法?大多数情况下,你不用考虑使用什么方法向 We b服务器发起请求。在理想状态下,一般都是使用G E T方法来获取信息,也就是说,通过一个修改过的 U R L向服务器发出指令;当需要修改存储在服务器上的数据内容时,就要使用 P O S T请
25、求。因此,一个简单的返回全部结果的数据库检索就应使用G E T请求,而一个工作记录单入口程序应使用 P O S T方法。1.3.3 执行服务器脚本We b服务器的一个重要功能就是向特定的脚本、程序传递需要处理的请求。We b服务器首先检查所请求文件的扩展名(或文件所在目录),以此来决定需要装入什么类型的运行环境,这可以通过映射来完成。在配置 We b服务器时,我们要指明如何处理特定类型的文件。比如说,在c g i-b i n目录下的文件被作为 C G I脚本进行处理,以.j s p扩展名结尾的文件作为 JavaServer Page进行处理。一旦We b服务器决定了所请求文件的类型,它就装入执
26、行文件所要求的运行时刻(r u n t i m e)环境。比如说,如果一个C G I程序是用p e r l写的,We b服务器就会创建一个新进程并把 p e r l解释器装入。对某些类型的程序不必分别装入各自的运行时刻环境,这就依赖于 We b服务器及其使用的技术。无论哪种方法,We b服务器都会负责把请求定向到合适的地方。第1章第We b应用开发第第7下载1.3.4 将结果返回浏览器We b应用的最后一步就是对操作作出某种响应,并把结果返回给浏览器。一般地说,服务器脚本指定内容类型(content type),然后把响应写到输出流上。当 We b浏览器接收到响应时,它首先查看响应头并决定 m
27、 i m e类型,从而知道如何处理数据。最常用的内容类型是 t e x t/h t m l,但服务器还能返回X M L、未格式化的文本、G I F图片甚至音频流。1.4 开发服务器应用服务器端程序和其他程序有几个重要的不同之处。为了让一个程序能被 We b服务器所访问,它必须具有如下特性:程序必须能被We b服务器激活。当一个用户从一个 We b浏览器发出请求时,We b服务器必须能定位并执行相应的程序。必须有一种方法使得 We b服务器能把表单数据传给程序。当 We b服务器激发程序时,它需要一种方法来传递H T T P请求。一旦程序被激活,必须要有一个标准的入口点。程序处理完输入数据后,要
28、把结果打包并送回到 We b服务器,然后由We b服务器把结果送回浏览器。一些服务器上所使用的各部分也许会使你眼花缭乱,但在这里的 We b服务器仅仅涉及到H T T P。1.4.1 服务器端的技术在近几年中,向 We b传递动态数据的实际方法还仅限于通用网关接口(Common GatewayI n t e r f a c e,C G I)。C G I程序为创建“接受用户输入、执行数据库请求和返回结果给浏览器”的We b应用提供了一个相对简单的方法。微软和网景都开发了相应的 A P I,用来构造能响应We b请求的内进程代码。最近的服务器端 We b技术有Active Server Pages
29、(A S P)、Java Servlets和J S P。我们将在下面对这几种技术进行详细的描述和比较。1.通用网关接口(C G I)作为一种最普通的服务器端We b技术,几乎每个现在的We b服务器都提供对C G I程序的支持。尽管现在C G I编程最常用的语言是 p e r l,但实际上一个 C G I程序可以用任何语言进行编写。We b服务器实现的C G I作为用户请求与所请求数据之间的网关。这首先是通过创建一个新进程(如图1-4),然后装入任何需要的运行时刻环境及程序本身,最后它传递一个请求对象并激活程序。当程序结束时,We b服务器将从s t d o u t中读得响应。C G I编程的
30、最大缺点是它的效率不高。每当 We b服务器接收到一个请求时,就会创建一个完整的新进程。每个这样的进程包括它自己的环境变量集、运行时刻环境要求的程序的一个实例和程序的一个拷贝以及程序所需内存。我们不难想像当服务器同时接收到大量请求时会发生什么情况:服务器的资源负担过重,甚至可能引起系统瘫痪。像F a s t C G I和A p a c h e的m o d _ p e r l这类技术对解决此类问题有所帮助。F a s t C G I共享每个C G I程序的单一实例,m o d _ p e r l在Apache We b服务器内进行解释并执行p e r l脚本,它们都考虑到了执行效率问题。8第第J
31、 a v a服务器高级编程下载图1-42.专有We b服务器A P I(I S A P I、N S A P I)为解决C G I的低效性,微软和网景开发了自己的 A P I,使得开发者能够把服务器应用写成共享库。这些共享库被装入一个进程并能处理多个请求而不需要重新创建进程,它们可以在 We b器启动时装入,也可以在需要时装入。一旦它们在一段时间内没被使用,We b服务器就把它们从内存中卸载掉。这些共享库一方面提高了We b服务器效率,另一方面也存在着一些问题:这些A P I与特定平台相关,用它们写的程序也是平台相关的,将这些程序移植到另一个平台是非常困难的。既然这些库能被多个用户同时访问,它们
32、必须是线程安全的,这意味着在访问全局和静态变量时必须十分小心。如果一个服务器程序出现了访问错误,由于它和 We b服务器在同一进程内,极有可能造成整个We b服务器瘫痪。3.Active Server Pages(A S P)来自于微软的最新技术是在一个称为 Active Server Pages(A S P,活动服务器网页)的文件中组合了H T M L、脚本和服务器端的组件。当服务器接收到对 A S P文件的请求时,它会首先查找编译好的页面并执行它。如果页面还未编译,服务器就会编译并运行它。A S P的运行结果是一个返回给浏览器的网页。一个活动服务器网页可用 H T M L、J S c r
33、i p t和V B S c r i p t写成。A S P通过脚本可以访问服务器端的组件,这些组件可用任何一种提供了 C O M(微软的组件规范)接口的语言写成。A S P文件的优点是任何事都在服务器上执行,这就使得生成的网页是浏览器无关的,仅受限于服务器的功能。第1章第We b应用开发第第9下载服务器通用网关接口进程1运行时刻环境环境变量程序运行时刻环境环境变量程序运行时刻环境环境变量程序进程2进程3A S P的真正缺点是它仅能被运行在微软操作系统(Wi n 9 x,Wi n N T)上的微软的We b服务器(I I S、P W S)所使用。虽然也存在与其他操作系统和 We b服务器的接口,
34、但缺乏广泛的 C O M支持也限制了它的有效性。其他问题就是由于把 H M T L和脚本混在了一起,维护就成了大问题。4.Java Servlets和J S P几年前,一种称为 J a v a的新语言和平台诞生了。J a v a最引人注目之处便是它的平台无关性、安全性、1 0 0%面向对象、扩展性及相对简单的编码(和 C相比),这使得J a v a非常流行。十分不幸的是,在早期使用中,不少人发现它使用上的复杂性。从那时起,J a v a就得到了快速发展。最近,S u n把目标瞄准企业,开发了一套新的 A P I,能帮助你的程序与企业服务和数据进行联系。Java Servlet API是众多关于
35、J a v a平台扩展中奠基石之一,它提供了一条创建动态内容的好方法,极大地扩展了We b服务器功能。Java servlet是一个服务器端的程序,能够接收 H T T P请求并作为H T T P响应返回结果。在这个特性上它有些类似于 C G I,但区别不在于此。s e r v l e t的一个好处是它是一个运行在 We b服务器上的非可视的a p p l e t,它的生命周期类似于a p p l e t并在J a v a虚拟机(J V M)上运行。当用户向一个s e r v l e t发起请求时,服务器只是简单地使用一个不同的线程来处理请求。这种方式能提高执行效率,因为它不会像 C G I程
36、序那样多个请求会产生多个进程。线程需要更少的资源,因此使用它们提高了效率。好的服务器实现将使用线程池控制用于客户请求的线程数量,并能更好地防止死机。使用 s e r v l e t另一个好处是,由于它在 J V M中运行,因而极易移植到支持J a v a的其他平台上。J a v a语言有许多像“强制性异常处理”和“类型安全性”这类安全特性能阻止将某个错误转变成灾难。通过S u n的H o t S p o t和I B M的J i k e s等技术能够解决J a v a解释特性方面的问题。JavaServer Pages(JSP)类似于微软的Active Server Pages(ASP)。一个J
37、ava Server Page包括H T M L、J a v a代码和J a v a B e a n组件。J S P提供了一种方法把组件嵌入 We b页面,并产生客户所需要的页。当用户请求J S P文件时,We b服务器首先产生相应的s e r v l e t(除非已经存在),然后We b服务器激活s e r v l e t并向浏览器返回所需结果。Java Server Pages提供了一种得益于J a v a平台的许多优点的强大而动态的页面装配方法。1.4.2 Java的特点在众多服务器端开发的选择中,你也许会质疑为什么 J a v a是一个非常好的选择;服务器端的J a v a技术给你提供
38、了平台无关性、有效性、访问其他企业 Java API、可重用性和模块化。下面讨论每一个优点。1.平台无关性Java servlet同J a v a语言一样具有平台无关性。s e r v l e t代码被编译成字节码,再由服务器上的与平台相关的J a v a虚拟机(J V M)解释执行。由于s e r v l e t本身由平台无关的字节代码组成,你可以自由地把它移植到支持J a v a的其他平台上。2.效率和C G I相比,Java servlet提供了更有效方法处理用户请求。C G I程序需要为每一个客户请求创建一个进程,而当s e r v l e t接收到请求时,它只是在相同的进程中创建另一
39、个线程来处理请求。10第第J a v a服务器高级编程下载这使得成百上千的用户同时访问s e r v l e t而不影响服务器性能。3.访问Enterprise Java API既然Java servlet是J a v a平台的扩展,因此它们就可以访问所有的 J a v a A P I。一个Java servlet可以收发邮件,使用 R M I或C O R B A来激活远程对象的方法,使用 J N D I包获得目录信息,使用Enterprise JavaBean(E J B)或J a v a平台的其他部分。4.重用性代码重用是所有编程追求的崇高目标。创建应用的部件的各部分是实现重用的一种方式,
40、使用面向对象的方法封装共享功能是另一种方式;J a v a用到了这两种方式,它是一种完全面向对象的语言并提供了重用机制。5.模块化当开发一个完全的服务器端应用时,你的程序会很快变得又庞大又复杂。把一个应用分成各部分执行特定任务的不同模块是非常有好处的。当模块化后,你的应用就会变得容易维护和理解。Java servlet、J S P和Java Bean通过分层和分任务提供了很好的模块化方法。1.5 小结直到现在,还没有出现一个开发服务器端 We b应用的完美技术,每种技术都有一些优点,但都未提供完整的解决方案。Java Enterprise API提供了一种简单、有效、平台无关、面向对象、灵活和
41、扩展性好的技术来处理通过万维网传递动态数据的任务。下一章我们将介绍Java Servlet Development Kit(J S D K),学习servlet API,并构造一些简单例子。这将是展示J a v a平台强大和灵活的第一步。本章中我们学习了:万维网(W W W)通过We b浏览器发出请求,由 We b服务器处理请求并返回响应,它们都典型地采用了We b页面的形式。We b应用包括We b浏览器收集用户数据、发送给We b服务器处理和最后返回结果。H T T P请求通常使用G E T和P O S T请求。G E T请求应该用于只是简单地获取信息并发送与所请求的U R L串放在一块的任何表单数据,P O S T请求用在要修改服务器上数据时。所有表单数据都被打包并紧跟着请求之后发送。服务器程序负责接收请求、处理请求并向 We b服务器返回响应(然后它将返回给浏览器)。最流行的服务器端技术有C G I、I S A P I、N S A P I、A S P和Java servlet。Java servlet具有平台无关、高效、1 0 0%面向对象的特性,它为开发者提供了一条将 J a v a平台的优点扩展到We b服务器的途径。第1章第We b应用开发第第1 1下载