博客系统的重要技术.docx
- 文档编号:6014643
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:8
- 大小:46.23KB
博客系统的重要技术.docx
《博客系统的重要技术.docx》由会员分享,可在线阅读,更多相关《博客系统的重要技术.docx(8页珍藏版)》请在冰豆网上搜索。
博客系统的重要技术
博客系统的重要技术
1.1jsp技术
在Sun正式发布JSP(JavaServerPages)之后,这种新的Web应用开发技术很快引起了人们的关注。
JSP为创建高度动态的Web应用提供了一个独特的开发环境。
按照Sun的说法,JSP能够适应市场上包括ApacheWebServer、IIS4.0在内的85%的服务器产品。
JSP与ASP(ASP详见第6章所述)非常相似。
两者都提供在HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。
同时,ASP和JSP都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。
在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。
程序片段可以操作数据库、重新定向网页以及发送email等等,这就是建立动态网站所需要的功能。
所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无JavaApplet,甚至无Frame。
ASP和JSP的区别主要有以下两点:
一是ASP的编程语言是VBScript之类的脚本语言,JSP使用的是Java、JavaScript等;二是ASP与JSP这两种技术的语言引擎用完全不同的方式处理页面中嵌入的程序代码。
在ASP下,VBScript代码被ASP引擎解释执行;在JSP下,代码被编译成Servlet并由Java虚拟机执行,这种编译操作仅在对JSP页面的第一次请求时发生。
JSP技术在多个方面加速了动态Web页面的开发。
它具有很多优点。
首先,它可以将内容的生成和显示进行分离。
使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面;使用JSP标识或者小脚本来生成页面上的动态内容。
生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。
如果核心逻辑被封装在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。
在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBCTM技术访问数据库,或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。
这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。
其次,强调可重用的组件。
绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者EnterpriseJavaBeansTM组件)来执行应用程序所要求的更为复杂的处理。
开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。
基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。
第三,采用标识简化页面开发。
Web页面开发人员不会都是熟悉脚本语言的编程人员。
JavaServerPage技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。
标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。
JSP技术实际上是通过引擎JSP把JSP标签、JSP页中的Java代码甚至连同静态HTML内容都转换为大块的Java代码。
这些代码块被JSP引擎组织到用户看不到的JavaServlet中去,然后Servlet自动把它们编译成Java字节码。
这样,当网站的访问者请求一个JSP页时,在他不知道的情况下,一个已经生成的、预编译过的Servlet实际上将完成所有的工作。
非常隐蔽而又高效。
因为Servlet是编译过的,所以网页中的JSP代码不需要在每次请求该页时被解释一遍。
JSP引擎只需在Servlet代码最后被修改后编译一次,然后这个编译过的Servlet就可以被执行了。
由于是JSP引擎自动生成并编译Servlet,不用程序员动手编译代码,所以JSP能提供高效的性能和快速开发所需的灵活性。
1.2JSP的优点
1,将内容的生成和显示进行分离
使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。
使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求来变化的,例如请求帐户信息或者特定的一瓶酒的价格)。
生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。
如果核心逻辑被封装在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。
在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBCTM技术访问数据库,或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。
这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。
2,生成可重用的组件
绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者EnterpriseJavaBeansTM组件)来执行应用程序所要求的更为复杂的处理。
开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。
基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。
3,采用标识简化页面开发
Web页面开发人员不会都是熟悉脚本语言的编程人员。
JavaServerPage技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。
标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。
通过开发定制化标识库,JSP技术是可以扩展的。
今后,第三方开发人员和其他人员可以为常用功能创建自己的标识库。
这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。
4,将内容的生成和显示进行分离
与SERVLETS相比,JSP能提供所有SERVLETS功能,但它比用println书写和修改HTML更方便。
此外,你可以更明确的进行分工,WEB页面设计人员编写HTML,只需要留出地方让SERVLETS程序员插入动态部分即可。
5,由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为JavaServlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。
6作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。
随着越来越多的供应商将JSP支持添加到他们的产品中,您可以使用自己所选择的服务器和工具,更改工具或服务器并不影响当前的应用。
2.2数据库访问技术
WWW是基于浏览器/服务器结构的,它采用TCP/IP通信协议和WWW技术集成已有的各类系统,从而把传统的客户/服务器模式中的服务器分成了一个Web服务器和多个数据库服务器。
但随着Internet的发展,静态Web站点的开发与维护变得越来越困难,其最大的问题就是缺少交互性,信息的内容只有在网站管理人员更改后才能发生变化,使得Web****不得不频繁修改他们的网页。
为了向网络用户提供大量有用的、动态的和可交互的信息,凡是能够数据库化的内容,应尽量做成数据库的形式,因为数据库形式的数据远比其他形式的数据要容易更新与管理。
基于Web的数据库访问技术是指:
在客户端安装Web浏览器,作为用户输入查询条件和显示查询结果的交互界面。
用户可以通过填写表格或输入关键字的方式来与WWW进行交互,当用户单击表格上的按钮时,表格中的数据便发送到Web服务器。
Web服务器介于Web浏览器与数据库服务器之间,负责用户输入信息的接收。
服务器将数据传送至要被处理的脚本或应用程序,并在数据库中查询数据或将数据投递到数据库中。
最后,服务器将返回结果插入到HTML页面,传送至客户端以响应用户。
这种交互性提高了用户参与的积极性。
数据库引擎是Web数据库站点最重要的组成部分之一。
当我们评价一个Web数据库引擎的时候,首先应考虑多用户问题,也就是说,数据库必须能够支持多个并发用户的访问。
另外,所建立的Web数据库应是关系型的。
关系数据库是一种功能完善、运行可靠的数据库系统,目前大多数的商业应用都主要依赖于这种系统,如SQLServer、Sybase和Oracle等。
在另一方面,关系数据库支持的是一个相当标准的特性集。
所有产品都以一个非常容易理解的标准语言为基础,即SQL/92语言规范。
所以在Web数据库系统中,采用何种RBMS(关系型数据库管理系统)都没有什么关系,因为它们都遵守同一个标准。
从技术发展的角度来看,以前通过浏览器访问数据库的惟一渠道是CGI方式。
随后出现了ISAPI、NSAPI和JDBC等技术方案,近来又流行ASP技术。
下面我们对这些技术逐一进行分析。
一、CGI技术
CGI(CommonGatewayInterface)是外部应用程序与Web服务器交互的一个标准接口。
CGI应用程序可以完成客户端与服务器的交互操作。
它打破了服务器软件的局限性,允许用户根据需要采用各种语言去实现无法用HTTP、HTML实现的功能,给WWW提供了更为广阔的应用空间。
例如,一个能够访问外部数据库的CGI程序可以使客户端用户通过Web服务器进行数据库的查询。
同时,CGI也为在不同的平台之间进行沟通提供了范例。
遵循CGI标准编写的服务器端的可执行程序称为CGI程序。
CGI最大的用处之一在于其与浏览Web站点的用户之间的交互能力,使信息网关、反馈机制、访问数据库、订阅和查询等一系列灵活复杂的操作得以实现。
通过这个公共网关界面,服务器可以向CGI程序发送信息,CGI程序也可以向服务器回送信息。
使用CGI实现Web与数据库的互连,最大的优点在于其通用性。
目前几乎所有的HTTP服务器都支持CGI。
CGI程序与服务器、客户机的关系及遵守的协议和标准可用图1来说明。
首先,客户端根据某资源的URL向WebServer提出请求,WebServer的HTTPDaemon(守护进程)将此请求的参数通过标准输入stdin和环境变量(EnvironmentVariable)传递给指定的CGI程序,并启动此应用程序进行处理。
处理结果通过标准输出stdout返回给HTTP
Daemon进程,再由HTTPDaemon进程返回给客户端,由浏览器负责解释执行,将最终结果显示在用户面前。
CGI程序的执行一般有两种调用方式:
一是通过URL直接调用,在浏览器的URL栏里直接写入上述地址就可以调用该程序;另一种方式,也是主要的方式,是通过交互式主页中的FORM栏调用,通常都是用户在填完一张输入信息主页后按"确认"按钮启动CGI程序。
主页的交互一般都是这样调用CGI来完成的。
从编程语言的角度讲,CGI只是一个普通的程序,只不过其输入、输出的处理比较特殊,只要能达到交互的目的,CGI程序可以使用Perl、C、C++,FORTRAN和数据库语言等任何能够形成可执行程序的语言编写。
WinCGI是由标准CGI演变而来的。
WinCGI允许作为应用程序运行的服务器使用Windows应用程序的服务,包括VisualBasic程序。
使用这个界面,一个以WinCGI为基础的程序是从磁盘文件中读取信息而不是从环境变量或标准输入中读取,并且把得出的最后数据写到文件中而不是写到标准输出中。
CGI的跨平台性能极佳,几乎可以在任何操作系统上实现,如DOS、Windows、Unix、OS/2、Macintosh等。
CGI的缺点也是显而易见的:
CGI的应用程序一般都是一个独立的可执行程序,与Web服务器各自占据着不同的进程,而且一般一个CGI程序只能处理一个用户请求。
每当有一个用户请求,就会激活一个CGI进程。
当用户请求数量非常多时,大量的CGI程序就会大量挤占系统的资源,如内存、CPU时间等,造成CGI运行效率低下。
另外CGI的功能有限、开发较为复杂,且不具备事务处理(Transaction)功能,这在一定程度上限制了它的应用。
二、ISAPI
数据库程序的一个关键组件是数据库API(ApplicationProgramInterface)。
每个数据库引擎都带有一系列库(如WindowsNT下使用的动态链接库)。
只有通过这种库,应用程序才能连接和使用数据库引擎。
对于特定的数据库产品,应用程序对动态链接库的调用是专用的。
根据定义,每种数据库系统都有属于自己的专有调用接口,例如对SQLServer设计的API程序,就不能用它访问Oracle或Informix数据库。
Web服务器的供应商为了扩展服务器的性能,各自开发了API应用程序接口来取代CGI。
目前最流行的两种API是Microsoft的ISAPI和Netscape的NSAPI,这两种接口允许我们以标准方式编写Web服务器交互的应用程序。
其中对数据库访问的功能主要是以IDC文件形式提供给客户的,在IDC文件中定义了数据源、返回的模板以及动态的SQL语句。
ISAPI是Microsoft提供的一套面向Internet服务的API接口,用它编制的程序以动态链接库(DLL)的形式存在,可实现CGI程序所能提供的全部功能。
ISAPI的工作原理和CGI大体上是相同的,都是通过交互式主页取得用户输入信息,然后交服务器后台处理。
但是二者在实现机制上大相径庭。
ISAPI与CGI最大的区别在于:
在ISAPI下建立的应用程序都是以动态链接库的形式存在的;而CGI的应用程序一般都是可执行程序。
在ISAPI调用方式中,被用户激活的DLL和WWW服务处于同一进程中,在处理完某个用户的请求后不会马上消失,而是和WWW服务器一起继续驻留在内存中,等待处理其他用户的HTTP请求,直到过了指定时间后一直没有用户输入为止。
基于ISAPI的所有进程都可以获得HTTPServer上的任何资源,而且当它调用外部CGIScript时,需要的开销也较单纯的CGI少。
因此ISAPI的运行效率要显著高于CGI程序。
ISAPI的工作过程如图2所示。
图2通过ISAPI接口访问Web数据库
由于开发ISAPI应用要用到Microsoft的一套API,所以能用来开发ISAPI应用的语言不如CGI多,主要有VisualC++4.1以上版本,也可以使用VisualBasic5.0、BorlandC++5.0等。
ISAPI可以用来写Web服务器(如IIS)的OLE服务器扩展和过滤器,例如VisualC++5.0MFC提供了5个类(CHttpServer、CHttpServerContext、CHtmlStream、CHttpFiler、CHttpServerFilter)用来写ISAPI应用。
三、ODBC
API方法与Web服务器结合紧密,所以性能较高。
但是利用底层的API开发数据库访问程序仍然很困难,因此一般使用基于底层API的高层数据库编程接口,这就是我们所说的ODBC。
ODBC是"开放数据库互连"的简称,是一种使用SQL的应用程序接口(API)。
ODBC一个最显著的优点是用它生成的程序与数据库或数据库引擎是无关的。
ODBC可使程序员方便地编写访问各DBMS厂商的数据库的应用程序,而不需了解其产品的细节。
Web服务器通过数据库驱动程序ODBC向数据库服务器发出SQL请求,数据库服务器接到的是标准的SQL查询语句,数据管理系统执行SQL查询并将查询结果再通过ODBC传回Web服务器。
许多服务器扩展程序使用包含ODBC层的系统结构。
ODBC是为调用关系数据库提供统一途径的一类API,由于它适用于许多不同的数据库产品,因此是服务器扩展程序开发者们理所当然的选择。
MicrosoftDeveloperStudio为大多数标准的数据库格式提供了32位ODBC驱动器。
这些标准数据格式包括有SQLServer、Access、Paradox、dBase、FoxPro、Excel、Oracle以及MicrosoftText。
如果用户希望使用其他数据格式,则需要安装相应的ODBC驱动器及DBMS。
用户使用自己的DBMS数据库管理功能生成新的数据库模式后,就可以使用ODBC来登录数据源。
对用户的应用程序来说,只要安装有驱动程序,就能注册很多不同的数据库。
四、JDBC
Java语言显示出优于以往编程语言的诸多特色,赢得了众多数据库厂商的支持。
为了同时连接到多个数据库进行并行的联合查询,可以充分利用Java语言本身的特色。
由于Java是一种面向对象的、多线程的网络编程语言,因此能够用多个线程对应多个不同的数据库进行查询操作。
用户发出的同一条查询语句同时启动多个线程,并行运行,同时进行异构数据库的联合查询。
在数据库处理方面,Java提供了JDBC(Java数据库连接:
JavaDatabaseConnectivity),为数据库开发应用提供了标准的应用程序编程接口。
与ODBC类似,JDBC也是一种特殊的API,是用于执行SQL语句的Java应用程序接口(JavaAPI),它规定了Java如何与数据库进行交互作用。
JDBC由一组用Java语言写的类和接口组成,利用Java机制设计的标准SQL数据库连接接口JDBC去访问数据库。
JDBC也是一种规范,其宗旨是让各数据库开发商为Java程序员提供标准的数据库访问类和接口。
JDBC与Java结合,使用户很容易地把SQL语句传送到任何关系数据库中,程序员用它编写的数据库应用软件,可在各种数据库系统上运行。
采用JDBC可以很容易用SQL语句访问任何商用数据库(或称异构数据库),如SQLServer,Sybase或Oracle。
采用Java和JDBC编写的数据库应用程序具有与平台无关的特性,很容易用SQL语句访问任何商用数据库,而不必为每一种数据库平台编写不同的程序。
JDBC访问数据库的过程是:
首先用户的浏览器连接到Web服务器上,下载含有Java小程序的HTML页,Java小程序在客户端运行,使用JDBC接口,绕过Web服务器,直接与数据库服务器交互,并直接把查询结果的HTML页返回到浏览器。
与ODBC一样,JDBC提供给程序员的编程接口由两部分组成,即面向应用的编程接口JDBCAPI和供底层开发的驱动程序接口JDBCDriverAPI。
JDBCAPI是为应用程序员提供的,是一系列抽象的接口,它使得应用程序员能够进行数据库连接,执行SQL查询,并且得到返回结果。
而JDBCDriverAPI则是为数据库厂商提供的编程接口。
基于Java的JDBC发展迅速。
Sun承诺任何JavaApplet或者Java应用软件都能够与数据库结合。
由于JDBC利用了Java的跨平台特色,因此,它成为Intranet和Internet环境下访问异构数据库的一种较优方式。
五、方案比较与结论CGI根据浏览器端的http请求激活相应进程,每一个请求对应一个进程。
当同时有很多请求时,程序挤占系统资源,造成效率低下。
ISAPI针对这一缺点进行改进,利用DLL(动态链接库)技术,以线程代替进程,提高了性能和速度,但要考虑线程的同步问题,而且开发步骤烦琐。
这两种技术还存在另外一个问题,那就是开发困难。
程序的开发和HTML写作是两个完全不同的过程,需要专门的程序员开发。
而另一些较简单的开发技术如JavaScript和IDC(InternetDatabaseConnector)等功能有限。
Microsoft的ODBCAPI是使用最广泛的访问数据库规范。
ODBC2.0访问数据库时存在同步与异步执行模式之分,如果设计不当,则易发生系统故障甚至系统死锁。
但是同步执行模式可以简化程序编制的复杂性。
程序员不用过多地了解较复杂的ODBC2.0API的使用,而只需使用ODBC的同步执行模式或使用数据控制项和数据库对象变量来编写应用程序,可以提高开发效率,但程序运行速度比不上异步执行模式的速度。
JDBC保持了ODBC的基本特性。
两者都基于X/OpenSQL调用级接口(CLI:
CallLevelInterface)标准。
它们的不同就在于JDBC建立在Java语言基础上,并充分利用了其特色,易于使用;ODBC使用的是C界面,C语言大量使用了Java语言中没有的指针功能,不适于以Java为界面的JDBC直接使用。
同时,JDBC确保了"100%纯Java"的解决方案。
这样,JDBC应用无需像ODBC应用那样要进行客户机的安装和管理。
以上这些方案,从Intranet的技术实现来衡量,它们仍不适用于快速开发、及时维护和大面积的技术普及。
ASP技术的出现,使动态交互式Web主页设计成为一件轻松愉快的事。
只要几行脚本语句,就能将后台的数据库信息发布到Internet/Intranet上,在编程和网页脚本的可读性方面大大优于传统的技术方案。
ASP提供了更方便、更简单的数据库访问方法,使开发基于数据驱动的Web应用程序更加容易。
总之,在浏览器中访问Web数据库的方法较多,开发Web应用程序的软件人员需要选择适当的方法,但有些方法的编程接口较为复杂,妨碍了它的进一步应用。
作为Web页****,更希望把精力集中在信息发布或程序设计本身,而不愿意在接口方面耗费太多的精力。
2.3ADO
ADO(ActiveXDataObjects)是微软公司提供给网页开发者在网页中存取数据库的最新技术,它也是ASP内置的重要组件,ADO主要的目的是为了存取或修改数据源的数据、或增加数据到指定的数据源,数据源不仅包括数据库,而且包括dBase、Excel、Foxpro、Access或文本文件等一些小型的数据表,所以,只要是ODBC驱动程序所能存取的数据源皆是ADO存取的对象。
ADO主要是由Connection对象、Command对象、Parameter对象、Recordset对象、Field对象、Property对象及Error对象等七个对象与Fields数据集合、Properties数据集合、Parameters数据集合及Errors数据集合等四个数据集合所组合而成,其功能概述如下。
ADO提供的七个对象:
1.Connection对象负责与指定的数据源进行连接,除此之外,它还可以通过事物(Transaction)来确保在事物中所有的数据源变更的全部成功。
2.Command对象负责对数据库提供请求,也就是传递指定的SQL命令。
换而言之,Command对象必须经过一个已经建立的连接(Connection对象)发出数据操作语言(DML,DataManipulationLanguage)来操作数据源的数据,这些命令通常包括INSERT(增加记录)、DELETE(删除记录)、UPDATE(更新记录)、或是SELECT(以Recordset的形式选取数据)等。
除此之外,也可以通过Command对象对数据库发出数据定义语言(DDL,DataDefinitionLanguage),例如CREATETABLE(建立数据表)、DROPTABLE(删除数据表)或ALTERTABLE(修改数据表结构)等。
3.Parameter对象负责传递Comman
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 博客 系统 重要 技术
![提示](https://static.bdocx.com/images/bang_tan.gif)