日期:2013-02-15  浏览次数:20802 次

稍为对网络有点熟悉的人都知道,HTML是编制网页的基本语言,但它只能用于静态的网页。当今的Web已经不再是早期的静态信息发布平台,它已被赋以更丰富的内涵。现在,我们不仅需要Web提供所需的信息,还需要提供可个性化搜索的功能,可以收发email,可以进行网上销售,可以从事电子商务等等。为实现以上功能必须使用更新的网络编程技术制作动态网页。所谓动态,指的是,按照访问者的不同需要,对访问者输入的信息作出不同的响应,提供响应的信息。笔者根据自己的实际使用经历,写下心得感受,并举例说明。
  动态网页技术的原理是:使用不同技术编写的动态页面保存在WEB服务器内,当客户端用户向WEB服务器发出访问动态页面的请求时,WEB服务器将根据用户所访问页面的后缀名确定该页面所使用的网络编程技术,然后把该页面提交给相应的解释引擎;解释引擎扫描整个页面找到特定的定界符,并执行位于定界符内的脚本代码以实现不同的功能,如访问数据库,发送电子邮件,执行算术或逻辑运算等,最后把执行结果返回WEB服务器;最终,WEB服务器把解释引擎的执行结果连同页面上的HTML内容以及各种客户端脚本一同传送到客户端。虽然,客户端用户所接收到的页面与传统页面并没有任何区别,但是,实际上页面内容已经经过了服务端处理,完成了动态的个性化设置。目前实现动态网页主要有以下4种技术。
1.CGI技术
  CGI ---Common Gateway Interface,公用网关接口。它可以称之为一种机制。因此您可以使用不同的程序编写适合的CGI程序,如Visual Basic、Delphi或C/C++等,您将已经写好的程序放在WEB服务器的计算机上运行,再将其运行结果通过WEB服务器传输到客户端的浏览器上。我们通过CGI建立WEB页面与脚本程序之间的联系,并且可以利用脚本程序来处理访问者输入的信息并据此作出响应。事实上,这样的编制方式比较困难而且效率低下,因为你每一次修改程序都必须重新将CGI程序编译成可执行文件。
  最常用于编写CGI技术的语言是Perl(Practical Extraction and Report Language,文字分析报告语言),它具有强大的字符串处理能力,特别适合用于分割处理客户端Form提交的数据串;用它来编写的程序后缀为.pl。
我们来看个简单的例子hello.pl:
#!/usr/bin/perl
$Hello="Hello,CGI"; #字符串变量;
$Time=2;
print $Hello," for the",$Time,"nd time!","\n"; #输出一句话;
# End hello.pl
输出结果:
Hello,CGI for the 2nd time!
  程序中第一个注释行具有特殊的含义,它是UNIX系统中shell的一条指令,表示在命令行上运行其后的命令。第一行是必需的,/usr/bin/perl提供了Perl解释器的完整路径名。例中的井号(#)为Perl语言中的注释字符。P erl技术参考站点:http://www.perl.com。
  CGI调用数据库需要安装DBI----DataBase Interface,即数据库接口技术。DBI提供了基于Perl的标准界面连接到各种不同的SQL引擎上。各种数据库的DBI模块可在此找到:http://www.perl.com/CPAN-local/modules/by-module/DBI/。以下是连接ORACLE数据库的一个例子:
use DBI; #调用DBI;
#以下三项是数据库名,调用数据库的用户名,密码;
$dbname="dbi:Oracle:DBName";
$user="user";
$pass="pass";

#联系数据库;
$dbh=DBI->connect($dbname,$user,$pss) || die "Error Connecting to database \n";

#数据库查询;
$tag=$dbh->prepare("SELECT * FROM 表名");
$tag->execute; #执行查询;
die "Error:$DBI::err\n" if DBI::err; #出错判断;
my($col1,$col2); #定义只在本程序中(用my来表示)有效的两个变量;
while(($col1,$col2)=$tag->fetchrow) {
print "Column 1:$col1\n";
print "Column 2:$col2\n";
}
$dbh->disconnect or warn "Disconnection failed \n"; #断开与数据库的连接;
CGI技术已经发展的很成熟了,功能强大,例如SINA,NETEASE,SOHU等网站的搜索引擎,用的就是CGI技术。