如果你還記得大約10年前的時(shí)候,,或許你已經(jīng)了解WWW起初是如何工作。Telnet和FTP是最早的溝通方式,。雖然這些技術(shù)不能直接用于WEB,,但他們的確是WWW的先驅(qū)。 很快,,新的技術(shù)不斷出現(xiàn),,使WEB開(kāi)發(fā)變得越來(lái)越強(qiáng)大,本書主要探索最近幾年才出現(xiàn)的WEB技術(shù)的一部分:向客戶端提供動(dòng)態(tài)數(shù)據(jù)顯示,。我們主要關(guān)注一個(gè)名叫Velocity的新技術(shù),。 在這一節(jié)里,我們將向你展現(xiàn)WEB開(kāi)發(fā)歷史的概覽,。 靜態(tài)WEB頁(yè)面 一切都是從靜態(tài)頁(yè)面開(kāi)始的,,靜態(tài)頁(yè)面只能呈現(xiàn)一些靜態(tài)的內(nèi)容,它不能從數(shù)據(jù)庫(kù)或其他應(yīng)用里提取數(shù)據(jù),。比較接近于“所見(jiàn)既所得”的表現(xiàn)方式,。 靜態(tài)頁(yè)面最大的問(wèn)題是不能提供動(dòng)態(tài)內(nèi)容,以滿足不同用戶的需要,。隨著WEB技術(shù)的發(fā)展,,開(kāi)始有了用于WEB開(kāi)發(fā)的動(dòng)態(tài)技術(shù)。 CGI介紹 CGI (Common Gateway Interface)公共網(wǎng)關(guān)接口對(duì)WEB開(kāi)發(fā)有著重要的意義,。于1993年開(kāi)發(fā)出來(lái),, CGI 是第一個(gè)通過(guò)服務(wù)器后端處理后向客戶提供動(dòng)態(tài)信息的WEB開(kāi)發(fā)技術(shù)。 在使用CGI的時(shí)候,,應(yīng)用的動(dòng)作一般由高級(jí)語(yǔ)言書寫,,比如C,,Perl或C++。CGI通過(guò)網(wǎng)頁(yè)窗體的按鈕事件獲取用戶輸入,,并返回最終結(jié)果給用戶,。 Listing 1.1 CGI示例(C語(yǔ)言書寫) 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); } 因?yàn)?/span>CGI應(yīng)用執(zhí)行在WEB服務(wù)器端,安全性就非常重要,。許多服務(wù)器需要CGI應(yīng)用放置到文件夾/cgi-bin下,。除此而外,服務(wù)器不允許執(zhí)行任何程序,。 Scripting: JSP/ASP/PHP 正如你所了解的一樣,,使用CGI和Perl或C++進(jìn)行WEB開(kāi)發(fā)對(duì)WEB設(shè)計(jì)者來(lái)說(shuō)是非常困難的。也就是說(shuō)WEB設(shè)計(jì)者只有完全掌握這些高級(jí)語(yǔ)言后才能進(jìn)行WEB開(kāi)發(fā),。 和這些高級(jí)語(yǔ)言不同的時(shí),,腳本語(yǔ)言通過(guò)解釋程序執(zhí)行,他們很容易學(xué)習(xí)并用于WEB程序開(kāi)發(fā),。解釋程序由高級(jí)語(yǔ)言編寫,,在HTTP服務(wù)器端加載,丟棄了CGI接口,。腳本語(yǔ)言通過(guò)在HTML文檔中嵌入語(yǔ)句和腳本語(yǔ)言關(guān)鍵字來(lái)向客戶端遞送動(dòng)態(tài)信息。 Listing 1.2 腳本語(yǔ)言示例 <HTML> <HEAD> <TITLE>Time Example</TITLE> </HEAD> <BODY> The time is <?php time() ?> </BODY> </HTML> In Listing 1.2,我們?cè)黾恿艘恍┠_本用于顯示當(dāng)前時(shí)間,。當(dāng)用戶瀏覽該頁(yè)的時(shí)候,,他們將通HTTP服務(wù)器得到當(dāng)前時(shí)候。 嵌入腳本的頁(yè)面雖然看起來(lái)像HTML頁(yè)面,。然后,,其后綴不能是.html或.htm。只能是對(duì)應(yīng)的后綴,,比如:.jsp,,.asp,.php等,。這些擴(kuò)展名非常重要,,它主要是用于告訴服務(wù)器該頁(yè)面是否需要進(jìn)行服務(wù)器端處理。如果需要進(jìn)行處理,,解釋程序?qū)⒛_本代碼進(jìn)行后臺(tái)運(yùn)算,,最后將運(yùn)算結(jié)果以標(biāo)準(zhǔn)的HTML形式嵌入HTML文檔中返回給客戶。 未來(lái)的發(fā)展 當(dāng)我們?cè)谟懻撃_本語(yǔ)言的時(shí)候,,你應(yīng)該關(guān)注以下可用到的腳本語(yǔ)言——如JavaScript,,Java,和ActiveX,。Listing 1.3展現(xiàn)了一個(gè)用Java腳本寫的HTML頁(yè)面,。 <%@ 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頁(yè)面中嵌入Java腳本是為了讓WEB站點(diǎn)具有動(dòng)態(tài)處理的能力,。你不僅需要了解Java,同時(shí)也需要了解在服務(wù)器端執(zhí)行的Java代碼是如何編寫的,。 我們討論很多不同類型的動(dòng)態(tài)頁(yè)面技術(shù),,但他們都有一個(gè)共同點(diǎn),就是將顯示和商業(yè)邏輯混雜在一起,。在下一節(jié)里,,我們將討論混雜編程是多么的令人頭痛。 本章小節(jié)和下章介紹 這一章里,,我們分析了WEB頁(yè)面的開(kāi)發(fā)歷史,。下一節(jié),我們將討論WEB開(kāi)發(fā)的方法學(xué),,并且主要關(guān)注MVC模式,。 |
|
來(lái)自: 木木的陽(yáng)光 > 《Velocity》