




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Web程序設計計算機科學經(jīng)典教材目錄第1章基礎知識 11.1Internet簡介 21.1.1起源 21.1.2Internet的含義 21.1.3IP地址 31.1.4域名 31.2萬維網(wǎng) 51.2.1起源 51.2.2Web還是Internet 51.3Web瀏覽器 61.4Web服務器 71.4.1Web服務器操作 71.4.2服務器的一般特性 81.4.3Apache 91.4.4IIS 91.5統(tǒng)一資源定位符 91.5.1URL的格式 101.5.2URL路徑 101.6MIME 111.6.1類型說明 111.6.2實驗性文檔類型 121.7超文本傳輸協(xié)議 121.7.1請求階段 131.7.2響應階段 141.8安全性 151.9Web編程工具箱 171.9.1XHTML概述 171.9.2創(chuàng)建XHTML文檔的工具 181.9.3插件和過濾器 191.9.4XML概述 191.9.5JavaScript概述 20Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第1頁。1.9.6Flash概述 20Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第1頁。1.9.7PHP概述 211.9.8Ajax概述 211.9.9Servlet、JavaServerPages和
JavaServerFaces概述 221.9.10ASP.NET概述 221.9.11Ruby概述 231.9.12Rails概述 231.10本章小結 241.11復習題 251.12練習題 26第2章XHTML簡介 292.1HTML和XHTML的起源和
演變 292.1.1HTML和XHTML的版本 302.1.2HTML與XHTML 312.2基本語法 312.3XHTML文檔的標準結構 322.4基本的文本標記 332.4.1段落 332.4.2換行 352.4.3保留空白字符 352.4.4標題 362.4.5文本塊引用 372.4.6字體樣式與大小 382.4.7字符實體 392.4.8水平線 392.4.9meta元素 402.5圖片 402.5.1圖片格式 402.5.2<img/>標簽 412.5.3XHTML文檔的驗證 432.6超鏈接 442.6.1鏈接 452.6.2位于文檔內部的目標 472.6.3使用鏈接 472.7列表 47Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第2頁。2.7.1無序列表 48Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第2頁。2.7.2有序列表 482.7.3定義列表 512.8表格 522.8.1基本的表格標簽 522.8.2屬性rowspan與colspan 542.8.3屬性align與valign 562.8.4屬性cellpadding與
cellspacing 572.8.5表格分塊 592.9表單 592.9.1<form>標簽 592.9.2<input>標簽 602.9.3<select>標簽 632.9.4<textarea>標簽 652.9.5動作按鈕 662.9.6一個完整的表單示例 662.10HTML與XHTML之間的
語法差異 692.11本章小結 712.12復習題 722.13練習題 73第3章層疊樣式表 753.1簡介 753.2樣式表的層次 763.3樣式說明格式 773.4選擇器格式 783.4.1簡單的選擇器格式 783.4.2類選擇器 793.4.3通用選擇器 793.4.4id選擇器 803.4.5通配選擇器 803.4.6偽類 803.5屬性值的格式 813.6字體屬性 823.6.1字體族 833.6.2字體大小 83Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第3頁。3.6.3字體變體 84Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第3頁。3.6.4字體樣式 843.6.5字體粗細 843.6.6簡寫字體屬性 843.6.7文本修飾 873.7列表屬性 883.8顏色 913.8.1顏色組 913.8.2顏色屬性 923.9文本對齊 933.10盒模型 953.10.1邊框 953.10.2內邊距和外邊距 973.11背景圖片 993.12<span>標簽和<div>標簽 1013.13沖突解決方案 1023.14本章小結 1033.15復習題 1043.16練習題 105第4章JavaScript基礎知識 1074.1JavaScript概述 1074.1.1起源 1074.1.2JavaScript與Java 1084.1.3JavaScript的用途 1084.1.4瀏覽器和XHTML/JavaScript
文檔 1094.2面向對象和JavaScript 1104.3一般的語法特征 1114.4基本數(shù)據(jù)類型、操作和
表達式 1134.4.1基本數(shù)據(jù)類型 1134.4.2數(shù)值型和字符串字面量 1144.4.3其他基本數(shù)據(jù)類型 1144.4.4聲明變量 1154.4.5數(shù)值運算符 1154.4.6Math對象 1164.4.7Number對象 117Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第4頁。4.4.8字符串連接運算符 117Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第4頁。4.4.9隱式類型轉換 1184.4.10顯式類型轉換 1184.4.11String屬性和方法 1194.4.12typeof運算符 1204.4.13賦值語句 1204.4.14Date對象 1214.5屏幕輸出和鍵盤輸入 1214.6控制語句 1244.6.1控制表達式 1254.6.2選擇語句 1264.6.3switch語句 1274.6.4循環(huán)語句 1294.7創(chuàng)建和修改對象 1314.8數(shù)組 1324.8.1創(chuàng)建Array對象 1324.8.2Array對象的特征 1334.8.3Array方法 1344.9函數(shù) 1364.9.1基礎知識 1364.9.2局部變量 1374.9.3參數(shù) 1384.9.4復習sort方法 1404.10示例一 1404.11構造函數(shù) 1424.12利用正則表達式進行模式
匹配 1424.12.1字符和字符類模式 1434.12.2錨 1454.12.3模式修飾符 1454.12.4String對象中的其他模式
匹配方法 1464.13示例二 1464.14腳本中的錯誤 1484.15本章小結 1494.16復習題 1514.17練習題 152Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第5頁。第5章 155Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第5頁。5.1JavaScript的執(zhí)行環(huán)境 1565.2文檔對象模型 1565.3在JavaScript中訪問元素 1595.4事件與事件處理 1625.4.1事件處理的基本概念 1625.4.2事件、屬性和標簽 1635.5處理主體元素的事件 1655.6處理按鈕元素的事件 1665.7處理文本框和密碼框元素的
事件 1715.7.1focus事件 1715.7.2驗證表單輸入 1735.8DOM2事件模型 1785.8.1事件傳播 1795.8.2事件處理程序的注冊 1805.8.3DOM2事件模型示例 1815.9navigator對象 1835.10DOM樹的遍歷和修改 1855.10.1DOM樹的遍歷 1855.10.2DOM樹的修改 1855.11本章小結 1855.12復習題 1865.13練習題 187第6章利用JavaScript開發(fā)
動態(tài)文檔 1896.1簡介 1896.2元素定位 1906.2.1絕對定位 1906.2.2相對定位 1936.2.3靜態(tài)定位 1946.3移動元素 1946.4元素可見性 1976.5修改顏色和字體 1986.5.1修改顏色 1986.5.2修改字體 1996.6動態(tài)內容 201Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第6頁。6.7堆疊元素 203Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第6頁。6.8定位鼠標光標 2066.9響應鼠標單擊 2086.10緩慢移動元素 2096.11拖放元素 2126.12本章小結 2166.13復習題 2166.14練習題 217第7章XML簡介 2197.1簡介 2197.2XML語法 2217.3XML文檔結構 2237.4文檔類型定義 2257.4.1元素聲明 2257.4.2屬性聲明 2277.4.3實體聲明 2287.4.4一個DTD的示例 2287.4.5內部和外部DTD 2297.5名稱空間 2307.6XML架構 2327.6.1架構的基本原理 2327.6.2架構的定義 2337.6.3定義架構實例 2347.6.4數(shù)據(jù)類型概述 2357.6.5簡單類型 2357.6.6復雜類型 2367.6.7架構實例的驗證 2387.7 2397.8通過CSS顯示XML文檔 2407.9XSLT樣式表 2417.9.1XSLT概述 2427.9.2用于表現(xiàn)的XSL轉換 2437.10XML處理器 2497.10.1XML處理器的用途 2497.10.2SAX方式 2497.10.3DOM方式 2507.11Web服務 250Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第7頁。7.12本章小結 251Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第7頁。7.13復習題 2537.14練習題 254第8章Flash簡介 2578.1Flash的起源與用途 2578.2初步了解Flash創(chuàng)作環(huán)境 2588.3繪圖工具 2628.3.1預定義圖形 2628.3.2線條和徒手畫 2678.3.3文本 2678.3.4元件和庫 2688.4靜態(tài)圖形 2698.5動畫和聲音 2748.5.1動畫簡介 2748.5.2移動圖形 2748.5.3更多動畫 2768.5.4形狀動畫 2788.5.5聲音 2808.6用戶交互 2828.6.1動作 2838.6.2Flash組件 2838.6.3示例 2838.7小結 2868.8復習題 2878.9練習題 288第9章PHP簡介 2899.1PHP的起源和用途 2899.2PHP概述 2909.3基本語法特征 2919.4基本數(shù)據(jù)類型、操作和
表達式 2919.4.1變量 2929.4.2整數(shù)類型 2929.4.3雙精度類型 2929.4.4字符串類型 2929.4.5布爾類型 2939.4.6算術運算符和表達式 293Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第8頁。9.4.7字符串操作 294Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第8頁。9.4.8標量類型轉換 2959.4.9賦值運算符 2969.5輸出 2969.6控制語句 2989.6.1關系運算符 2989.6.2布爾運算符 2989.6.3選擇語句 2989.6.4循環(huán)語句 2999.6.5示例 2999.7數(shù)組 3019.7.1創(chuàng)建數(shù)組 3019.7.2訪問數(shù)組元素 3029.7.3數(shù)組處理函數(shù) 3029.7.4數(shù)組元素的按序訪問 3049.7.5數(shù)組排序 3069.8函數(shù) 3079.8.1函數(shù)的基本特征 3079.8.2參數(shù) 3089.8.3變量的作用域 3099.8.4變量的生命周期 3109.9模式匹配 3119.10表單處理 3139.11文件 3189.11.1打開和關閉文件 3189.11.2讀取文件 3199.11.3文件寫入操作 3209.11.4文件加鎖 3209.12cookie 3209.12.1cookie簡介 3219.12.2PHP對cookie的支持 3229.13會話跟蹤 3229.14本章小結 3239.15復習題 3249.16練習題 325第10章Ajax簡介 32910.1Ajax概述 329Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第9頁。10.1.1Ajax的歷史 329Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第9頁。10.1.2Ajax技術 33010.1.3實現(xiàn)Ajax 33110.2Ajax基礎知識 33210.2.1應用程序 33210.2.2表單文檔 33210.2.3請求階段 33410.2.4響應文檔 33610.2.5接收器階段 33710.2.6跨瀏覽器支持 33910.3返回文檔的格式 34010.3.1HTML和XHTML 34010.3.2XML 34110.3.3 34210.4Ajax工具包 34310.4.1Dojo 34410.4.2示例 34610.4.3Prototype 34810.5安全性與Ajax 34910.6本章小結 35010.7復習題 35110.8練習題 351第11章JavaWeb軟件 35311.1servlet簡介 35311.1.1概述 35311.1.2詳解 35411.1.3servlet容器 35711.2NetBeans集成開發(fā)環(huán)境 35811.3調查表示例 36511.4在客戶端存儲信息 37211.4.1cookie 37211.4.2 37311.4.3示例 37411.5JSP 38011.5.1開發(fā)JSP的動機 38011.5.2JSP文檔 38011.5.3表達式語言 383Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第10頁。11.5.4JSTL中用于控制的動作
元素 385Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第10頁。11.6JavaBean 38911.7模型-視圖-控制器應用
體系結構 39211.8JSF 39311.8.1內核標簽庫和HTML
標簽庫 39411.8.2JSF事件處理 39511.8.3示例應用程序 39511.9本章小結 40011.10復習題 40111.11練習題 402第12章ASP.NET簡介 40512.1.NETFramework概述 40512.1.1背景 40612.1.2.NET語言 40612.1.3公共語言運行庫 40612.1.4公共語言基礎結構 40712.2C#簡介 40812.2.1起源 40812.2.2基本數(shù)據(jù)類型和表達式 40812.2.3數(shù)據(jù)結構 40912.2.4控制語句 40912.2.5類、方法和結構 41012.2.6異常處理 41112.2.7輸出 41112.3ASP.NET簡介 41212.3.1基本知識 41212.3.2ASP.NET文檔 41312.3.3代碼隱藏文件 41512.4ASP.NET控件 41712.4.1Web控件 41712.4.2簡單的ASP.NET文檔的
生命周期 41812.4.3VisualStudio 42212.4.4ASP.NET事件 427Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第11頁。12.4.5用代碼創(chuàng)建控件元素 428Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第11頁。12.4.6控件的響應輸出 42912.4.7列表控件 42912.4.8驗證控件 43312.4.9主文檔 43912.5ASP.NETAJAX 44212.6Web服務 44712.6.1構建Web服務 44712.6.2使用Web服務 45012.6.3傳播Web服務 45412.7本章小結 45412.8復習題 45512.9練習題 457第13章基于Web的數(shù)據(jù)庫訪問 45913.1關系數(shù)據(jù)庫 45913.2結構化查詢語言簡介 46213.2.1SELECT命令 46213.2.2連接 46213.2.3INSERT命令 46413.2.4UPDATE命令 46413.2.5DELETE命令 46413.2.6DROP命令 46513.2.7CREATETABLE命令 46513.3數(shù)據(jù)庫訪問的體系結構 46613.3.1 46613.3.2MicrosoftODBC
體系結構 46613.3.3PHP和數(shù)據(jù)庫訪問 46713.3.4JavaJDBC體系結構 46713.4MySQL數(shù)據(jù)庫系統(tǒng) 46813.5使用PHP和MySQL
實現(xiàn)數(shù)據(jù)庫訪問 47013.5.1特殊字符的潛在問題 47013.5.2連接MySQL并選擇
數(shù)據(jù)庫 47113.5.3請求MySQL操作 47113.5.4PHP-MySQL示例 472Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第12頁。13.6使用JDBC和MySQL
實現(xiàn)數(shù)據(jù)庫訪問 477Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第12頁。13.6.1JDBC和MySQL 47713.6.2元數(shù)據(jù) 48013.6.3示例 48113.7使用ASP.NET和MySQL
實現(xiàn)數(shù)據(jù)庫訪問 48413.7.1MySQL和ADO.NET 48413.7.2數(shù)據(jù)綁定 48513.7.3連接字符串 48613.8本章小結 49013.9復習題 49113.10練習題 492第14章Ruby簡介 49314.1Ruby的起源與用途 49314.2標量類型及其操作 49414.2.1數(shù)值與字符串字面量 49414.2.2變量和賦值語句 49514.2.3數(shù)值運算符 49614.2.4String的方法 49714.3簡單的輸入輸出 50114.3.1屏幕輸出 50114.3.2鍵盤輸入 50114.4控制語句 50314.4.1控制表達式 50314.4.2選擇語句和循環(huán)語句 50414.5數(shù)組基礎 50714.5.1for-in語句 50814.5.2數(shù)組和列表的內置方法 50914.5.3示例 51114.6散列 51214.7方法 51414.7.1基礎知識 51414.7.2局部變量 51514.7.3參數(shù) 51514.8類 51714.8.1類的基礎知識 517Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第13頁。14.8.2訪問控制 519Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第13頁。14.8.3繼承 52114.9塊和迭代器 52214.10模式匹配 52414.10.1模式匹配的基礎知識 52414.10.2存儲匹配 52614.10.3替換 52614.11本章小結 52714.12復習題 52714.13練習題 528第15章Rails簡介 52915.1Rails概述 52915.2文檔請求 53115.2.1靜態(tài)文檔HelloWorld 53115.2.2動態(tài)文檔 53515.3使用數(shù)據(jù)庫的Rails
應用程序 53715.3.1構建基本應用程序 53815.3.2完成應用程序 54615.3.3修改數(shù)據(jù)庫 55015.3.4布局和樣式表 55215.4采用Ajax技術的Rails 55315.4.1初始的表單文檔 55415.4.2觸發(fā)Ajax 55615.4.3控制器 55815.5本章小結 56015.6復習題 56115.7練習題 561附錄AJava簡介 563附錄B顏色名及其十六進制值 577附錄CJavaApplet 581Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第14頁。Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第14頁?;A知識隨著萬維網(wǎng)的出現(xiàn),工業(yè)化國家的絕大部分居民和非工業(yè)化國家的一部分居民的生活已經(jīng)發(fā)生了永久性的變化。雖然萬維網(wǎng)也帶來了一些負面影響例如,訪問色情信息和參與賭博變得更容易了,有害思想的傳播也有了更便捷的通道但是,萬維網(wǎng)帶來的巨大影響總體上是正面的。很多人都在日常生活中使用Internet和萬維網(wǎng),包括通過E-mail和社交網(wǎng)站來聯(lián)系親朋好友和商業(yè)伙伴,在任何地方都幾乎可以購買任何商品,搜索無數(shù)的各種各樣的信息,這些信息包括從電影院的放映時間表到幾乎全球所有城市賓館的住宿價格,甚至還包含一些偏遠少數(shù)民族的歷史文化特色。創(chuàng)建用于提供所有這些信息的軟件和數(shù)據(jù)需要用到幾種不同的技術,如標記語言和元標記語言,以及利用多種不同編程語言的編程技術,其中有一些是專門針對萬維網(wǎng)的,另一些則是專為通用計算而設計的。為了能夠獲取構建萬維網(wǎng)站點所需的知識和技術,本書提供了必要的背景和基礎知識,使構建的萬維網(wǎng)站點不僅可以呈現(xiàn)用戶所需的信息,還能發(fā)布商業(yè)廣告。本章是本書其余章節(jié)的基礎。首先介紹Internet和萬維網(wǎng)的一部分發(fā)展歷史。接下來ResourceLocator,URL),URL為Web中的可用資源指定了地址。接下來將介紹多用途網(wǎng)際郵件擴充協(xié)議(MultipurposeInternetMailExtension,MIME),它定義具有不同類型內容的文件的文件類型和文件擴展名。此后將討論超文本傳輸協(xié)議(HypertextTransferProtocol,HTTP),它提供了瀏覽器和Web服務器之間連接的通信接口。本章最后將簡單介紹Web程序員常用的一些工具,包括XHTML、XML、JavaScript、Flash、Servlet、JSP、JSF、ASP.NET、PHP、Ruby、Rails以及Ajax。所有這些工具都將在本書的后續(xù)章節(jié)中詳細介紹(第2章和第3章將討論XHTML;第4章、第5章和第6章將討論JavaScript;第7章將討論XML;第8章將討論Flash;第9章將討論PHP;第10章將討論Ajax;第11章將討論Servlet、JSP和JSF;第14、15章將討論Ruby;第15章將討論Rails)。1.1Internet簡介Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第15頁。本書討論的所有主題都與Internet有關。因此,首先簡單討論一下Internet本身。Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第15頁。1.1.1起源20世紀60年代,美國國防部(DepartmentofDefense,DoD)開始對開發(fā)一些新的大規(guī)模計算機網(wǎng)絡產生興趣。開發(fā)這樣的一個網(wǎng)絡,其目的在于為從事與國防相關合同項目的研究人員提供通信、程序共享和遠程計算機訪問等功能。這種網(wǎng)絡的一個基本要求是必須足夠可靠,即使當其中的某些節(jié)點由于破壞、戰(zhàn)爭和其他正常原因而失去作用后,整個網(wǎng)絡還可以繼續(xù)運行。DoD的高級研究計劃局(AdvancedResearchProjectsAgency,ARPA)1ARPA在1972年更名為美國國防高級研究計劃局(DefenseAdvancedResearchProjectsAgency,DARPA)。提供經(jīng)費支持了第一個這種網(wǎng)絡的構建,這個網(wǎng)絡將ARPA支持的大約12個實驗室和大學連接在一起。該網(wǎng)絡中的第一個節(jié)點是1969年在UCLA建立的。1ARPA在1972年更名為美國國防高級研究計劃局(DefenseAdvancedResearchProjectsAgency,DARPA)。由于這個網(wǎng)絡是由ARPA提供經(jīng)費支持的,因此被命名為ARPAnet。盡管最初的設計目標很多,但是這個網(wǎng)絡的初衷主要是通過E-mail進行基于文本的簡單通信。由于ARPAnet只是在ARPA資助的實驗室和大學中可用,因此絕大部分教育機構并沒有連接進來。所以,20世紀70年代后期和80年代早期又開發(fā)了很多其他網(wǎng)絡,其中包括BITNET和CSNET。BITNET是BecauseIt’sTimeNetwork的縮寫,是由紐約城市大學(CityUniversityofNewYork)首創(chuàng)。該網(wǎng)絡的初衷是提供電子郵件和文件傳輸功能。CSNET是ComputerScienceNetwork的縮寫,它將特拉華大學(UniversityofDelaware)、普渡大學(PurdueUniversity)、威斯康星大學(UniversityofWisconsin)、蘭德公司(RANDCorporation)、Bolt、Beranek以及Newman(馬薩諸塞州坎布里奇市的一家研究公司)連接在一起。該網(wǎng)絡最初的設計目標是提供電子郵件功能。由于各種不同的原因,BITNET和CSNET都沒有發(fā)展為占有絕對優(yōu)勢的全國性網(wǎng)絡。1986年出現(xiàn)了一個新的全國性的網(wǎng)絡NSFnet,顧名思義,這是由美國國家科學基金會(NationalScienceFoundation,NSF)出資贊助的。NSFnet最初連接了NSF贊助下的位于5個大學中的超級計算機中心。但是,在該網(wǎng)絡建立后不久,其他學術機構和實驗室也開始使用該網(wǎng)絡。到1990年,NSFnet在絕大部分非軍事領域應用中已經(jīng)取代了ARPAnet,大量組織成為NSFnet中的節(jié)點到1992年,NSFnet已經(jīng)連接了全球中一百萬臺以上的計算機。1995年,NSFnet中的一小部分網(wǎng)絡重新成為學術網(wǎng)絡。其余部分就成為著名的Internet,雖然這一術語很早就已經(jīng)在ARPAnet和NSFnet中使用過了。1.1.2Internet的含義Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第16頁。Internet是在一個通信網(wǎng)絡中連接的計算機的大規(guī)模集合。這些計算機的大小、配置和制造商都是我們熟知的。實際上,連接到Internet中的一些設備如繪圖機和打印機根本就不是計算機。能夠使所有這些不同的設備通過Internet進行通信的創(chuàng)新之舉是一個單獨的、低層的協(xié)議,即傳輸控制協(xié)議/Internet協(xié)議(TransmissionControlProtocol/InternetProtocol,TCP/IP)。TCP/IP在1982年成為計算機網(wǎng)絡連接的標準協(xié)議,它允許某臺計算機中的程序通過Internet直接和另一臺計算機中的程序進行通信。但在絕大多數(shù)情況下,在TCP/IP之上還要運行一個較高層的協(xié)議。即便如此,TCP/IP為連接到Internet的計算機(及其他設備)提供了低層的通信接口也是非常重要的TCP/IP并非Internet所采用的唯一通信協(xié)議——Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第16頁。TCP/IP并非Internet所采用的唯一通信協(xié)議——有時也選用UDP/IP。一般情況下,同一個組織中的多臺計算機并不是直接連接到Internet中的每臺計算機上的,而是相互連接構成了一個局域網(wǎng),然后這個局域網(wǎng)中的一個節(jié)點物理連接到Internet中。因此,Internet實際上并不是計算機的網(wǎng)絡,而是網(wǎng)絡的網(wǎng)絡。很明顯,必須可以唯一地標識出所有連接到Internet的設備。1.1.3IP地址對于我們來說,Internet節(jié)點是通過名稱進行標識的;而對于計算機來說,它們是通過數(shù)字地址進行標識的。這種機制類似于程序中的變量名和變量的數(shù)字內存地址之間的關系。我們是通過變量名來標識變量,計算機則是通過變量的數(shù)字形式的內存地址來標識變量。計算機接入到Internet的IP地址是一個唯一的32位數(shù)字。通常IP地址會寫為(或者認為)是由4個8位數(shù)字,中間用西文句點分隔而成的。IP地址中的這4個部分則分別由不同的Internet路由計算機解析,然后確定某個消息下一步必須去往何處才能最終到達目的地。不同的組織分配了不同的IP塊,然后再細分給所有需要接入到Internet的計算機此時的機器大部分指的是計算機。例如,一個較小的組織可能分配了256個IP地址,可能是~55。一些大型組織,如美國國防部,可能分配了1600萬個IP地址,這些IP地址的第一個8位數(shù)是特殊的,如~55。雖然人們幾乎總是在瀏覽器中輸入域名,但并不影響IP的正常工作。例如,美國聯(lián)合航空公司(UnitedAirline,其網(wǎng)站地址是)的IP地址是3。因此,如果在瀏覽器中輸入http://3,就能連接到美國聯(lián)合航空公司的網(wǎng)站。1998年底,一個新的IP標準IPv6出臺,但它尚未廣泛實現(xiàn)。IPv6最重要的變化是將IP地址從32位擴展為128位。這個變化是非常必要的,因為剩下的尚未啟用的IP地址數(shù)量正在快速減少。這個新標準IPv6規(guī)范所在的位置為/in-notes/rfc2460.txt。1.1.4域名由于我們很難直接處理和記住數(shù)字,因此Internet中的機器必須要有一個文本格式的名稱。名稱中首先是一個主機的名稱,接下來是范圍越來越大的機器集合的名稱,稱之為域(domain)。一般可能有兩個、三個甚至多個域名。第一個域名緊靠主機名稱的右側,表明主機是這個域的一部分。第二個域名給出了第一個域所在的域。最后的域名表示主機所屬的組織類型,這是站點名稱中最大的域。對于美國的組織來說,edu表示教育機構,com表示公司,gov表示美國政府機構,org表示其他類型的組織。對于其他國家,最大的域一般是國家的縮寫例如,瑞典(Sweden)的縮寫為se,哈薩克斯坦(Kazakhstan)的縮寫為kz。請分析下面這個簡單的地址示例:Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第17頁。Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第17頁。其中,movies指的是主機名稱,comedy是movies所在的本地域,而它又是marxbros域的一部分,同樣,marxbros域是com域的一部分。主機名稱和所有的域名合稱為完全限定域名。由于IP地址是Internet內部使用的地址,因此,由瀏覽器用戶為消息指定的目的地的完全限定域名必須在通過Internet將消息傳遞給目的地之前轉換為一個IP地址。此轉換操作由一個名為“域名服務器”的軟件系統(tǒng)來完成,該域名服務器實現(xiàn)了域名系統(tǒng)(DomainNameSystem,DNS)。域名服務器是為Internet上的一組機器服務,并由負責這些機器所連接的Internet部分的組織機構來運轉。所有來自瀏覽器的文檔請求都被發(fā)送到最近的域名服務器。該域名服務器將嘗試是否能夠將完全限定域名轉換為IP地址,如果可以,則進行轉換。否則,該服務器將這個完全限定域名發(fā)送給另外的域名服務器以實現(xiàn)轉換操作。與IP在發(fā)送到一個適當?shù)腤eb服務器之前是如何轉換為IP地址的。圖1-1域名轉換確定某個Web站點IP地址的一種方式是在完全限定域名之前使用telnet命令。參見1.7.1節(jié)。到20世紀80年代中期,已經(jīng)出現(xiàn)了很多種基于TCP/IP運行的協(xié)議,以支持基于Internet的各種不同應用。其中最常見的是telnet,它使得Internet上某臺計算機的用戶可以登Internet上各個計算機之間的文件傳輸;Usenet用于實現(xiàn)電子公告板;mailto允許Internet上某臺計算機的用戶將消息發(fā)送給Internet上其他計算機的用戶。這些不同的協(xié)議有著各自不同的用戶接口,并且只能用于實現(xiàn)本身的設計目標,用戶只有學習所有這些不同的用戶接口才能夠體驗Internet的優(yōu)勢。這就限制了Internet的發(fā)展。但不久后,一個更好的方法出現(xiàn)了,那就是萬維網(wǎng)。1.2萬維網(wǎng)Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第18頁。本節(jié)將簡單介紹萬維網(wǎng)的演變。Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第18頁。1.2.1起源1989年,CERN(ConseilEuropéenpourlaRechercheNucléaire或EuropeanOrganizationforParticlePhysics的簡稱,歐洲粒子物理研究所)中由TimBerners-Lee領導的小組提交了一個針對Internet的新協(xié)議和一個使用該協(xié)議的文檔系統(tǒng)3雖然Berners-Lee獲得的學位(來自牛津)是物理學,但他在CERN的第一份工作卻是一個軟件咨詢工程師。Berners-Lee在倫敦出生并長大。。該小組將這個新系統(tǒng)命名為WorldWideWeb,它的目的在于使全球的科學家能夠利用Internet3雖然Berners-Lee獲得的學位(來自牛津)是物理學,但他在CERN的第一份工作卻是一個軟件咨詢工程師。Berners-Lee在倫敦出生并長大。這個新系統(tǒng)被設計為允許Internet上任意一個用戶都可以從許多文檔服務計算機的數(shù)據(jù)庫中搜索和獲取文檔。?到1990年末,個新系統(tǒng)的基本框架已經(jīng)在CERN中的一臺NeXT計算機中開發(fā)出來并實現(xiàn)了。1991年,該系統(tǒng)移植到了其他計算機平臺并正式發(fā)布。該系統(tǒng)的文檔使用超文本的形式,超文本是一組包含了嵌入式鏈接的文本,這些文本可以鏈接到其他文檔的文本,并支持非連續(xù)顯示文本格式的材料。超文本的概念出現(xiàn)得更早一些,在20世紀80年代中期,它就已經(jīng)在Xerox公司的NoteCards和Apple公司的HyperCard中使用了。從現(xiàn)在開始,本書將WorldWideWeb簡稱為Web。Web中的信息單元有幾個不同的名稱,其中,最常用的是頁面(Page)、文檔(Document)和資源(Resource)。這三個名稱中最常用的是文檔,雖然它看起來好像只能描述文本。頁面的應用范圍也比較廣泛,但經(jīng)常會引起誤解,因為Web信息單元通常會涵蓋構成印刷媒體的多種頁面類型。此處將這些單元稱為資源是比較合適的,因為這可以涵蓋可能包含的非文本信息。雖然本書有的地方或多或少地將文檔和頁面互換使用,但在絕大部分情況下,應該優(yōu)先使用文檔這一名稱。有時候文檔只表示文本,通常包含一些指向其他文檔的嵌入式鏈接。但是,文檔也可能包含圖片、音頻或者其他類型的媒體。如果一個文檔包含了非文本信息,就稱為超媒體。從抽象意義上講,Web僅是一個由文檔組成的超大規(guī)模集合,其中通過鏈接相互聯(lián)系。這些文檔是由Web服務器提供,可以通過瀏覽器進行訪問。有關Web瀏覽器的信息請參見1.3節(jié),Web服務器的信息請參見1.4節(jié)。1.2.2Web還是Internet需要指出的是,Web和Internet并不是一回事。Internet是計算機和其他設備的集合,它們通過裝置連接起來,相互之間可以通信。Web則是一組軟件和協(xié)議的集合,Internet中的絕大部分(甚至全部)計算機都安裝了這些軟件和協(xié)議。其中有些計算機運行Web服務器,用來提供文檔,但大多數(shù)計算機運行Web客戶機或瀏覽器,用來從服務器請求文檔,并將文檔顯示給用戶。在Web問世之前,Internet就非常有用;即使沒有Web,Internet也仍然非常有用。但是,目前的情況是絕大部分用戶都通過Web來使用Internet。1.3Web瀏覽器Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第19頁。Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第19頁。Web服務器中的文檔是由瀏覽器進行請求的,瀏覽器是運行在客戶機上的程序。由于用戶可以利用它來瀏覽服務器中的可用資源,因此稱為瀏覽器。最初的瀏覽器是基于文本的它們不能顯示任何類別的圖形信息,也沒有圖形用戶界面(GraphicalUserInterface,SupercomputerApplications,NCSA)開發(fā)的。那些既不是科學家也不是軟件開發(fā)人員的人能夠借助于這個圖形用戶界面很方便地訪問Web。Mosaic的第一個發(fā)布版本是利用XWindow系統(tǒng)運行在UNIX系統(tǒng)上。到1993年晚期,又發(fā)布了可以運行在AppleMacintosh和MicrosoftWindows系統(tǒng)上的Mosaic版本。這樣,接入到Internet的計算機用戶擁有了一件非常強大的工具,能夠在地球的任何地方訪問Web中的任何資源。Mosaic帶來的這種強大功能和便利,直接導致了Web使用的爆炸性增長。瀏覽器是Web中的客戶機,這是因為它啟動了與服務器的通信,服務器在等待瀏覽器的請求之前不會做任何事情。一種最簡單的情況就是瀏覽器向服務器請求一個靜態(tài)文檔。服務器接到請求后定位這個文檔,然后發(fā)送給瀏覽器,瀏覽器將文檔顯示給用戶。但是,較復雜的情況更為常見。例如,服務器可能會提供一個文檔,請求用戶通過瀏覽器輸入信息。在用戶完成了請求輸入后,瀏覽器將這個請求輸入傳遞給服務器,服務器可能利用這一輸入信息進行計算,然后向瀏覽器返回一個新的文檔,并將計算結果通知給用戶。有時候瀏覽器可能還會直接請求執(zhí)行服務器中存儲的某個程序。程序執(zhí)行的結果將返回給瀏覽器。雖然Web支持很多不同的協(xié)議,但最為常用的還是超文本傳輸協(xié)議(HypertextTransferProtocol,HTTP)。HTTP提供了一種標準的瀏覽器和Web服務器之間的通信格式。1.7節(jié)將簡單介紹HTTP。最常用的瀏覽器是MicrosoftInternetExplorer(IE)和Firefox瀏覽器,其中,IE只能運行在安裝了MicrosoftWindows操作系統(tǒng)的PC機上4實際上,IE4和IE5還能夠在Macintosh計算機中使用,IE4還能夠在UNIX系統(tǒng)中使用。但是,后來的IE版本只能適用于Windows平臺。,F(xiàn)irefox瀏覽器則可用于幾種不同的計算平臺,包括Windows、MacOS和Linux。還有其他一些可用的瀏覽器,如Firefox的“近親”和NetscapeNavigator,另外還有Opera瀏覽器和Apple的Safari瀏覽器。但是,因為當前使用的絕大部分瀏覽器是IE或Firefox,因此本書將重點討論這兩種瀏覽器。4實際上,IE4和IE5還能夠在Macintosh計算機中使用,IE4還能夠在UNIX系統(tǒng)中使用。但是,后來的IE版本只能適用于Windows平臺。1.4Web服務器Web服務器是可以向發(fā)出請求的瀏覽器提供文檔的程序。服務器是一種被動程序:只有當Internet上運行在其他計算機中的瀏覽器發(fā)出請求時,服務器才會響應。Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第20頁。在線站點總量超過23.8億。些其他類型服務器的使用率是比較平均的(處于第三位的服務器是,這是來自中國公司的一種產品,使用率大約為13%)6這些統(tǒng)計數(shù)據(jù)來自于。Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第20頁。在線站點總量超過23.8億。6這些統(tǒng)計數(shù)據(jù)來自于。1.4.1Web服務器操作雖然客戶機和服務器是一種自然的信息分發(fā)模式,但是,這種配置模式還是為Web帶來了其他一些好處。一方面,服務器中的信息處理并不需要耗費太長時間;另一方面,在客戶機屏幕上顯示信息卻非?;ㄙM時間。由于Web服務器不參與信息的顯示過程,因此,服務器可以同時處理很多個客戶機的請求。這樣,利用少量的服務器為大量的客戶機提供文檔就是一種既合乎自然規(guī)律又有效的資源配置方式。URL可以指定以下兩種不同資源的某一種:存儲在服務器中某個數(shù)據(jù)文件的地址,該文件將發(fā)Web客戶機和Web服務器之間的所有通信都使用標準的Web協(xié)議HTTP,1.7節(jié)中將討論該協(xié)議7實際上,有些通信使用的是HTTP的安全版本HTTPS。。7實際上,有些通信使用的是HTTP的安全版本HTTPS。當Web服務器開始運行時,會通知所處的操作系統(tǒng)它已經(jīng)做好了準備,可以接受通過主機中某個端口接入的網(wǎng)絡連接。當處于這種運行狀態(tài)時,服務器將作為操作系統(tǒng)環(huán)境中的后臺進程運行。Web客戶機或者瀏覽器打開一個與Web服務器的網(wǎng)絡連接,向服務器發(fā)送請求信息或者某些可能的數(shù)據(jù),并接收服務器返回的信息,最后關閉連接。當然,網(wǎng)絡連接中瀏覽器和服務器之間還存在其他機器?特別是網(wǎng)絡路由器和域名服務器。但是,本節(jié)只關心Web通信中的一個部分:服務器。簡單地講,Web服務器的主要任務就是監(jiān)控主機的通信端口,通過該端口接受HTTP命令,并運行該命令指定的操作。所有HTTP命令都包含一個URL,其中包含主機名稱。當接收到這個URL之后,Web服務器就將其轉換為一個文件名稱(向客戶機返回一個文件)或者程序名稱(執(zhí)行該程序,并將運行結果返回給客戶機)。這聽起來非常簡單,但和其他聽起來非常簡單的很多過程一樣,其中包含了大量復雜的細節(jié)。Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第21頁。所有當前這些Web服務器都有一個共同起源:最早出現(xiàn)的兩種服務器,其中一種是歐洲CERN開發(fā)的,另一種是美國伊利諾斯大學的NCSA開發(fā)的。目前,最常用的服務器配置是運行在不同UNIX操作系統(tǒng)版本上的Apache。Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第21頁。1.4.2服務器的一般特性不管起源是什么和運行于何種平臺,絕大部分Web服務器都有一些共同的特性。本節(jié)將簡單介紹其中的一些特性。Web服務器的文件結構中有兩種目錄。其中一種目錄的根目錄稱為文檔根目錄。文件層次結構以文檔根目錄為起點來存儲服務器能夠直接訪問到的Web文檔,Web文檔一般情況下是為客戶機提供的。另一種目錄的根目錄稱為服務器根目錄。此目錄與其派生的目錄一起用來存儲服務器及其支持軟件??蛻魴C能夠直接通過頂層URL來訪問存儲在文檔根目錄中的文件。通常,客戶機不能直接訪問URL中指定的文檔根目錄,而是通過服務器將請求的URL映射為文檔根目錄,客戶機并不知道文檔根目錄所在的位置。例如,假定有一個基于UNIX系統(tǒng)的名為的站點(這不是一個真實的站點,至少目前還不是)。進一步假設其文檔根目錄為topdocs,存儲在/admin/web目錄下,topdocs/bulbs/tulips.html來搜索文件tulips.html。許多服務器允許一部分文檔集合存儲到文檔根目錄之外的路徑中。這種提供文檔的輔助性區(qū)域稱為虛擬文檔樹。例如,服務器的初始配置可能是在服務器主機的主系統(tǒng)磁盤中存儲所有文檔。隨著時間推移,服務性文檔集合的大小可能會超過磁盤空間。在這種情況下,一部分文檔可能需要存儲到輔助磁盤中。輔助磁盤可能位于服務器主機中,也可能位于本地局域網(wǎng)的其他機器中。為了支持這種布局,可以將服務器配置為把帶有特殊文件路徑的URL定向到文檔根目錄之外的存儲區(qū)域。有時,一些包含不同內容類型的文件,如圖片,會存儲在文檔根目錄之外。早期服務器的功能一般只限于處理請求的文件,或者輸出請求程序執(zhí)行的結果。在過去幾年,服務器附加的服務功能一直在穩(wěn)定增加?,F(xiàn)代的服務器是既龐大又復雜的系統(tǒng),能夠提供很廣泛的客戶機服務。許多服務器能夠支持在一臺計算機上建立多個站點,這樣可以降低每個站點的成本,并使站點的維護更加方便。這樣的輔助主機稱為虛擬主機。有些服務器可以提供Web上其他主機的文檔根目錄中的文檔,這種服務器稱為代理服務器。雖然Web服務器的最初設計目標只是支持HTTP協(xié)議,但是,目前有許多服務器可以支持ftp、gopher、news以及mailto協(xié)議。此外,幾乎所有Web服務器都支持通過通用網(wǎng)關接口(CommonGatewayInterface,CGI)程序和服務器端腳本與數(shù)據(jù)庫系統(tǒng)進行交互。1.4.3ApacheWeb程序設計計算機科學經(jīng)典教材全文共41頁,當前為第22頁。Apache源自于NCSA服務器httpd,該服務器添加了一些功能后就成為了Apache。美國有一個名為Apache的土著部落,但是,服務器Apache與該部落沒有任何關系。它來自于其第一個版本的特征,該版本是服務器httpd的一個修訂版本。從本節(jié)前面的統(tǒng)計數(shù)據(jù)中了解到Apache是目前應用最廣泛的Web服務器。其中主要原因如下:無論從速度還是從可靠性角度來講,它都是一款優(yōu)秀的服務器。而且,還是開放源代碼軟件,這就意味著它是免費的,有一個巨大的志愿者團隊對其提供支持,系統(tǒng)維護過程既有效又有力。最后,它是基于UNIX系統(tǒng)最好用的服務器之一,而UNIX是最為流行的Web服務器操作系統(tǒng)。Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第22頁。除了為客戶機提供文檔這一基本服務之外,Apache還提供了大量的其他服務。當Apache開始執(zhí)行時,首先從一個文件中讀取配置信息并根據(jù)其中的參數(shù)啟動。一個新的Apache副本包含了針對“典型”操作的默認配置信息。站點管理員通過修改默認的配置信息來滿足自己的特殊要求和習慣。由于歷史的原因,一個Apache服務器中包含了以下三個配置文件:httpd.conf、srm.conf以及access.conf。只有文件httpd.conf中包含了真正用來控制Apache服務器行為的指令。其他兩個文件指向文件httpd.conf。文件httpd.conf中包含了一個指令列表,用于指定服務器的操作。/docs/2.2/mod/quickreference.html對這些指令做了描述。1.4.4IIS雖然Apache已經(jīng)可以移植到Windows平臺,但是,它并不是各種Windows操作系統(tǒng)中最流行的服務器。由于MicrosoftIIS服務器是作為Windows系統(tǒng)的一部分而一起提供的,而且由于它本身也是一個很好的服務器,因此,絕大部分基于Windows的Web服務器使用的是IIS。Apache和IIS提供的各種服務十分類似。從站點管理員的觀點看,Apache與IIS最大的區(qū)別在于,Apache是通過一個配置文件進行控制,管理員可以通過編輯這個文件來修改Apache的行為。對于IIS而言,服務器時控制IIS和ftp。站點管理員可以通過該程序來設定服務器的參數(shù)。在WindowsXP和Vista下,可以按照“控制面板”|“管理工具”|IISAdmin的順序來啟動IIS管理單元。在最后一個選項上單擊啟動相應窗口,利用該窗口可以啟動、停止或暫停IIS。當服務器停止后,可以通過該窗口修改IIS的參數(shù)。1.5統(tǒng)一資源定位符統(tǒng)一資源定位符(Uniform/Universal8資源地址通常也稱為URL,因此,究竟是uniform還是universal無關緊要。ResourceLocator,URL)用于標識Internet中的文檔(資源)。Internet中有許多不同類型的資源,可以通過不同格式的URL標識它們。8資源地址通常也稱為URL,因此,究竟是uniform還是universal無關緊要。1.5.1URL的格式所有的URL都遵循以下通用格式:Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第23頁。scheme:object-addressWeb程序設計計算機科學經(jīng)典教材全文共41頁,當前為第23頁。其中,scheme一般指的是通信協(xié)議。常用的通信協(xié)議包括http、ftp、gopher、telnet、file、mailto以及news。不同的通信協(xié)議對應的object-address格式也不同。本書主要介紹HypertextMarkupLanguage,XHTML)文檔。當URL中的scheme為HTTP時,object-address應該為如下格式://完全限定域名/文檔路徑我們感興趣的另一個協(xié)議是file協(xié)議。file協(xié)議用于表示正運行瀏覽器的計算機中的文檔。要知道Web中的某些文檔是否可用,可利用該協(xié)議進行測試,而不需要將這些文檔共享給所有的瀏覽器,因此,該協(xié)議是非常有用的。當URL中的scheme為file時,完全限定域名就可以省略了,整個URL應該為如下格式:file://文檔路徑由于本書只討論XHTML文檔,因此接下來對URL的討論將僅限于HTTP協(xié)議。服務器計算機的名稱就是該計算機的主機名稱,文檔就存儲在服務器計算機中(以便其他計算機訪問)。對于將消息傳遞給主機這一操作,必須指定主機中的一個進程進行處理。這樣的進程是通過對應的端口號進行標識的。Web服務器默認的端口號為80。如果某個服務器配置為使用其他的端口號,就必須在URL中將這個端口號附加到主機名稱之后。例如,如果一個Web服務器配置為使用端口800,那么必須將“:800”附加到主機名稱之后。9實際上,某些瀏覽器會錯誤地接受URL中的空格,但這并不是一種標準行為。URL/URI_Overview.html給出了有關URL的詳細介紹。9實際上,某些瀏覽器會錯誤地接受URL中的空格,但這并不是一種標準行為。1.5.2URL路徑HTTP協(xié)議指定文檔路徑的方式與操作系統(tǒng)中文件系統(tǒng)指定文件或目錄路徑的方式類似:都是由目錄名稱和文件名稱組成的一組序列,名稱之間通過分隔符進行分隔,不同的操作系統(tǒng)對應的分隔符也是不一樣的。對于UNIX服務器而言,路徑是通過“/”隔開的;對于Windows服務器而言,路徑是通過“\”隔開的。絕大多數(shù)瀏覽器都能夠接受用戶輸入不正確的分隔符例如,在Windows服務器中采用“/”作為文檔文件路徑的分隔符,如下所示。/files/f99/storefront.htmlWeb程序設計計算機科學經(jīng)典教材全文共41頁,當前為第24頁。URL指定的路徑可能與文件路徑有所不同,這是因為URL并不需要包含文件路徑中的所有目錄。按照順序包含了所有目錄的路徑稱為完整路徑。絕大部分情況下,服務器配置文件中指定了某個基礎路徑,URL指定的文檔路徑是相對于該基礎路徑而設定的。這樣的路徑稱為部分路徑。例如,如果服務器的配置文件將存儲文件的根目錄指定為files/f99,那么上面的URL可以修改為:Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第24頁。/storefront.html如果指定的文檔并不是一個真正的文檔,而是一個目錄,那么只需要在該目錄名的后面添加一個“/”即可,如下所示:/departments/有時可能指定了一個目錄(通過在后面附加一個“/”),但并未給出名稱,例如:/此時,服務器將在存儲文檔的頂層目錄中進行搜索,直到搜索到一個服務器認為是主頁的文件。按照慣例,主頁文件名稱一般為index.html。主頁中通常包含了一些鏈接,用戶可以通過鏈接來請求服務器中的其他文件。如果服務器未在根目錄中找到一個合適的主頁文件,它將構造出目錄列表并將其返回給瀏覽器。1.6MIME瀏覽器需要一些方法來確定從Web服務器中接收的文檔是哪種格式。如果不了解文檔的格式,瀏覽器將無法正確顯示該文檔,因為不同的文檔格式要求使用不同的顯示工具。這些文檔的格式是通過多用途網(wǎng)際郵件擴充協(xié)議(MIME)指定的。1.6.1類型說明檔可能包含各種類型的文本、視頻數(shù)據(jù)或者音頻數(shù)據(jù)。由于Web也存在這方面的需求,因此,Web中也采用了MIME來指定所傳遞的文檔類型。Web服務器在一個將要發(fā)送到瀏覽器的文檔頭部附加了MIME的格式說明。當瀏覽器從Web服務器中接收到這個文檔時,就根據(jù)其中包含的MIME格式說明來確定下一步的操作。例如,如果文檔內容為文本,則MIME格式說明將通知瀏覽器文檔的內容是文本,并指明具體的文本類型。如果文檔內容為音頻,那么MIME格式說明將通知瀏覽器文檔的內容是音頻,并給出音頻格式的具體描述,以便瀏覽器選用合適的播放程序來正確播放收到的音頻文件。MIME說明的格式如下所示:類型/子類型Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第25頁。子類型為plain和html。最常用的圖片子類型為gif和jpeg。最常用的視頻子類型為mpeg和quicktime。每個Web服務器中的配置文件中都包含了一個MIME說明列表。在本書剩余的內容中,只要提到文檔類型,指的就是文檔類型及其子類型。Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第25頁。名.html意味著服務器應該在將文檔發(fā)送給瀏覽器之前為文檔附加text/html10這種說法并不完全準確。XHTML文檔也使用.html文件擴展名,嚴格來說,它應該使用不同的MIME類型。10這種說法并不完全準確。XHTML文檔也使用.html文件擴展名,嚴格來說,它應該使用不同的MIME類型。瀏覽器中還有一個對應的轉換表,用于通過文檔的文件擴展名來查找文檔類型。但是,這個轉換表只有當服務器沒有指定文檔的MIME類型時才使用,可能只有一些較老的服務器才會出現(xiàn)這種情況。在其他情況下,瀏覽器都可以從服務器提供的MIME頭獲取文檔類型信息。1.6.2實驗性文檔類型video/x-msvideo。任何Web提供商如果想要添加一個實驗性子類型,只需在服務器的MIME說明列表中添加一個該子類型的名稱即可。例如,某個Web提供商可能有一個自定義的數(shù)據(jù)庫,并希望通過Web與其他人共享該數(shù)據(jù)庫中的內容。這樣就涉及到了瀏覽器如何顯示該數(shù)據(jù)庫的內容的問題。Web提供商必須提供一個程序,瀏覽器可以調用該程序來顯示數(shù)據(jù)庫中的內容。這種程序可以位于瀏覽器的外部,此時稱為輔助應用程序;也可以以代碼模塊的形式嵌入到瀏覽器中,此時稱為插件。MIME說明為text/plain(純文本)和text/html(HTML文件)。一些特殊的瀏覽器有時無法處理某些文檔類型,即使這些文檔類型的應用比較廣泛也是如此。此時,瀏覽器按照前面討論的實驗性類型的處理方式來處理這些無法處理的類型。瀏覽器通過檢查自身的配置文件來確定所需的輔助應用程序或者插件,這個配置文件中規(guī)定了文件類型和輔助應用程序或插件之間的對應關系。如果瀏覽器找不到顯示文檔所需要的應用程序或插件,則給出錯誤消息。瀏覽器還可以向服務器指定它適合接收的文檔類型,參見1.7節(jié)。1.7超文本傳輸協(xié)議HTTP的規(guī)范。在萬維網(wǎng)聯(lián)盟(WorldWideWebConsortium,W3C)的Web站點中可以找到RFC2616。本節(jié)將簡要介紹HTTP。HTTP包含兩個階段:請求階段和響應階段。瀏覽器和Web服務器之間的每次HTTP通信(請求或者響應)都包含兩部分:頭部和主體。頭部包含了與通信有關的信息;主體則包含了通信的數(shù)據(jù),當然,前提是存在這樣的數(shù)據(jù)。1.7.1請求階段Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第26頁。HTTP請求的通用格式如下所示:Web程序設計計算機科學經(jīng)典教材全文共41頁,當前為第26頁。(1)?HTTP方法URL中的域名部分HTTP版本(2)頭部字段(3)空行(4)消息主體以下是一個HTTP請求的首行的示例:GET/storefront.htmlHTTP/1.1HTTP中只定義了為數(shù)不多的幾種請求方法,而且一般只使用其中的一小部分。表1-1中列出了幾種最常用的方法。表1-1HTTP請求方法方