JSP技术概述与应用框架外文翻译.docx
《JSP技术概述与应用框架外文翻译.docx》由会员分享,可在线阅读,更多相关《JSP技术概述与应用框架外文翻译.docx(21页珍藏版)》请在冰豆网上搜索。
JSP技术概述与应用框架外文翻译
外文资料翻译译文
JSP技术概述与应用框架
作者:
Zambon,Giulio/Sekler,Michael
出处:
Springer-VerlagNewYorkInc
JavaServerPages(JSP)是一种基于web的脚本编程技术,类似于网景公司的服务器端Java脚本语言——server-sideJavaScript(SSJS)和微软的ActiveServerPages(ASP)。
与SSJS和ASP相比,JSP具有更好的可扩展性,并且它不专属于任何一家厂商或某一特定的Web服务器。
尽管JSP规范是由Sun公司制定的,但任何厂商都可以在自己的系统上实现JSP。
在Sun正式发布JSP(JavaServerPages)之后,这种新的Web应用开发技术很快引起了人们的关注。
JSP为创建高度动态的Web应用提供了一个独特的开发环境。
按照Sun的说法,JSP能够适应市场上包括ApacheWebServer、IIS4.0在内的85%的服务器产品。
本文将介绍JSP相关的知识,以及JavaBean的相关内容,当然都是比较粗略的介绍其中的基本内容,仅仅起到抛砖引玉的作用,如果读者需要更详细的信息,请参考相应的JSP的书籍。
一、JSP的好处
JSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,其在动态网页的建设中有其强大而特别的功能。
JSP与Microsoft的ASP技术非常相似。
两者都提供在HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。
下面我们简单的对它进行介绍。
JSP页面最终会转换成servler。
因而,从根本上,JSP页面能够执行的任何任务都可以用servler来完成。
然而,这种底层的等同性并不意味着servler和JSP页面对于所有的情况都等同适用。
问题不在于技术的能力,而是二者在便利性、生产率和可维护性上的不同。
毕竟,在特定平台上能够用Java编程语言完成的事情,同样可以用汇编语言来完成,但是选择哪种语言依旧十分重要。
1.1和单独使用servler相比,JSP提供下述好处:
•JSP中HTML的编写与维护更为简单。
JSP中可以使用常规的HTML:
没有额外的反斜杠,没有额外的双引号,也没有暗含的Java语法。
•能够使用标准的网站开发工具。
即使对那些对JSP一无所知的HTML工具,我们也可以使用,因为它们会忽略JSP标签(JSPtags)。
•可以对开发团队进行划分。
Java程序员可以致力于动态代码。
Web开发人员可以将经理集中在表示层(presentationlayer)上。
对于大型的项目,这种划分极为重要。
依据开发团队的大小,及项目的复杂程度,可以对静态HTML和动态内容进行弱分离(weakerseparation)和强分离(strongerseparation)。
在此,这个讨论并不是让您停止使用servlets,只使用JSP。
几乎所有的项目都会同时用到这两种技术。
针对项目中的某些请求,您可能会在MVC构架下组合使用这两项技术。
我们总是希望用适当的工具完成相对应的工作,仅仅是servlet并不能填满您的工具箱。
1.2JSP的特点
按照脚本语言是服务于某一个子系统的语言这种论述,JSP应当被看作是一种脚本语言。
然而,作为一种脚本语言,JSP又显得过于强大了,在JSP中几乎可以使用全部的Java类。
作为一种基于文本的、以显示为中心的开发技术,JSP提供了JavaServlet的所有好处,并且,当与一个JavaBeans类结合在一起时,JSP提供了一种使内容和显示逻辑分开的简单方式。
分开内容和显示逻辑的好处是,更新页面外观的人员不必懂得Java代码,而更新JavaBeans类的人员也不必是设计网页的行家里手,就可以用带JavaBeans类的JSP页面来定义Web模板,以建立一个由具有相似的外观的页面组成的网站。
JavaBeans类完成数据提供,这样在模板中就没有Java代码,这意味着这些模板可以由一个HTML编写人员来维护。
当然,也可以利用JavaServlet来控制网站的逻辑,通过JavaServlet调用JSP文件的方式来将网站的逻辑和内容分离。
一般来说,在实际的JSP引擎中,JSP页面在执行时是编译式,而不是解释式的。
解释式的动态网页开发工具如ASP、PHP3等由于速度等原因已经满足不了当前大型电子商务应用的需要了,传统的开发技术都在向编译执行的方式改变,如ASP→ASP+;PHP3→PHP4。
在JSP规范书中,并没有明确要求JSP中的程序代码部分(称为Scriptlet)一定要用Java来写。
实际上,有一些JSP引擎就是采用的其他脚本语言,如EMAC-Script、WebL等,但实际上这几种脚本语言也是构建在Java上面,编译为Servlet来实现的。
按照JSP规范书写,和Java没有任何关系的Scriptlet也是可以的,不过,由于JSP的强大功能主要在于能和JavaBeans、EnterpriseJavaBeans共同运转,所以即使是Scriptlet部分不使用Java,编译成的执行代码也应该是与Java相关的。
二、JSP相对于竞争技术的优势
许多年前,Marty受到邀请,参加一个有关软件技术的小型(20个人)研讨会,做在Marty旁边的人是JamesGosling---Java编程语言的发明者。
隔几个位置,是来自华盛顿一家大型软件公司的高级经理。
在讨论过程中,研讨会的主席提出了Jini的议题,这在当时是一项新的Java技术.主席向该经理询问他的想法.他继续说,他们会持续关注这项技术,如果这项技术变得流行起来,他们会遵循公司的“接受并扩充(embraceandextend)”的策略.此时,Gosling随意地插话说“你的意思其实就是不接受且不扩充(disgraceanddistend)。
”
在此,Gosling的抱怨显示出,他感到这个公司会从其他公司那里拿走技术,用于他们自己的目的.但你猜这次怎么样?
这次鞋子穿在了另一只脚上。
Java社团没有发明这一思想----将页面设计成由静态HTML和用特殊标签标记的动态代码混合组成.。
ColdFusion多年前就已经这样做了。
甚至ASP(来自于前述经理所在公司的一项产品)都在JSP出现之前推广了这种方式。
实际上,JSP不只采用了这种通用概念,它甚至使用许多和ASP相同的特殊标签。
因此,问题变成:
为什么使用JSP,而不使用其他技术呢?
我们的第一反应是我们不是在争论所有的人应该做什么。
其他这些技术中,有一些也很不错,在某些情况下也的确是合情合理的选择.然而,在其他情形中,JSP明显要更好一些。
下面给出几个理由。
2.1与.NET和ActiveServerPages(ASP)相比
.NET是Microsoft精心设计的一项技术。
ASP.NET是与servlets和JSP直接竞争的技术。
JSP的优势体现在两个方面。
首先,JSP可以移植到多种操作系统和Web服务器,您不必仅仅局限于部署在Windows和IIS上尽管核心.NET平台可以在好几种非Windows平台上运行,但ASP这一部分不可以。
您不能期望可以将重要的ASP.NET应用部署到多种服务器和操作系统。
对于某些应用,这种差异没有什么影响。
但有些应用,这种差异却非常重要。
其次,对于某些应用,底层语言的选择至关重要。
例如,尽管.NET的C#语言设计优良,且和Java类似,但熟悉核心C#语法和众多工具库的程序员很少。
此外,许多开发者依旧使用最初版本的ASP。
相对于这个版本,JSP在动态代码方面拥有明显的优势。
使用JSP,动态部分是用Java编写的,而非VBScript过其他ASP专有的语言,因此JSP更为强劲,更适合于要求组件重用的复杂应用。
当将JSP与之前版本的ColdFusion对比时,您可能会得到相同的结论。
应用JSP,您可以使用Java编写“真正的代码”,不必依赖于特定的服务器产品。
然而,当前版本的ColdFusion满足J2EE服务器的环境,允许开发者容易的混合使用ColdFusion和Servlet/JSP代码。
2.2与PHP相比
PHP(“PHP:
HypertextPreprocessor”的递归字母缩写词)是免费的、开放源代码的、HTML嵌入其中的脚本语言,与ASP和JSP都有某种程度的类似。
JSP的一项优势是动态部分用Java编写,而Java已经在联网、数据库访问、分布式对象等方面拥有广泛的API,而PHP需要学习全新的、应用相对广泛的语言。
JSP的第二项优势是,和PHP相比,JSP拥有极为广泛的工具和服务器提供商的支持。
2.3与纯Servlet相比
原则上,JSP并没有提供Servlet不能完成的功能。
实际上,JSP文档在后台被自动转换成Servlet。
但是编写(和修改)常规的HTML,要比无数println语句生成HTML要方便得多。
另外,通过将表示与内容分离,可以为不同的人分配不同的任务:
网页设计人员使用熟悉的工具构建HTML,要么为Servlet程序员留出空间插入动态内容,要么通过XML标签间接调用动态内容。
这是否表示您只可以学习JSP,将Servlet丢到一边呢?
当然不是!
由于以下4种原因,JSP开发人员需要了解Servlet:
(1)JSP页面会转换成Servlet。
不了解Servlet就无法知道JSP如何工作。
(2)JSP由静态HTML、专用的JSP标签和Java代码组成。
哪种类型的Java代码呢?
当然是Servlet代码!
如果不了解Servlet编程,那么就无法编写这种代码。
(3)一些任务用Servlet完成比用JSP来完成要好。
JSP擅长生成由大量组织有序的结构化HTML或其他字符数据组成的页面。
Servlet擅长生成二进制数据,构建结构多样的页面,以及执行输出很少或者没有输出的任务(比如重定向)。
(4)有些任务更适合于组合使用Servlet和JSP来完成,而非单独使用Servlet或JSP。
2.4与JavaScript相比
JavaScript和Java编程语言完全是两码事,前者一般用于在客户端动态生成HTML,在浏览器载入文档时构建网页的部分内容。
这是一项有用的功能,一般与JSP的功能(只在服务器端运行)并不发生重叠。
和常规HTML页面一样,JSP页面依旧可以包括用于JavaScript的SCRIPT标签。
实际上,JSP甚至能够用来动态生成发送到客户端的JavaScript。
因此,JavaScript不是一项竞争技术,它是一项补充技术。
JavaScript也可以用在服务器端,最因人注意的是SUNONE(以前的iPlanet)、IIS和BroadVision服务器。
然而,Java更为强大灵活、可靠且可移植。
2.5与WebMacro和Velocity相比
JSP决非完美。
许多人都曾指出过JSP中能够改进的功能。
这是一件好事,JSP的优势之一是该规范由许多不同公司组成的社团控制。
因此,在后续版本中,这项技术能够得到协调的改进。
但是,一些组织已经开发出了基于Java的替代技术,试图弥补这些不足。
据我们的判断,这样做是错误的。
使用扩充JSP和Servlet技术的第三方工具,如ApacheStructs,是一种很好的思路,只要该工具带来的好处能够补偿工具带来的额外复杂性。
但是,试图使用非标准的工具代替JSP则不理想。
在选择一项技术时,需要权衡许多方面的因素:
标准化、可移植性、集成性、行业支持和技术特性。
对于JSP替代技术的争论几乎只是集中在技术特性上,而可移植性、标准化和集成性也十分重要。
例如,Servlet和JSP规范为Web应用定义了一个标准的目录结构,并提供用于部署Web应用的标准文件(.war文件)。
所有JSP兼容的服务器必须支持这些标准