如果你还记得大约10年前的时候,或许你已经了解WWW起初是如何工作。Telnet和FTP是最早的沟通方式。虽然这些技术不能直接用于WEB,但他们的确是WWW的先驱。
很快,新的技术不断出现,使WEB开发变得越来越强大,本书主要探索最近几年才出现的WEB技术的一部分:向客户端提供动态数据显示。我们主要关注一个名叫Velocity的新技术。
在这一节里,我们将向你展现WEB开发历史的概览。
静态WEB页面
一切都是从静态页面开始的,静态页面只能呈现一些静态的内容,它不能从数据库或其他应用里提取数据。比较接近于“所见既所得”的表现方式。
静态页面最大的问题是不能提供动态内容,以满足不同用户的需要。随着WEB技术的发展,开始有了用于WEB开发的动态技术。
CGI介绍
CGI (Common Gateway Interface)公共网关接口对WEB开发有着重要的意义。于1993年开发出来, CGI 是第一个通过服务器后端处理后向客户提供动态信息的WEB开发技术。
在使用CGI的时候,应用的动作一般由高级语言书写,比如C,Perl或C++。CGI通过网页窗体的按钮事件获取用户输入,并返回最终结果给用户。
Listing 1.1 CGI示例(C语言书写)
int main(int argc, char* argv[]) {
printf("content-type: text/html"r"n");
printf(""r"n");
printf("<html><body>");
printf("<h1>Hello World!</h1>");
printf("</body></html>"n");
return(0);
}
因为CGI应用执行在WEB服务器端,安全性就非常重要。许多服务器需要CGI应用放置到文件夹/cgi-bin下。除此而外,服务器不允许执行任何程序。
Scripting: JSP/ASP/PHP
正如你所了解的一样,使用CGI和Perl或C++进行WEB开发对WEB设计者来说是非常困难的。也就是说WEB设计者只有完全掌握这些高级语言后才能进行WEB开发。
和这些高级语言不同的时,脚本语言通过解释程序执行,他们很容易学习并用于WEB程序开发。解释程序由高级语言编写,在HTTP服务器端加载,丢弃了CGI接口。脚本语言通过在HTML文档中嵌入语句和脚本语言关键字来向客户端递送动态信息。
Listing 1.2 脚本语言示例
<HTML>
<HEAD>
<TITLE>Time Example</TITLE>
</HEAD>
<BODY>
The time is <?php time() ?>
</BODY>
</HTML>
In Listing 1.2,我们增加了一些脚本用于显示当前时间。当用户浏览该页的时候,他们将通HTTP服务器得到当前时候。
嵌入脚本的页面虽然看起来像HTML页面。然后,其后缀不能是.html或.htm。只能是对应的后缀,比如:.jsp,.asp,.php等。这些扩展名非常重要,它主要是用于告诉服务器该页面是否需要进行服务器端处理。如果需要进行处理,解释程序将脚本代码进行后台运算,最后将运算结果以标准的HTML形式嵌入HTML文档中返回给客户。
未来的发展
当我们在讨论脚本语言的时候,你应该关注以下可用到的脚本语言——如JavaScript,Java,和ActiveX。Listing 1.3展现了一个用Java脚本写的HTML页面。
<%@ page language='java' import='java.sql.*' %>
<HTML>
<HEAD>
<TITLE>Test</TITLE>
</HEAD>
<%
ResultSet rs;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(
"jdbc:mysql://localhost/products");
statement = connection.createStatement();
%>
<BODY>
</BODY>
</HTML>
Listing 1.3 Using Java in an HTML page.
在HTML页面中嵌入Java脚本是为了让WEB站点具有动态处理的能力。你不仅需要了解Java,同时也需要了解在服务器端执行的Java代码是如何编写的。
我们讨论很多不同类型的动态页面技术,但他们都有一个共同点,就是将显示和商业逻辑混杂在一起。在下一节里,我们将讨论混杂编程是多么的令人头痛。
本章小节和下章介绍
这一章里,我们分析了WEB页面的开发历史。下一节,我们将讨论WEB开发的方法学,并且主要关注MVC模式。