荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: kid (努力), 信区: Java
标  题: [转载] [转贴]理解Java Servlets                SuperRat (转寄)
发信站: 荔园晨风BBS站 (Sun Dec  9 21:55:31 2001), 站内信件

【 以下文字转载自 kid 的信箱 】
【 原文由 waterid.bbs@bbs.xjtu.edu.cn 所发表 】
发信人: SuperRat (硕鼠), 信区: java
标  题: [转贴]理解Java Servlets
发信站: 交通大学思源BBS (Mon Jun 19 18:27:59 2000), 转信

jiangjianxiao 发表于 2000-04-02 19:51:22

理解Java Servlets

为更加深入的理解Java servlets的意义,有关记者采访了Live Software
Inc.公司的CEO Paul Colton。Live Software公司主要从事Java开发与研
究,总部设在San Diego,Calif。Live Software开发了Jrun,它是一个引
擎,使标准的Web server能够运行Java servlets。1999年,美国Allaire
公司收购了Live Software,并将Jrun继续作为一个独立的产品进行推广销售。
尽管这次专访的内容是在1997年发布的,但是对于我们认识Servlet技术依然
将有所帮助。

-------------------------------------
Java applet和Java servlet的区别是什么?

基本上讲,servlet是applet的反面。你可以将servlet想象成一个服务器端
的applet,Servlets在Web Server上运行的方式同applets在Web浏览器上运
行几乎相同。浏览器可以直接发出一个请求执行一个servlet,它可以根据情
况独立行事,就如同浏览器直接请求一个applet。

---------------------------------------
运行servlets是否需要使用一种特殊的服务器?

运行servlets的第一件事就是你的服务器上必须运行着一个Java虚拟机(Java
Virtual Machine)。这和在浏览器上运行Java applets相类似,支持applets
的浏览器必须运行着一个JVM。所以,如果一台服务器要想执行servlet,那它上
面就必须运行一个JVM。

另外,服务器还必须支持Java Servlet API。这个API由JavaSoft开发成功,
它定义了servlet如何以及在什么时候和服务器进行通信。本质上说,Servlet
API就是一个完整定义的函数集,负责和服务器进行信息的交换。servlet必须
可以访问由服务器定义的变量、解决重定位、反馈error messages等工作。

Sun的Java Web Server支持Servlet API,当然,也支持他们自己的JVM。

----------------------------------------------------
这么说,Java Servlet API是包含在Java Web Server中的了?

不是。它是独立于Java Web Server以外的。Servlet API是一个Java类的集
合,你可以直接从Sun的网站上下载Java Servlet Development Kit,在JSDK
中包含了servlet API以及一个“servlet runner”。JSDK带有一组简单的插
件,这些插件帮助Netscape、IIS以及Apache增加支持servlet的功能。但是这
些功能不全面,也不够强壮,它们仅仅是示范性的配置,作为开始阶段的工具包
来讲没有问题,但是将它用于生产还远远不够。

LiveSoft的工作就是开发JRun,使用户可以在任何类型的Web server中为Java
Serlet API编写servlets。JRun是一个Java类的集合,它配置了应用程序运行
Java servlets所需的完整功能。我们还编写了原始的bridge-code,它可以将
JRun和某个特殊的native Web server进行连接,并使Web server能够运行
servlets。现在JRun可以支持微软 IIS3.0和4.0,微软的 Windows 95 Personal
Web Server 并且我们刚刚完成了JRun和 O'Reilly WebSite Professional的
集成。我们已经开始了JRun和Macintosh Web server WebStar的集成工作。

为WebSite配置JRun使我感到非常兴奋。我们和WebSite的关键性员工共同工作,
现在已经将JRun和WebSite紧密连接在了一起。这就是说,目前除了所有的操作
系统(如Windows95\NT)内置的web server以外,O'Reilly WebSite也能够
提供大部分servlet的功能。

------------------------------
用户既可以为web开发基于servlet的应用,也可以开发基于CGI的应用,您如何看
待两者的区别?

和C、Perl或其他程序语言相比,使用Java开发CGI会更加简单,不容易产生过多
的bug。Java作为一种CGI类型的语言将使你受益,对于创建Web应用来说,Java具
备更好的支持。总的来说,它是一种更为简单而友好的开发环境。例如,在一个
servlet中,只需要几行简单的print语句就可以在web上输出信息。

使用Servlet API,开发人员就不必去关心服务器内部的工作,servlet定义的类将
控制诸如表单数据、server headers 、cookies等所有的东西。由于servlet是由
Java语言组成的,你不必去考虑服务器的类型或操作系统就可以将他们从一个服务
器转移到另一个服务器上。这些优势再次推动了Java的倡导:“一次编写,到处运
行。”

Perl也拥有这样的承诺,你写好一个Perl程序后可以将它从一个服务器转移到另一
个服务器。但是Perl是一种解释语言,加载Perl解释器并执行一个Perl的脚本会降低
服务器运行速度。当然,现在有一些途径可以加速Perl解释器的处理过程,但Java是
一种type-checked的语言,是一种更为强壮而安全的解决方案。

最后,CGI和servlets的最大区别在于性能。在服务器上运行着一个Java虚拟机,每
当servlet被呼叫时,就被立刻加载到内存,而只有servlet发生改变时才会被再次加
载。并且将servlet修改后重新加载时无需重启服务器。

