快捷搜索:

JSP白皮书

JavaServer PagesTM (JSP)技巧为创建显示动态天生内容的Web页面供给了一个简捷而快速的措施。JSP技巧的设计目的是使得构造基于Web的利用法度榜样加倍轻易和快捷,而这些利用法度榜样能够与各类Web办事器,利用办事器,浏览器和开拓对象合营事情。

本白皮书供给了JSP技巧的周全概述,描述了其开拓背景以及这项技巧的总体目标。同时,在一个简单示例中,还描述了一个基于JavaTM技巧的页面的症构造成部分。

开拓基于Web的利用法度榜样:背景

在万维网短暂的历史中,它已经从一个大年夜部分显示静态信息的收集演化到对股票进行买卖营业和进行购书操作的一个根基举措措施。在各类各样的利用法度榜样中,对付可能应用的基于Web的客户端,看上去没有任何限定。

基于浏览器客户真个利用法度榜样比传统的基于客户机/办事器的利用法度榜样有几个好处。这些好处包括险些没有限定的客户端造访和极其简化的利用法度榜样支配和治理(要更新一个利用法度榜样,治理职员只必要变动一个基于办事器的法度榜样,而不是成千上万的安装在客户真个利用法度榜样)。这样,软件工业正迅速地向建造基于浏览器客户真个多层次利用法度榜样迈进。

这些快速增长的精美的基于Web的利用法度榜样要求开拓技巧上的改进。静态HTML对付显示相对静态的内容是不错的选择;新的寻衅在于创建交互的基于Web的利用法度榜样,在这些法度榜样中,页面的内容是基于用户的哀求或者系统的状态,而不是预先定义的翰墨。

对付这个问题的一个早期办理规划是应用CGI-BIN接口;开拓职员编写与接口相关的零丁的法度榜样,以及基于Web的利用法度榜样,后者经由过程Web办事器来调用前者。这个规划有着严重的扩展性问题??每个新的CGI要求在办事器上新增一个进程。假如多个用户并发地造访该法度榜样,这些进程将耗损该Web办事器所有的可用资本,并且系统机能低落到极其低下的地步。

某些Web办事器供应商已经考试测验经由过程为他们的办事器供给“插件”和API来简化Web利用法度榜样的开拓。这些办理规划是与特定的Web办事器相关的,不能办理跨多个供应商的办理规划的问题。例如,微软的Active Server PagesTM(ASP) 技巧使得在Web页面上创建动态内容加倍轻易,然则也只能事情在微软的IIS和Personal Web Server上。

还存在其他的办理规划,然则都不能使一个通俗的页面设计者能够随意马虎地掌握。例如,象Java Servlets这样的技巧就可以使得用Java说话编写交互的利用法度榜样的办事器真个代码变得轻易。一个Java Servlets便是一个基于Java技巧的运行在办事器真个法度榜样(与Applet不合,后者运行在浏览器端)。开拓职员能够编写出这样的Servlet,以接管来自Web浏览器的HTTP哀求,动态地天生相应(可能要查询数据库来完成这项哀求),然后发送包孕HTML或XML文档的相应到浏览器。

采纳这种措施,全部网页必须都在Java Servlet中制作。假如开拓职员或者Web治理职员想要调剂页面显示,就不得不编辑并从新编译该Java Servlet,纵然在逻辑上已经能够运行了。采纳这种措施,天生带有动态内容的页面仍旧必要利用法度榜样的开拓技术。

很显然,今朝所必要的是一个业界范围内的创建动态内容页面的办理规划。这个规划将办应当前规划所受到的限定,即:

能够在任何Web或利用法度榜样办事器上运行

将利用法度榜样逻辑和页面显示分离

能够快速地开拓和测试

简化开拓基于Web的交互式利用法度榜样的历程

JavaServer Pages (JSP)技巧便是被设计用来满意这样的要求的。JSP规范是Web办事器、利用办事器、买卖营业系统、以及开拓对象供应商间广泛相助的结果。太阳微系统公司(Sun Microsystems Inc.)开拓出这个规范来整合和平衡已经存在的对Java编程情况(例如,Java Servlet和JavaBeansTM)进行支持的技巧和对象。其结果是孕育发生了一种新的、开拓基于Web利用法度榜样的措施,给予应用基于组件利用逻辑的页面设计者以强大年夜的功能。

