CHAPTER 1 Web 開發基礎
如果你還記得大約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模式。
posted on 2008-10-11 22:43 KINGWEE 閱讀(440) 評論(0) 編輯 收藏 所屬分類: Velocity