servlet永久驻留在内存中,并且它的运行速度非常快。通过激活多个servlet可以共
享静态或宿存的信息,这样你就可以在多个用户之间共享信息。

有一点非常重要,即servlets是组件,每个servlet可以执行一个特定的任务,你可以
将它们组合起来。Servlets 之间可以进行通话。我可以做一个“servlet chaining ”,
将一个servlet输出的结果再传递给另一个servlet处理。

--------------------------------------
你能描述一个servlets chaining的例子吗?

举一个信息过滤器的例子。例如你有一个servlet负责从数据库中提取文本数据并将它
显示给用户。你可以再单独写另一个servlet,我最喜欢的是有关语言的。一个servlert
分析英语并将它翻译成另一种语言,如法语。你可以将这两个servlet串在一起,一个负
责从数据库提取数据并传给另外一个,另一个完成翻译的工作。
我们可以按顺序命名servlets如下:

/servlet/DBRequestServlet, FrenchTranslatorServlet

使用servlet串,你可以对任何servlet的输出进行翻译,而不仅仅输出你自己的
servlets。

另一个例子通常被称为个性化内容(英文原文为content-fitting)。我们最近写的一个
servlet,它可以将任何带有frame的页面转化为以table的形式输出,取消图和frames
-- Web上经常需要用这样的方法控制不同类型的内容,如需要图和frames等。你可以写
一个servlet把同样的页面内容改为不同的表达形式。如果用户不想下载重量级图片的话,
就可以将文件通过这个servlet发送出去,以剔除其中的大图。使用CGI也可以完成这个
任务,但是用servlets会令这个工作简单许多倍。

-------------------------------------
Java Servlet API是否还处于早期开发阶段?

它是绝对处于初级阶段。但是Servlet API非常简单,而它最终将非常稳定。

Servlet API和Java本身一样,已经被JavaSoft大大改进了。未来我们还会在里面
添加新东西。在Servlet API的下一个版本中,我期待加入任务跟踪的特性,JRun立
刻就会支持这一点的。

-------------------------------
Sun是否保证支持Servlet API?

Sun看上去是这样的。我必须说他们更加支持的是他们的Java Web Server。我不知
道这是为什么。Java Web Server作为工具包而言非常不错,但是作为一个独立的
Web server,用户不见得非得使用JWS。因为许多操作系统自带的服务器本身速度
很快并且功能更加强大。如果你可以在任何服务器上运行servlets,你还需要JWS
做什么呢?

-------------------------------
[bJava servlets在未来会有市场吗? [/b]

我们已经为web开发工作了许多年,其中非常刺痛我的一点是,大家都在反复开发
相同功能的程序。我们无法衡量别人的工作量,因此就按照自己选择的配置去实现。
Servlet可以改变这种局面。你会发现servlet会实现这些基础的任务,而你将能
够将这些部件绑在一起,创建一个应用,今天CGI代码的重用是非常困难的事情。

例如我们编写的一个servlet可以和CyberCash 的付费服务器进行通信,可能外面
有十几个脚本都能完成这个任务,有的写的好些,有的不太好。事实上,CyberCash
的脚本是由Perl写的。我们的CyberCash servlet速度快,代码少同时是跨平台的。
这个servlet就可以成为任何在线购物车(Shopping Cart)系统的一个标准部件。

-------------------------------
Servlet也许是目前Java的一个最可能的应用。Applets在客户端的加载与执行都
太慢,你怎么认为的呢?

我个人感觉,Java用于客户端是太大材小用了。使用Dynamic HTML可以更加灵活的
创建客户端应用。

但是Java作为一种服务器端工具的威力是非常巨大的。现在我们已经认识到Java的
力量了。你现在不必依赖于浏览器的支持。你不会象面对客户端Java那样会发生JVM
的版本问题。我们现在使用的是最新版的JDK,当下一个新版本出来之后,我们就不
必操心用户的浏览器是否支持Java了。

最后举的一个例子是,我们已经写了一个in-line的java servlet,它可以处理HTML
文档内的Java代码。我们创建了一个新的tag,,当你需要的时候,可以使用它在
HTML页面中加入Java代码。我们的servlet实际上是以你的HTML创建了一个servlet。
当页面被请求时,我们的servlet将得到这个HTML并在其外生成另一个servlet并执行
它,将结果返回给服务器。你不必使用任何庞大的开发环境。对于处理只需要几行
Java代码的小型任务来说这是非常有用的。

我相信,基于Java servlets的潜在的应用数量将是非常庞大的。



--
------------------------(\,/)----------SuperRat2000--
  老鼠怕猫,这是谣传.    oo   '''//,,       _
  一只懒猫,有啥可怕.  ,/_;~,         \,   / '
  壮起鼠胆,把猫打翻.   '   \      (   \   !
  千古谣言,一定推翻!        ',|    \   |_.'
----------------------------'~ --'~---'' --千禧硕鼠--
※ 来源:·交通大学思源BBS[WWW-POST]bbs.xjtu.edu.cn·[FROM: 155.69.4.53]
--
※ 转寄:·交大兵马俑BBS站 bbs.xjtu.edu.cn·[FROM: 202.119.32.102]
--
※ 转载:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.32.248]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店