标题：动态网页技术
简介
所谓“动态”，并不是指那几个放在网页上的GIF图  书片，动态网页技术有以下几个特点。 
1,"交互性"即网页会根据用户的要求和选择而动态改变和响应,将浏览器作为客户端界面,这将是今后WEB发展的大势所趋. 
2,"自动更新"即无须手动地更新HTML文档,便会自动生成新的页面,可以大大节省工作量. 
3,"因时因人而变",即当不同的时间,不同的人访问同一网址时会产生不同的页面。 
除了早期的CGI外，目前主流的动态网页技术有JSP,ASP,PHP等
1.1.1 CGI
在早期，动态网页技术主要采用CGI技术，即Common Gateway Interface(公用网关接口)。在早期，你可以使用不同的程序编写合适的CGI程序，如Visual Basic,Delphi或C/C++等。虽然CGI技术成熟而且功能强大，但由于编程困难，效率低下，修改复杂等缺陷，所以有逐渐被新技术取代的趋势。 
可以使用不同的程序编写合适的CGI程序，如Visual Basic、Delphi或C/C++等，您将已经写好的程序放在WEB服务器的计算机上运行，再将其运行结果通过WEB服务器传输到客户端的浏览器上。我们通过CGI建立WEB页面与脚本程序之间的联系，并且可以利用脚本程序来处理访问者输入的信息并据此作出响应。事实上，这样的编制方式比较困难而且效率低下，因为你每一次修改程序都必须重新将CGI程序编译成可执行文件。 
最常用于编写CGI技术的语言是Perl（Practical Extraction and Report Language，文字分析报告语言），它具有强大的字符串处理能力，特别适合用于分割处理客户端Form提交的数据串；用它来编写的程序后缀为.pl。
1.1.2 ASP
简介ASP更精确的说是一个中间件，这个中间件将Web上的请求转入到一个解释器中，在这个解释器中将所有的ASP的Script进行分析，再进行执行，而这时可以在这个中间件中去创建一个新的COM对象，对这个对象中的属性和方法进行操作和调用，同时再通过这些COM组件再完成更多的工作。所以说，ASP强大的不在于它的VBScript， 而在于它后台的COM组件，这些组件无限的扩充了ASP的能力。
强势1简单易学。Basic有谁不会？很少会有人举手，所以有人在说这个开发基础是最广的。而且MS有一向做的非常好的联机手册，本地化语言的帮助，同时非常快的出现教学书籍，这样会大大方便开发人员的学习和对技术的深入研究。 
2、安装使用方便。装好一个Windows 2000，只要你安装了IIS哪么ASP就可以使用了，从没有什么需要你花心思去配置的。 
3、开发工具强大而多样。这个我不用说了，可以说的就是我以前使用VB中的Web Class开发出的Web应用一点不差，当时让许多人大吃一惊，VB也能做ASP上的应用！！！其实这正说明了ASP开发工具的多样化，同时它们的功能也很强，这一点已经被许多程序员所津津乐道。易用、简单、人性化，这本就是微软的强项哟。 
4、效率高。在低的访问量下，ASP能体现出一定的效率，这时它对机器的要求并不高。
弱势1Windows本身的所有问题都会一成不变的也累加到了它的身上。安全性、稳定性、跨平台性(Win2K已经不再支持Alpha了)都会因为与NT的捆绑而显现出来。 
2、ASP由于使用了COM组件所以它会变的十分强大，但是这样的强大由于Windows NT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意，那么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失。 
3、由于ASP还是一种Script语言，所以除了大量使用组件外，没有办法提高其工作效率。它必须面对即时编译的时间考验，同时我们还不知其背后的组件会是一个什么样的状况。 
4、无法实现跨操作系统的应用。当然这也是微软的理由之一，只有这样才能发挥ASP最佳的能力。可是我却认为正是Windows限制了ASP，ASP的概念本就是为一个能让系统运行于一个大的多样化环境而设计的。 
5、还无法完全实现一些企业级的功能：完全的集群、负载均衡。
1.1.3 PHP
简介PHP(Hypertext Preprocessor)是一种HTML内嵌式的语言（类似于IIS上的ASP）。而PHP独特的语法混合了C、Java、Perl以及PHP式的新语法。它可以比CGI或者Perl更快速的执行动态网页。 
PHP能够支持诸多数据库，如MS SQL Server, MySql,Sybase,Oracle等。 
它与HTML语言具有非常好的兼容性，使用者可以直接在脚本代码中加入HTML标签，或者在HTML标签中加入脚本代码从而更好地实现页面控制。PHP提供了标准的数据库接口，数据库连接方便，兼容性强；扩展性强；可以进行面向对象编程。
强势1．一种能快速学习、跨平台、有良好数据库交互能力的开发语言。ASP比不上它的就是这种跨平台能力了，而正是它的这种能力让Unix/Linux有了一种与ASP媲美的开发语言。语法简单、书写容易、现在市面上也有了大量的书，同时Internet上也有大量的代码可以共享，对于一个初学者想学些“高深的Unix”下的开发来说是一个决好的入手点。 
2．与Apache及其它扩展库结合紧密。php与Apache可以以静态编绎的方式结合起来，而与其它的扩展库也可以用这样的方式结合(除外的就是Windows平台了)。这样的方式的最大的好处就是最大化的利用了cpu时和内存，同时极为有效的利用了apache的高性能的吞吐能力。同时外部的扩展也是静态连编，从而达到了最快的运行速度。由于与数据库的接口也使用了这样的方式，所以使用的是本地化的调用，这也让数据库发挥了最佳效能。 
3．良好的安全性。由于php本身的代码开放所以它的代码在许多工程师手中进行了检测，同时它与apache编绎在一起的方式也可以让它具有灵活的安全设定。所以到现在为止，php具有了公认的安全性能。
弱势1． 数据库支持的极大变化。由于php的所有的扩展接口都是独立团队开发完成的，同时在开发时为了形成相应数据的个性化操作，所以php虽然支持许多数据库，可是针对每种数据库的开发语言都完全不同。这样形成针对一种数据库的工发工作，在数据库进行升级后需要开发人员进行几乎全部的代码更改工作。而为了让应用支持更多种的数据库，就需要开发人员将同样的数据库操作使用不同的代码写出n种代码库出来，让程序员的工作量大大增大。 
2． 安装复杂。由于php的每一种扩充模块并不是完全由php本身来完成，需要许多外部的应用库，如图形需要gd库、LDAP需要LDAP库.……这样在安装完成相应的应用后，再联编进php中来。这也就是我以前在代码联盟新闻组中对网友所说的一定要在FreeBSD/Linux/Unix下运行php的原因。只有在这些环境下才能方便的编绎对应的扩展库。这些都是一般开发人员在使用php前所先要面对的问题，正是这样的问题让许多开发人员转而使用其它的开发语言，毕竟Unix没有那么多的用户。 
3． 缺少企业级的支持。没有组件的支持，那么所有的扩充就只能依靠php开发组所给出的接口，事实上这样的接口还不够多。同时难以将集群、应用服务器这样的特性加入到系统中去。而一个大型的站点或是一个企业级的应用一定需要这样的支持的。注：在php的4.0版本以后加入了对servlet/javabean的支持，也许这样的支持会在以后的版本中更加增强，也许这样的支持会是php以后的企业级支持的起点。 
4． 缺少正规的商业支持。这也是自由软件一向的缺点，我想在国内php的开发人员正在快速增加，相信在不久的将来，这样的支持能多起来。 
5． 无法实现商品化应用的开发。由于php没有任何编绎性的开发工作，所有的开发都是基于脚本技术来完成的。所以所有的源代码都无法编译，所以做完成的应用只能是自己或是内部使用，无法实现商品化。
1.1.4 JSP
简介JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理，然后将生成的HTML页面返回给客户端的浏览器。Java Servlet 是JSP的技术基础，而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用，完全的面向对象，具有平台无关性且安全可靠，主要面向Internet的所有特点。强势（1）一次编写，到处运行。在这一点上Java比PHP更出色，除了系统之外，代码不用做任何更改。
（2）系统的多平台支持。基本上可以在所有平台上的任意环境中开发，在任意环境中进行系统部署，在任意环境中扩展。相比ASP/PHP的局限性是现而易见的。 
（3）强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP，到由多台服务器进行集群和负载均衡，到多台Application进行事务处理，消息处理，一台服务器到无数台服务器，Java显示了一个巨大的生命力。 
（4）多样化和功能强大的开发工具支持。这一点与ASP很像，Java已经有了许多非常优秀的开发工具，而且许多可以免费得到，并且其中许多已经可以顺利的运行于多种平台之下。弱势（1） 与ASP一样，Java的一些优势正是它致命的问题所在。正是由于为了跨平台的功能，为了极度的伸缩能力，所以极大的增加了产品的复杂性。 
（2） Java的运行速度是用class常驻内存来完成的，所以它在一些情况下所使用的内存比起用户数量来说确实是“最低性能价格比”了。从另一方面，它还需要硬盘空间来储存一系列的.java文件和.class文件，以及对应的版本文件。