Web利用开拓的JavaServer Pages技巧措施

在开拓JSP规范的历程中,太阳微系统公司(Sun Microsystems Inc.)与许许多多主要的Web办事器、利用办事器和开拓对象供应商,以及各类各样富有履历的开拓团体进行相助。其结果是找到了一种为利用和页面开拓职员平衡了可移植性和易用性的开拓措施。

JSP技巧在多个方面加速了动态Web页面的开拓:

将内容的天生和显示进行分离

应用JSP技巧,Web页面开拓职员可以应用HTML或者XML标识来设计和款式化终极页面。应用JSP标识或者小脚原先天生页面上的动态内容(内容是根据哀求来变更的,例如哀求帐户信息或者特定的一瓶酒的价格)。天生内容的逻辑被封装在标识和JavaBeans组件中,并且绑缚在小脚本中,所有的脚本在办事器端运行。假如核心逻辑被封装在标识和Beans中,那么其他人,如Web治理职员和页面设计者,能够编辑和应用JSP页面,而不影响内容的天生。

在办事器端,JSP引擎解释JSP标识和小脚本,天生所哀求的内容(例如,经由过程造访JavaBeans组件,应用JDBCTM技巧造访数据库,或者包孕文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又包管任何基于HTML的Web浏览器的完全可用性。

强调可重用的组件

绝大年夜多半JSP页面依附于可重用的,跨平台的组件(JavaBeans或者Enterprise JavaBeansTM组件)来履行利用法度榜样所要求的更为繁杂的处置惩罚。开拓职员能够共享和互换履行通俗操作的组件,或者使得这些组件为更多的应用者或者客户团体所应用。基于组件的措施加速了总体开拓历程,并且使得各类组织在他们现有的技能和优化结果的开拓努力中获得平衡。

采纳标识简化页面开拓

Web页面开拓职员不会都是认识脚本说话的编程职员。JavaServer Page技巧封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容天生所必要的。标准的JSP标识能够造访和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及履行用其他措施更难于编码和耗时的功能。

经由过程开拓定制化标识库,JSP技巧是可以扩展的。往后,第三方开拓职员和其他职员可以为常用功能创建自己的标识库。这使得Web页面开拓职员能够应用认识的对象和犹如标识一样的履行特定功能的构件来事情。

JSP技巧很轻易整合到多种利用体系布局中,以使用现存的对象和技术,并且扩展到能够支持企业级的散播式利用。作为采纳Java技巧家族的一部分,以及Java 2(企业版体系布局)的一个组成部分,JSP技巧能够支持高度繁杂的基于Web的利用。

因为JSP页面的内置脚本说话是基于Java编程说话的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面就具有Java技巧的所有好处,包括壮实的存储治理和安然性。

作为Java平台的一部分,JSP拥有Java编程说话“一次编写,遍地运行”的特征。跟着越来越多的供应商将JSP支持添加到他们的产品中,您可以应用自己所选择的办事器和对象,变动对象或办事器并不影响当前的利用。

当与Java 2平台,企业版(J2EE)和Enterprise JavaBean技巧整应时,JSP页面将供给企业级的扩展性和机能,这对付在虚拟企业中支配基于Web的利用是必需的。

JSP页面看上去象什么?

JSP页面看上去象标准的HTML和XML页面,并附带有JSP引擎能够处置惩罚和抽取的额外元件。平日,JSP元件创建插入终极页面的文本。

应用示例是描述JSP技巧的最好措施。下面的JSP页面异常简单;它打印带年、当月的天,并且根据光阴应用"Good Morning"和"Good Afternoon"对您表示迎接。

该页面结合了通俗的HTML和大年夜量JSP元件组成。

对时钟JavaBeans组件的调用

对一个外部文件的包孕(用于著作权信息)

JSP表达式和脚本

Welcome

Today is

Day:

Year:

Good Morning

Good Afternoon

这个页面包孕下面这些组件:

一个JSP唆使将信息传送到JSP引擎。在这个示例中,第一行指出从该页面即将造访的一些Java编程说话的扩展的位置。唆使被设置在标记中。

固定模板数据:所有JSP引擎不能识别的标识将随结果页面发送。平日,这些标识是HTML或者XML标识。在上面的例子中包括无序列表(UL)和H1标识。

JSP动作或者标识:这些平日作为标准或定制标识被实现,并且具有XML标识的语法。在这个例子中,jsp:useBean标识实例化办事器真个Clock JavaBean。

一个表达式:JSP引擎谋略在标记间的所有器械。在上面的列表项中,时钟组件(Clock)的Day和Year属性值作为字符串返回,并且作为输出插入到JSP文件中。在上面的例子中,第一个列表项这天子,第二个是年份。

小脚本是履行不为标识所支持的功能或者将所有的器械绑缚在一路的小的脚本。JSP 1.0软件的内置脚本说话是基于Java说话的。在上面示例中的小脚本确定现在是上午照样下昼,并且据此来迎接用户。

这个例子可能小了一点,然则技巧上却不是。从营业上可以将关键的处置惩罚封装在办事器真个组件中,并且Web开拓职员能够应用认识的语法和对象很轻易地造访这些信息。基于Java的小脚本供给了一种机动的要领以履行其他功能,而不要求扩展的脚本说话。页面作为整体是可读和可理解的,这就使得查找或者预防问题以及

共享事情加倍轻易。

这些组件中的一部分鄙人面有更具体的描述。

JSP唆使

JSP页面应用JSP唆使将指令通报到JSP引擎。这此中包括:

JSP页面唆使通报页面相关的信息,例如缓冲区和线程信息或者掉足处置惩罚。

说话唆使指定脚本说话,以及所有的扩展。

包孕唆使(在上面例子中有显示)可以被用来在页面中包孕一个外部的文档。一个好的例子是著作权文档或者公司信息文档??在一个集中地点保存该文档并且在页面中包孕比在各个JSP页面中更新要轻易些。当然,被包孕的文件也可能是另一个JSP文件。

标识库唆使指出页面可以调用的一个客户标识库。

JSP标识

绝大年夜多半JSP处置惩罚将经由过程与JSP相关的基于XML的标识完成。JSP 1.0中包孕大年夜量标准标识,这些标识作为核心标识包括:

jsp:useBean 这个标识声明对一个JavaBeans组件实例的应用。假如该组件的实例不存在,JavaBeans组件将实例化和注册这个标识。

jsp:setProperty 这个标识在组件的实例中设置一个属性的值。

jsp:getProperty 这个标识获取一个组件的实例的属性值,将其转化为字符串,并且将它放入隐含工具"out"中。

jsp:include

jsp:forward

1.1版本将包孕更多的标准标识。

标识的好处在于它们易于在利用法度榜样间应用和共享。基于标识的语法的真正威力来自于客户标识库的开拓,使得对象供应商或其他职员能够为特定的要求创建和分派标识。

脚本元件

JSP页面可以在页面中包孕小的脚本,称之为小脚本(scriptlets)。小脚本是一个代码片段,在哀求的处置惩罚历程中被履行。小脚本可以和页面中的静态元件组合(正如上面的例子一样)起来创建动态天生的页面。

脚本在标志中被描述。在这对标志中的所有器械都邑被脚本描述说话引擎履行,在我们的例子中是主机上的Java虚拟机。

JSP规范支持所有常用的脚本元件,包括表达式和声明。

JSP页面的利用模型

JSP页面由JSP引擎履行,引擎安装在Web办事器或者应用JSP的利用办事器上。JSP引擎吸收客户端对JSP页面的哀求,并且天生JSP页面给客户真个相应。

JSP页面平日被编译成为Java Servlet。后者是一个标准的Java扩展,在www.java.sun.com站点有更具体的描述。页面开拓职员能够造访整个的Java利用情况,以使用Java技巧的扩展性和可移植性。

当JSP页面第一次被调用时,假如它还不存在,就会被编译成为一个Java Servlet类,并且存储在办事器的内存中。这使得在接下来的对该页面的调用有异常快的相应。(这避免了CGI-BIN为每个HTTP哀求天生一个新的进程的问题,或是办事器端引用所引起的运行时语法阐发。)

JSP页面可以包孕在多种不合的利用体系布局或者模型中。JSP页面可以用于由不合协议、组件和款式所组成的联合体中。下面的小节描述了一些可能发生的环境。

一个简单利用

在一个简单实现中,浏览器直接调用JSP页面,JSP页面自己天生被哀求的内容(可能会调用JDBC直接从数据库中获守信息)。JSP页面能够调用JDBC或者Java BlendTM组件来天生结果,并且创建标准的HTML,作为结果发送回浏览器。

这个模型基础上用JSP页面(编译成为Java Servlet)代替了CGI-BIN观点。这个措施拥有下列优点:

简单而快速地编程

页面作者可以很轻易地根据哀乞降资本状态天生动态内容

这个布局在许多利用上事情优越,但不能扩展到大年夜量的基于Web的并发客户造访稀少的企业资本,由于每个客户必须建立或者共享一个到可用内容资本的连接。例如,假如JSP页面造访数据库,可能天生许多到数据库的连接,这将影响到数据库的机能。

应用Java Servlet的一个机动的利用

在另一种可能的设置设置设备摆设摆设中,基于Web的客户机可能直接对Java Servlet进行哀求,Servlet天生动态内容,将结果绑缚到一个结果工具中并且调用JSP页面。JSP页面从该工具中造访动态内容,并且将结果(例如HTML)发送回浏览器。

这个措施创建了更多的可以为利用法度榜样间共享的可重用的组件,并且可以作为更大年夜的利用的一部分完成。然则,在处置惩罚如数据库一样的企业资本的连接时,照样存在扩展性问题。

采纳企业级JavaBean技巧的可扩展处置惩罚

JSP页面也可以作为企业级JavaBean(EJB)体系布局中的一其中心层。在这种环境下,JSP页面和后端资本经由过程EJB组件进行交互。

EJB组件治理对后端资本的造访,从而为浩繁的并发应用者供给可扩展的机能。对付电子商务或者其他利用,EJB治理买卖营业和潜在的安然性。这将简化JSP页面。这个模型将为Java 2企业版(J2EE)平台所支持。

JSP页面与XML技巧的集成

JSP页面可以用于天生XML和HTML页面。

对付简单的XML天生,开拓职员可以包孕XML标识和JSP页面的静态模板部分。对付动态XML天生,应用基于办事器的工具和天生XML输出的客户化标识。

JSP页面与XML对象不是不兼容的。只管Sun在设计JSP规范时使得JSP页面纵然手工操作对付创作者而言也是很轻易的,JSP规范同时也供给了一个机制以便于创建随意率性JSP页面的一个XML版本。经由过程这种措施,XML对象能够创作和操作JSP页面。

经由过程将JSP标识和元件转换为与XML兼容的对等物,可以应用基于XML的对象来操作JSP页面。例如,脚本可以被包孕在之中,或者基于XML标志的和中。事实上,颠末下面这样简单的几步将JSP页面转换为XML页面是可能的,这些步骤包括:

增添一个JSP根元件

将元件和唆使转换为XML兼容的对等物

为页面上其他的元件(平日非JSP)创建CDATA元件

经由过程这个与XML兼容的措施,创建HTML页面的设计者仍旧拥有一个快速创建动态Web页面的易用情况,同时,基于XML的对象和办事可以与JSP页面集成并且和JSP兼容的办事器一路事情。

JSP技巧的未来

JSP技巧被设计为一个开放的,可扩展的建立动态Web页面的标准。开拓职员可以应用JSP页面来创建可移植的Web利用,在不合的Web和利用办事器上为不合的场合所运行,而不论采纳什么得当本身场合和必要的创建对象。

经由过程与业界领袖的相助,Sun包管JSP规范是开放的和可移植的。可以应用任何客户机和办事器平台,在任何地方编写和支配它们。将来,对象供应商和其他厂商将经由过程为专门的功能供给客户化的标识库而扩展平台的功能。

JSP规范的1.0版本是通向动态Web页面天生的一个开放的工业标准措施的第一步。1.0版本经由过程一个核心标识集、隐含工具以及开初创建动态Web页面所需的基础功能构成了该措施的根基。已经有几个Web办事器,利用办事器和开拓对象供应商正在为他们的产品添加JSP1.0的支持,这样在业界已经拥有了最初的、急速的支持。

在1999晚些时刻将完成的1.1版本,经由过程更多的XML支持、客户化标识、以及与J2EE的集成而扩展这个版本。并且供应商们可能会有选择地扩展和扩充在JSP规范中基础的、必需的功能。JSP引擎能够强有力地支持多种脚本说话和工具模型。在业界扩充和应用JSP技巧能力的同时,也向Sun允诺将包管JSP技巧维持平台和办事器间固有的可移植性。

您可能还会对下面的文章感兴趣: