1文献综述摘要:CGI、PHP、ASPJSp都是常见的动态网页技术,有着许多相似之处,同时又有各自的特点。文章重点从编程语言、平台支持等方面比较了PHP、ASP和JSP的技术特点。关键词:CGI;PHP;ASP;1、绪论随着(WorIdWideWeb)的普及,动态网页技术也急速发展。从原来的CGI(Com.monGatewayIn—terface)至0ASP(ActiveServerPage),都从某种程度上满足了网页开发人员对动态网页开发技术的需求。但无论是CGI还是ASP都存在一定的局限性,如CGI对服务器资源的耗费.ASP只能同MicrosotiIIS一起使用等,这都限制了CGI/ASP技术的使用范围,极大地阻碍了它们的推广。广大的页面开发人员都热切地盼望一种统一的页面开发技术的应用普及,该技术应该具有以下特点:(1)与操作平台无关.能够在任何Web或应用程序服务器一运行;(2)将应用程序逻辑和页面显示分离;(3)提供代码重用,简化开发基于Web的交互式应用程序的过程。JSP(JavaServerPages)技术就是被设计用来满足此类婴求的。JSP是由SunMicroSystem公司于1999年6月推出的新的网页开发技术,它是基于JavaSelw—let以及整个Java体系的Web开发技术,是Servlet2.1API的扩展。利用这技术,可以建立先进、安全和跨平台的动态网站。Java是未来的主流开发技术,具有很多优势。JSP则是Java在Internet/IntranetWeb上的重要应用技术,得到了广泛的支持和承认,它可以和各种Java技术完好地结合在一起,从而实现非常复杂的应用。作为一种基于文本的、以显示为中心的开发技术,JSP提供了JavaServlet的所有优点。为了做到逻辑功能和显示功能分开,JSP已经可以和JavaBeans、EnterpriseJavaBeans(EJB)和Servlet一起工作。JSP的开发人员可以通过使用Jav.aBeans、EJB和Servlet来完成大部分与网站逻辑相关的工作,而仅仅把显示的工作交给JSP页面来完成。内容和显示逻辑分开的好处在于,更新页面外观的人员不必懂得Java代码,而更新Java类的人员也不必是设计网页的行家。这就可以用带Java类的JSP页面来定义Web模板,以建立一个具有相似外观的页面组成的网站。Java类完成数据提供,在模板中就没有Java代码,这意味着这模板可2以由一个HTML编写人员来维护。JSP作为当前主流的网页开发技术,具有如下特点:(1)将内容的生成徊显示进行分离:使用JSp技术.Web页面丌发人员可以使用HTML或者XML标识来设计和格式化最终的页而。使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求米变化的)。生成内容的逻辑被封装在标识和JavaBeans组件中,并且被捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和JavaBeans中,那么其他人,如Web管理人员和页面设计者,就能够编辑和使用JSP页面,而不影响内容的生成。(2)强调aJ.重用的组件:绝大多数JSP页而依赖于可重J1丁的、跨平台的组件来完成应用程序所要求的更为复杂的处理。得益于Java的操作平台无关性,l丌发人员能够很方便共享和交流执行普通操作的组件,或者使得这些组件为更多的使用者所使用。基于组件的方法加速了总体的开发过程,极大地提高了项日整体开发的效率。虽然JSP功能强大,但是它要求网页开发人员对Java相当熟悉。而现在Java程序员还比较少,对一般的网页开发人员来说,JSP的语法还是比较难丁掌握的。所以,就需要有一种网页开发T具,为一般的网页开发人员提供常用的JSP应用,让只懂得一般页而开发技术(HTML)的开发人员也能够使用JSP的强大功能。2、系统设计及实现2.1设计目标本系统的设计目标是为只懂得HTML但完全不了解JSP的一般网页开发人员提供一个网页开发工具,使他们能够根据系统文档,通过标签使用JSP的常用功能.最后生成一个只包含静态HTML和JSP标签的动态JSP网页。2.2主要技术本系统在设计时,主要考虑使用模板和JSP标签的技术来实现。2.2.1模板技术模板技术被广泛地应用于各种开发和应用系统中。它预先生成一些常用的框3架结构,使用户可以根据自己的需要方便地从模板库中选择模板,而不用自己重新去搭建,节省了用户的开发时间.方便了用户的使用。在本系统中,将页面按照功能类型进行分类,归纳出常用的页面类型,生成模板库。2.2.2标签库技术在JSP中,动作是可以创造与访问程序语言对象和影响输出流的元素。JSP定义了6个标准的动作。除了这6个标准动作以外,用户可以定义自己的动作来完成特定的功能。这些动作被称为客户化动作,它们是可重用的程序模块。通过这些动作,程序员就可以在JSP页面中把页面的显示功能也部分地封装起来,使整个页面更加简洁和易于维护。在一个JSP页面中。这些客户化动作是通过客户化标签来调用的。而标签库(TagLibrary)就是客户化标签的集合。JSP标签库是一种通过JavaBeans生成基于XML的呦本的方法。它是JSP的最大特点之一。通过标签库.能够无限制地扩展JSP应用,完成任何复杂的应用需求。JSP标签库具有以下特点:(1)易于使用:JSP中的标签和一般的fiTML标记外表上是完全一样的,使用起来和普通的HTML标记一样方便。(2)易于代码重用:标签库中的每一个标签都能完成一定的功能。一旦定义好了一个标签库,只需要把这个标签库包装成一个Jar文件,那么以后只要在别的系统中使用这个标签库就行了,而不用重新开发代码,极大地提高了系统开发效率,降低了开发成本。(3)易于代码维护:所有的应用逻辑都封装在标签处理器和JavaBeans中,所有的标签都集中在一个标签库中。如果需要更新代码或者需耍修改一个网页上的功能,只需要修改相应的标签即可。通过这种统一维护方式,不用在每个网贞上去作修改,极大地减少了维护的工作量.节约了维护成本。(4)易于系统扩充:如果需要向系统中添加新的:L力能,只需要定义一个新的标签米完成这一功能即可,无需对系统的其它方面作任何改动。标签库可以继承JSP规范各方而的特性。这样就r以无限制地扩展和增加JSP的功能,而不需要等待下一版本JSP的出现。2.3系统组成本系统主要由4个部分组成。4(1)数据库连接部分:本系统支持常用的几个数据库,包括Oracle、Sybase、MSSQLServer、MySQL和DB2,根据用户选择的数据库类和用户提供的数据库名称、用户名及密码,使用JDBC与数据库相连。(2)系统基本表生成部分:与数据库连接以后,根据同数据库相连的用户名生成两个系统基本表TC-Tables和TC—Columns,TC—Tables表包含在该数据库中属于该用户所有表的英文名称、中文名称和一些属性,如是含修改、是否可查询等;TC—Columns表包含在该数据库中属于该用户的所有表有列的中英文名称和其它一些属性。如是否可显示、是否可查询等这两个系统基本表在整个系统的丌发过程中提供用户所使用数据库的基本信息。(3)模板选择和网页生成部分:该部分是系统的核心部分。它包含了两个子模块:①模板选择部分:系统为用户提供模板选择界面,让用户根据需要从模板库中选择所要使用的模板。②模板处理部分:根据用户选择的模板,系统调用指定的模板处理模块对这个模板进行处理。当处理程序遇到模板中的标签时,就为用户提供交互界面,让用户为指定的标签输入参数,并由系统验证用户输入的标签的有效性。最后由系统完成JSP页面的生成。(4)网页预览和修改部分:网页生成出来以后.系统为用户提供了一个网页预览窗口和代码查看修改窗口。通过这个预览窗口,用户可以预览一下生成出来的JSP页面的效果。如果用户对页面的静态方面的效果不太满意,用户可以通过代码查看修改窗口修改代码中的HTML代码。如果用户对页面的静态效果有进一步的要求.系统还为用户提供了一个调用DreamWeaver编辑器的接口,用户可以使用它来对生成出米的JSP页面的静态效果进行进一步的修改和完善。2.4系统的实现2.4.1模板库和标签库的实现标签库的规划和设计在整个系统设计中至关重要,它关系到了代码重用的程度和系统运行的效率。它的规划应该遵循以下原则。(1)在标签巾应该尽量少的包含静态的HTML。对于一般用户来说,标签是透明的。用户不能够查看和修改标签。如果在标签中包含了过多的静态HT-ML语句,5将影响用户对页而的静态效果的修改和完善,限制标签的使用。(2)尽量提高代码的重用度。在对JSP应用进行分类时,尽量把公用的JSP应用提取出来,形成标签。而不用在每个标签中都重复实现该应用。这样在以后要对该应用进行修改和完善时,只需对这一个标签进行修改即可,易于代码的维护。(3)方便用户的使用。在设计标签库时,应该充分考虑到用户的使用情况,使用户能够很容易和方便地理解和使用标签。①标签库的定义:定义一个标签库,必须首先定义一个标签库描述文件(TLD)。这是一个基于XML的脚本文件,在这个文件中定义了XML的版本、所使用的编码、标签审的版本、所使用JSP的版本、标签库的名称和这个库中所包含的所有标签的定义和参数描述,包括标签的名称,标签所对应的Java类,标签的描述信息等。②标签的实现:一个标签就是一个特殊的Java类,这个类必须继承TagSuppolt类,这个类是在javax.servlet.jsp.tagext包中定义的。在标签类中,包含了这个标签的参数初始化方法(Set/Get)、标签的主体处理方法(Handler)以及供下一级标签调用的方法等。③模板的实现:一个模板就是一个含有标签引用的JSP文件。为。J,在模板中引用所定义的标签。必须首先引入标签库。%@tagliburi=“tag.tld”prefix=“etag”%其中uri指定标签库描述文件的路径;pre—fix指定引用标签时所使用的前缀。在模板中引用指定的标签时,使用引入标签库时所指定的前缀,指定标签的名称;为标签的参数赋值。2.4.2系统开发环境本系统主体程序开发使用的是Borland公司的JBuilder6.0,模板开发使用是Microsoft公司的Front—Page2000。标签库开发使用的是U1.traEdit编辑器,JDK采用的是JDK1.4。系统测试环境是JRun3.0。3、常见动态网页技术开发比较传统的Web应用只提供有限的静态Web页面,不能根据用户的需求提供不同的信息(包括显示格式和内容)。随着计算机和互联网技术的飞速发展,由于动态网页具有良好的交互性、数据库查询、缩短查询时间、提高浏览效率等一些静态网页所无法比拟的优点,逐渐成为构建WEB网站的主流。常见的动态网页技术有CGI、PHP、ASP和JSP等几种。63.1CGl简介CGI(CommonGatewayInterface)是实现在服务器端执行程序的一种方法,运行程序输出的是HTML页面,然后wFB服务器再把这个静态页面返回给浏览器作为请求的响应。最流行的CGI语言是Perl和shel1脚本,但是也可以使用C、c¨以及Java等语言进行编写。CGI可以访问存储在数据库中的数据或者其他系统中的文件,实现动态生成WEB页面的效果。许多著名网站,如新浪、雅虎、网易的搜索引擎都采用了CGI技术。CGI有较强的进程隔离功能,每个CGI程序运行于自己的进程空间,独立于wEB服务器。由于对CGI的每一个请求都要产生一个独立的进程,因此执行效率受到较大影响,占用计算机资源也较多。为了提高性能,CGI的编程技术也不断发展,如HFastCGI技术。PHP、ASP和JSP都是一个进程处理多个请求的,无论多少人在线,都只有一个进程,执行效率相比于CGI要高得多。3.2PHP、ASP和JSP技术特点比较3.2.1.在编程语言方面PHP(ProfessionalHypertextPreprocessor)是一种用于创建动态WEB页面的服务器端脚本语言,融合了C、Ja