HTML開(kāi)發(fā)王

出版時(shí)間:2008-6  出版社:電子工業(yè)出版社  作者:張亞飛  頁(yè)數(shù):439  字?jǐn)?shù):742400  
Tag標(biāo)簽:無(wú)  

前言

  自從20世紀(jì)70年代因特網(wǎng)誕生以來(lái),以WWW技術(shù)為支撐的萬(wàn)維網(wǎng)近十多年來(lái)迅猛發(fā)展,滲透到社會(huì)生活的各個(gè)方面。從舊金山郊外的硅谷,到新竹日夜通明的半導(dǎo)體工廠,它正在改變著我們工作和生活的方式。.  全世界有3/4的人還從未接觸過(guò)因特網(wǎng),這也預(yù)示著我們這些正在從事與因特網(wǎng)相關(guān)工作的人員,以及即將從事此類工作的設(shè)計(jì)者、開(kāi)發(fā)者都將有一個(gè)美好的明天?! ”仨氄莆盏娜f(wàn)維網(wǎng)常識(shí)  用戶首先必須掌握萬(wàn)維網(wǎng)的基本常識(shí),這是萬(wàn)維網(wǎng)的基本知識(shí)結(jié)構(gòu),也是“開(kāi)發(fā)王”這套書所基于的基本理論基石和貫穿于始終的綱要。并且,這也不單單是一個(gè)知識(shí)結(jié)構(gòu)的問(wèn)題,其實(shí)任何的技術(shù)知識(shí)都是隨著技術(shù)本身的發(fā)展慢慢積累起來(lái)的,是技術(shù)不斷變化、不斷延伸的結(jié)果,所以知識(shí)結(jié)構(gòu)往往也是一個(gè)怎樣正確認(rèn)識(shí)技術(shù)發(fā)展史的問(wèn)題。下面我們就來(lái)簡(jiǎn)要介紹一下萬(wàn)維網(wǎng)的技術(shù)簡(jiǎn)史和萬(wàn)維網(wǎng)的基本知識(shí)結(jié)構(gòu),這也是閱讀“開(kāi)發(fā)王”這套書的基本前提?! WW也就是我們經(jīng)常提到的萬(wàn)維網(wǎng),它是Internet上那些支持WWW和超文本傳輸協(xié)議(HTTP)的客戶機(jī)與服務(wù)器的集合,通過(guò)它可以存取世界各地的超文本文件,內(nèi)容包括文字、圖形、聲音、動(dòng)畫、資料庫(kù),以及各式各樣的軟件等?! TML是萬(wàn)維網(wǎng)所基于的標(biāo)準(zhǔn)的格式化語(yǔ)言,它自從被發(fā)明以來(lái)就構(gòu)成了整個(gè)萬(wàn)維網(wǎng)設(shè)計(jì)和開(kāi)發(fā)的核心,這也是我們每個(gè)從業(yè)人員都必須熟知于心、了然于胸的,它是我們從業(yè)于萬(wàn)維網(wǎng)的基石。  鑒于HTML扮演的重要角色和萬(wàn)維網(wǎng)不斷發(fā)展的客觀要求,我們需要不斷改進(jìn)和細(xì)化它的功能——將結(jié)構(gòu)、內(nèi)容和樣式分離已是大勢(shì)所趨,這也是CSS(層疊樣式表)出現(xiàn)的原因。  在樣式表沒(méi)有出現(xiàn)之前,HTML用于呈現(xiàn)的功能實(shí)際肩負(fù)著兩種責(zé)任:一種是語(yǔ)義的呈現(xiàn),一種是表現(xiàn)形式的呈現(xiàn)。例如,b元素(英文bold的縮寫)既要表現(xiàn)加粗的語(yǔ)義,實(shí)際上還要用做呈現(xiàn)的標(biāo)識(shí)?! 邮奖淼某霈F(xiàn)簡(jiǎn)化了HTML語(yǔ)言并且減輕了HTML對(duì)表現(xiàn)形式的責(zé)任,它使設(shè)計(jì)者和用戶都可以控制文檔的表現(xiàn)形式,包括字體信息、對(duì)齊方式、顏色等?! TML和CSS一道構(gòu)成了萬(wàn)維網(wǎng)應(yīng)用的客戶端基石,它們又被稱為萬(wàn)維網(wǎng)應(yīng)用程序的展示層。  萬(wàn)維網(wǎng)在不斷前進(jìn),人們對(duì)于新功能的渴望也在不斷增強(qiáng),而這些新功能理所應(yīng)當(dāng)能夠針對(duì)不同用戶的需求做出不同的響應(yīng),這也就是動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)層出不窮的原因?! ≡谶@個(gè)目標(biāo)的驅(qū)使下,微軟創(chuàng)造了ASP技術(shù),進(jìn)而又創(chuàng)造了ASP.NET;SUN創(chuàng)造了Servlet,進(jìn)而又創(chuàng)造了JSP;Adobe創(chuàng)造了ColdFusion;而萬(wàn)維網(wǎng)的技術(shù)社區(qū)會(huì)聚著不計(jì)其數(shù)的開(kāi)發(fā)者,他們中的杰出者創(chuàng)造了PHP并使之成為流行的動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)?! ∵@些動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)可以針對(duì)用戶的不同請(qǐng)求做出不同的響應(yīng)。“請(qǐng)求/響應(yīng)”正是萬(wàn)維網(wǎng)應(yīng)用程序的基本模式(不管是靜態(tài)網(wǎng)頁(yè)還是動(dòng)態(tài)網(wǎng)頁(yè))。不同的動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)有不同的對(duì)應(yīng)于“請(qǐng)求/響應(yīng)”的語(yǔ)言特點(diǎn),但它們也都有共同的實(shí)現(xiàn)特點(diǎn),那就是針對(duì)請(qǐng)求生成不同的HTML網(wǎng)頁(yè),并把它傳遞到用戶的客戶端軟件中。正如你經(jīng)常用到的那樣,這個(gè)客戶端軟件被稱為“瀏覽器”。  由于動(dòng)態(tài)網(wǎng)頁(yè)總是位于服務(wù)器上,而它生成的HTML網(wǎng)頁(yè)又總是被瀏覽器瀏覽,所以這個(gè)開(kāi)發(fā)經(jīng)常被描述成B/S,也就是Browser(瀏覽器)和Server(服務(wù)器)的縮寫。  所有的基于WWW技術(shù)的動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)都會(huì)生成HTML網(wǎng)頁(yè)(網(wǎng)頁(yè)中也許會(huì)包含樣式表,也有可能僅僅是裸數(shù)據(jù)而不包含HTML標(biāo)簽),這也是為何你會(huì)看到不同的動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)卻可以創(chuàng)建同樣呈現(xiàn)結(jié)果的根本原因?! ⊥瑯?,在客戶端瀏覽器中你也看不到動(dòng)態(tài)網(wǎng)頁(yè)的源代碼,因?yàn)檫@些源代碼在服務(wù)器上就已經(jīng)被解釋、執(zhí)行,最后被轉(zhuǎn)化成HTML格式的代碼并被傳遞到客戶端。這些網(wǎng)頁(yè)之所以被稱為動(dòng)態(tài)網(wǎng)頁(yè),也正是因?yàn)樗鼈兡軌蚋鶕?jù)不同的請(qǐng)求生成不同的HTML網(wǎng)頁(yè),這個(gè)作為結(jié)果的HTML網(wǎng)頁(yè)是“動(dòng)態(tài)”產(chǎn)生的?! ∵@些動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)和支持它們的底層技術(shù)一道也被稱為中間件,它們構(gòu)成了網(wǎng)絡(luò)應(yīng)用的中間層。由于這個(gè)中間層包含了用于分析用戶不同請(qǐng)求,并對(duì)不同請(qǐng)求做出不同響應(yīng)的業(yè)務(wù)邏輯代碼,因此,這個(gè)層又被稱為業(yè)務(wù)邏輯層?! ∥挥跇I(yè)務(wù)邏輯層之下的是數(shù)據(jù)服務(wù)層,用戶請(qǐng)求所要獲取的數(shù)據(jù)從這里被“篩選”出來(lái),并經(jīng)過(guò)業(yè)務(wù)邏輯層被發(fā)送到客戶端—它們被包含在HTML文件中?! 〕鲇谌藗儗?duì)數(shù)據(jù)海量存儲(chǔ)和便于查詢?cè)L問(wèn)的渴望,推動(dòng)著整個(gè)數(shù)據(jù)服務(wù)產(chǎn)業(yè)的發(fā)展,關(guān)系數(shù)據(jù)庫(kù)(Relational Database)憑借其自身的特點(diǎn)從它被發(fā)明那天起就成為整個(gè)數(shù)據(jù)服務(wù)產(chǎn)業(yè)的核心。Oracle也正是憑借其著名的關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品Oracle 9i成為軟件產(chǎn)業(yè)中僅次于微軟的軟件巨擘。IBM DB2、微軟SQL Server和開(kāi)源的MySQL也都是關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品中的佼佼者?! 《④汷ffice產(chǎn)品組中的Access以其高智能、輕量化和簡(jiǎn)單易用性的特點(diǎn)在辦公自動(dòng)化軟件(OA)領(lǐng)域內(nèi)廣泛應(yīng)用,它也是很多開(kāi)發(fā)人員學(xué)習(xí)數(shù)據(jù)庫(kù)開(kāi)發(fā)的極佳入門工具。    .數(shù)據(jù)服務(wù)層不僅僅是數(shù)據(jù)庫(kù),而且還包含了其他可以用做數(shù)據(jù)的資源,例如XML。XML已經(jīng)成為因特網(wǎng)間標(biāo)準(zhǔn)的數(shù)據(jù)交換格式,它也正在成為數(shù)據(jù)存儲(chǔ)的標(biāo)準(zhǔn)格式?! ≌故緦?、業(yè)務(wù)邏輯層、數(shù)據(jù)服務(wù)層構(gòu)成了當(dāng)前萬(wàn)維網(wǎng)應(yīng)用程序的基礎(chǔ)架構(gòu),它們也被統(tǒng)稱為“三層架構(gòu)”。  實(shí)際上你不得不了解它,它是進(jìn)行萬(wàn)維網(wǎng)應(yīng)用程序開(kāi)發(fā)的認(rèn)識(shí)論基石,也是實(shí)踐的指南針。設(shè)想存在一個(gè)不遵守該指南的萬(wàn)維網(wǎng)應(yīng)用程序是不可能的,同樣,設(shè)想任何不了解該指南而進(jìn)行的萬(wàn)維網(wǎng)應(yīng)用程序開(kāi)發(fā)也是近似荒謬的。  在“開(kāi)發(fā)王”系列圖書中,我們針對(duì)不同的萬(wàn)維網(wǎng)技術(shù),對(duì)三層架構(gòu)做了精確的、同一的闡述,這是你在全球其他任何地方都無(wú)法完整系統(tǒng)地獲得的。不管你愿不愿意承認(rèn),你永遠(yuǎn)都無(wú)法擺脫它。  在萬(wàn)維網(wǎng)軟件開(kāi)發(fā)日益區(qū)分為涇渭分明的三層架構(gòu)后,市場(chǎng)和技術(shù)并未停止它們前進(jìn)的步伐,它們依舊在不斷地向前延伸。在技術(shù)廠商的推動(dòng)下,在萬(wàn)維網(wǎng)的技術(shù)社區(qū)的遙相呼應(yīng)下,三層架構(gòu)中的每個(gè)層次都為了某些特殊的應(yīng)用不斷向其鄰近的層次延伸,首當(dāng)其沖的便是展示層向邏輯層的滲透?! ≌故緦永每蛻舳四_本和瀏覽器插件技術(shù)開(kāi)始分擔(dān)業(yè)務(wù)邏輯層的部分運(yùn)算,而且,它們還有一個(gè)響亮的名字,被稱為“富客戶端”?! avaScript、Flash和Java Applet目前是實(shí)現(xiàn)展示層分擔(dān)業(yè)務(wù)邏輯層運(yùn)算的主要軟件技術(shù)。JavaScript因?yàn)锳JAX解決方案和DHTML解決方案的結(jié)合而“重獲”新生,而Flash憑借其分布廣泛的Flash Player插件及高效的開(kāi)發(fā)環(huán)境而正日益成為下一代萬(wàn)維網(wǎng)客戶端運(yùn)算的核心。與此形成鮮明對(duì)比的是Java Applet技術(shù),因?yàn)槠溟_(kāi)發(fā)的難度極高,以及其客戶端運(yùn)行環(huán)境自身的原因,從其誕生那天起就從未引人注目過(guò),今天,它依然被擱置在某個(gè)角落?! ≌缒阍凇伴_(kāi)發(fā)王”系列圖書中所看到的那樣,我們已經(jīng)將JavaScript、Flash技術(shù)完全融入到整個(gè)萬(wàn)維網(wǎng)開(kāi)發(fā)體系中,現(xiàn)在你理應(yīng)將它們視為一個(gè)整體,而不是再孤立地去看待它們中的任何一個(gè)?! ⊥暾到y(tǒng)的萬(wàn)維網(wǎng)知識(shí)體系能為你帶來(lái)什么  是的,這個(gè)問(wèn)題是每一個(gè)開(kāi)發(fā)者、雇主、任課教師和學(xué)員所關(guān)心的,而且,很顯然,每個(gè)用戶理應(yīng)關(guān)心。實(shí)際上,每一個(gè)人都應(yīng)該問(wèn)自己這樣一個(gè)問(wèn)題。..  用戶還會(huì)問(wèn):你為何為該套書起名為“開(kāi)發(fā)王”?它(的內(nèi)容)真的如描述的那么好嗎?  這真的很直截了當(dāng),而且我本人也喜歡直截了當(dāng)。當(dāng)然,每一個(gè)開(kāi)發(fā)者也都有權(quán)利這樣提問(wèn),而我也正想在這里為大家分享這個(gè)問(wèn)題的答案?! ∵@本書為何被冠以“王”  每本圖書都可能會(huì)被冠以“王”這樣的詞匯,以表明這本書是多么偉大,但是并非所有圖書都能名副其實(shí)?! ∽鳛檫@套書的作者,我的眼中只有“王”—這就是我的回答,并且,毫不猶豫?! ‘?dāng)然,智者從不相信信口而來(lái),每一個(gè)讀者理應(yīng)都是智者,而唯一值得相信的理應(yīng)是事實(shí)?! ∵@套書從最初的準(zhǔn)備,到今天的出版,前后經(jīng)過(guò)長(zhǎng)達(dá)6年的時(shí)間,前后經(jīng)過(guò)了數(shù)以千計(jì)次大小修改。你現(xiàn)在看到的這個(gè)序言我也寫了二三年時(shí)間,序言的目標(biāo)就是做到“增一字嫌冗余,減一字則無(wú)從下手”?! 懽鞯倪^(guò)程是漫長(zhǎng)而痛苦的(偶爾也會(huì)有快樂(lè)),出版的歷程也是如此。如果作者想出版一本書,就必須首先給出版機(jī)構(gòu)一個(gè)策劃書—也就是這本書的基本情況和設(shè)想?! ∶恳粋€(gè)作者都會(huì)想該如何打動(dòng)出版機(jī)構(gòu)出版它,這是毫無(wú)疑問(wèn)的?! ∧愕每嗨稼は搿 〉珜?shí)際上,這很簡(jiǎn)單,你必須告訴他們這本書是最棒的,我想,除此之外別無(wú)他法?! ∪绻麤](méi)有證據(jù),我想你也根本不會(huì)相信,更何況那些“眼疾手快”的編輯呢?  當(dāng)然,那是因?yàn)槲医o他們提供了充足可信的證據(jù)。如果你有某個(gè)事實(shí)作為證據(jù),我想你也可以這樣做,讓我們來(lái)看一個(gè)簡(jiǎn)單的事實(shí)吧:  根據(jù)JavaBeans規(guī)范的要求,一個(gè)JavaBeans必須支持序列化或者外部化,這在JavaBeans規(guī)范5.5節(jié)的第一行就明確地定義了這個(gè)要求?! ∪绻覜](méi)有記錯(cuò),那上面白紙黑字寫著下面的一行英文:  All beans must support either Serialization or Externalization.  這意味著只有實(shí)現(xiàn)序列化或者外部化,或者繼承于某個(gè)實(shí)現(xiàn)了序列化或者外部化的基類,才能將一個(gè)Java類視做JavaBeans。但是遺憾的是,當(dāng)你在查閱有關(guān)Java網(wǎng)絡(luò)開(kāi)發(fā)(包括JSP開(kāi)發(fā)、JSF、Servlet、Structs等)的圖書和資料時(shí),又有多少圖書和資料教你遵守規(guī)范的要求呢?絕大多數(shù)的Java網(wǎng)絡(luò)開(kāi)發(fā)圖書和資料在沒(méi)有實(shí)現(xiàn)序列化或者外部化時(shí)就告訴我們年輕的開(kāi)發(fā)者:這是一個(gè)JavaBeans。很明顯,這是跟我們年輕的開(kāi)發(fā)者開(kāi)了一個(gè)天大的玩笑!  當(dāng)然,僅僅是玩笑尚不足對(duì)我們年輕的開(kāi)發(fā)者構(gòu)成致命的打擊,關(guān)鍵是按照這樣的闡述開(kāi)發(fā)出的應(yīng)用程序?qū)?huì)給雇主造成致命的、無(wú)法挽回的損失?! ∮纱宋乙蚕氲?,曾經(jīng)有開(kāi)發(fā)人員在讀完一些計(jì)算機(jī)圖書,再經(jīng)歷自己多年的開(kāi)發(fā)實(shí)踐后有以下感慨:國(guó)內(nèi)很多技術(shù)圖書領(lǐng)域都是這樣,好多計(jì)算機(jī)圖書只要最初的那一本錯(cuò)了,后面的就全是Copy,甚至都不去關(guān)心事物的本源是什么。  但,這僅僅不過(guò)是悲劇的開(kāi)端……  如果究其產(chǎn)生的根源,那么基礎(chǔ)認(rèn)知上存在根源性錯(cuò)誤是導(dǎo)致這種情況發(fā)生的直接原因。  下面要介紹的這個(gè)認(rèn)識(shí)和實(shí)踐的錯(cuò)誤顯得更加復(fù)雜,可能對(duì)于一個(gè)初入門的作者和譯者而言顯得有些難了,因?yàn)橐肜斫釰avaBeans的真正作用對(duì)他們來(lái)說(shuō)還是有些難度的?! w于JSP規(guī)范并未規(guī)定[jsp:useBean]動(dòng)作標(biāo)簽必須使用JavaBeans,所以大多數(shù)的Java應(yīng)用程序服務(wù)器(JSP實(shí)現(xiàn))在轉(zhuǎn)化階段并未對(duì)其進(jìn)行鑒別(實(shí)際上,就我所知的Java應(yīng)用程序服務(wù)器中,沒(méi)有一款對(duì)其進(jìn)行鑒別),這導(dǎo)致不計(jì)其數(shù)的開(kāi)發(fā)者在使用[jsp:useBean]動(dòng)作標(biāo)簽時(shí)將一個(gè)簡(jiǎn)單的Java Class當(dāng)做JavaBeans來(lái)使用,而不是有甄別地去應(yīng)用這個(gè)動(dòng)作標(biāo)簽?! H僅是[jsp:useBean]動(dòng)作標(biāo)簽中有useBean這個(gè)英文單詞,于是就造成了這樣巨大的錯(cuò)誤?! ∧憧梢钥吹剑凇禞SP開(kāi)發(fā)王》這本書中,我甚至不建議用戶使用[jsp:useBean]動(dòng)作標(biāo)簽。當(dāng)然,如果非要使用它,那么就必須遵守《JSP開(kāi)發(fā)王》提出的幾點(diǎn)約束?! ?yán)格遵守規(guī)范和標(biāo)準(zhǔn),警惕低級(jí)錯(cuò)誤可能造成的悲劇  JavaBeans問(wèn)題的發(fā)生是整個(gè)Java網(wǎng)絡(luò)開(kāi)發(fā)領(lǐng)域內(nèi)的悲劇,實(shí)際上也是整個(gè)網(wǎng)絡(luò)開(kāi)發(fā)領(lǐng)域內(nèi)的悲劇。連這樣基礎(chǔ)的東西都漠視,視標(biāo)準(zhǔn)和規(guī)范的要求于不顧,更不要說(shuō)了解使用JavaBeans的主要目的是什么了,那么我們可愛(ài)的、年輕的開(kāi)發(fā)者如何才能得到正確的網(wǎng)絡(luò)開(kāi)發(fā)知識(shí)呢?  或者,每一個(gè)開(kāi)發(fā)者都應(yīng)自問(wèn):我如何才能為雇主開(kāi)發(fā)出負(fù)責(zé)任的應(yīng)用程序來(lái)呢?  開(kāi)發(fā)者一定要破除“雇主付錢請(qǐng)我來(lái)編寫程序”的錯(cuò)誤觀念,這實(shí)際上是忽略了后面的這句:“目的是我的程序能使雇主有更大的回報(bào)”?! ∧憧梢詫⒁粋€(gè)范例代碼寫錯(cuò),就像寫一個(gè)錯(cuò)別字,可能在所難免,但你絕不能犯如此的低級(jí)錯(cuò)誤,這是影響你整個(gè)開(kāi)發(fā)體系的大事?! ∶恳粋€(gè)人都知道,悲劇顯然不是由某個(gè)特定的錯(cuò)誤引起的,而是由某個(gè)根深蒂固的錯(cuò)誤思想導(dǎo)致的,如果這種思想不除去,擋在開(kāi)發(fā)者和雇主之間的魔障亦不會(huì)消除。它也會(huì)逐漸抽干雇主多年努力所換來(lái)的投入……當(dāng)雇主獨(dú)處一室苦苦思索時(shí),你是不會(huì)體會(huì)到的?! ″e(cuò)誤還在蔓延?  如果僅僅是這樣一個(gè)小事例,尚不足使這套書被稱為“王”,更多的基礎(chǔ)性錯(cuò)誤還繼續(xù)在用戶的軟件開(kāi)發(fā)知識(shí)體系中間蔓延,它們正伺機(jī)阻礙你企業(yè)的發(fā)展?! ∪绻f(shuō)JavaBeans僅僅是個(gè)偶然性的錯(cuò)誤的話,那么在基本驗(yàn)證和網(wǎng)絡(luò)應(yīng)用程序安全這樣最基礎(chǔ)的問(wèn)題上,你同樣幾乎找不到一本像樣的教材和資料能夠完整系統(tǒng)地正確闡述它,更不要說(shuō)其他的安全措施了?! ∵@個(gè)錯(cuò)誤在ASP、ASP.NET、JSP、PHP開(kāi)發(fā)領(lǐng)域內(nèi)存在的時(shí)間之長(zhǎng),幾乎可以與這些語(yǔ)言被發(fā)明那天起同步。導(dǎo)致這個(gè)錯(cuò)誤發(fā)生的根源與導(dǎo)致JavaBeans錯(cuò)誤發(fā)生的根源驚人地相同,都是根本不顧規(guī)范的要求—只要最開(kāi)始的一本書錯(cuò)了,那么后面的全是Copy。  錯(cuò)誤也是積累的,在三層架構(gòu)萬(wàn)維網(wǎng)應(yīng)用程序的展示層,如何正確認(rèn)識(shí)HTML、CSS、JavaScript和Flash已經(jīng)成了當(dāng)務(wù)之急,富客戶端應(yīng)用程序已經(jīng)成為當(dāng)前因特網(wǎng)應(yīng)用程序開(kāi)發(fā)中極受重視的領(lǐng)域,因?yàn)樗芙o消費(fèi)者帶來(lái)最佳的客戶體驗(yàn),而這也正是雇主所需要的?! TML這個(gè)最基礎(chǔ)并且最簡(jiǎn)單的語(yǔ)言可能用戶從未認(rèn)真審視過(guò)—可能只是因?yàn)樗?jiǎn)單了,一個(gè)承擔(dān)了內(nèi)容結(jié)構(gòu)和內(nèi)容呈現(xiàn)責(zé)任的語(yǔ)言如何在新的體系面前被正確理解呢?CSS究竟使HTML發(fā)生了何種變化呢?大多數(shù)的教材都是教授開(kāi)發(fā)者和設(shè)計(jì)者怎樣使用CSS去呈現(xiàn)網(wǎng)頁(yè),卻忘記了這樣做的根本是什么,好像這根本就不應(yīng)被考慮。好在,現(xiàn)在該是結(jié)束的時(shí)候了……  AJAX解決方案的出現(xiàn)仿佛使JavaScript“重新”回到人們關(guān)注的視線中,但如果沒(méi)有DHTML解決方案作為鋪墊,AJAX又能做什么呢?答案很簡(jiǎn)單:它什么也做不了。  AJAX和Flash現(xiàn)在是富客戶端的主流,但是,如果你不能完整系統(tǒng)地正確認(rèn)識(shí)三層架構(gòu)的基本體系,如果不了解C/S和B/S的區(qū)別,那么設(shè)想能真正理解AJAX和Flash用于開(kāi)發(fā)富客戶端應(yīng)用程序只能是空想。  雖然Flash已是一個(gè)成熟的體系,但是,目前Flash開(kāi)發(fā)對(duì)很多開(kāi)發(fā)人員來(lái)說(shuō)還是一個(gè)較新的領(lǐng)域。兩年前,很多開(kāi)發(fā)者還在喋喋不休地爭(zhēng)論AS2和AS1的優(yōu)、缺點(diǎn),爭(zhēng)論往往意味著還不能正確地認(rèn)識(shí)它們的真正實(shí)質(zhì)。所以,兩年前,在拙著中就完整系統(tǒng)地介紹了這方面的知識(shí),幫助用戶完成了這一基本認(rèn)知?,F(xiàn)在,它已經(jīng)被完全融入到這個(gè)萬(wàn)維網(wǎng)知識(shí)體系中,過(guò)去的大批量錯(cuò)誤認(rèn)知已經(jīng)被更正,我們還建立了完整的基于時(shí)間軸的Flash應(yīng)用程序開(kāi)發(fā)的理論體系,所以現(xiàn)在看起來(lái),這個(gè)領(lǐng)域內(nèi)的災(zāi)難并沒(méi)有AJAX領(lǐng)域那么深重?! ∵@些錯(cuò)誤的發(fā)生不但使得開(kāi)發(fā)者深受其害,重要的是,它有可能使得雇主的網(wǎng)絡(luò)應(yīng)用程序因此而遭受重大挫折,并失去客戶的信任?! ≡谶@里,我提到了很多不應(yīng)該發(fā)生卻又事實(shí)上發(fā)生了的,也是現(xiàn)在正在發(fā)生的悲劇,而更為重要的是,對(duì)規(guī)范、標(biāo)準(zhǔn)、實(shí)現(xiàn)、實(shí)踐的完備性認(rèn)識(shí)還有很多、很長(zhǎng)的路要走。如果沒(méi)有完整系統(tǒng)的知識(shí)體系,開(kāi)發(fā)者還不知道要在“黑夜”里摸索多久?! ∠胍幌?,除了這里提到的錯(cuò)誤,還有哪些錯(cuò)誤被隱藏起來(lái)了,你還未發(fā)現(xiàn)呢?這也是為何我在書中對(duì)易出錯(cuò)的部分做了突出顯示的原因?! ∫苍S不遠(yuǎn)處真的就有冰山出沒(méi)……  當(dāng)我看到有無(wú)數(shù)的教材和資料在長(zhǎng)篇累牘、多達(dá)數(shù)十頁(yè)的論述抽象類和接口的區(qū)別時(shí),我真的感到悲哀,是在為整個(gè)使用面向?qū)ο筮M(jìn)行軟件開(kāi)發(fā)的開(kāi)發(fā)者們悲哀。當(dāng)我兩年前用一句話來(lái)區(qū)分抽象類和接口時(shí),可能并沒(méi)有人真正地去注意過(guò)它,雖然,在拙著中還用了文字加粗……  就像6年前,當(dāng)在拙著中第一次提出Flash Player虛擬機(jī)的概念時(shí),我想也并沒(méi)有多少人真正注意過(guò)這個(gè)問(wèn)題;但是在2年前,我在拙著中第一次明確闡述了在ActionScript 2.0和ActionScript 1.0中存在的基本錯(cuò)誤認(rèn)知,現(xiàn)在,兩年過(guò)去了,我想再也沒(méi)有人會(huì)去犯同樣愚蠢的錯(cuò)誤了。  想來(lái)應(yīng)該有不少任課教師應(yīng)該可以給他們的學(xué)員講授正確的Flash開(kāi)發(fā)了?! 〉牵绻艺f(shuō)很多開(kāi)發(fā)者連Flash基本的變量作用范圍都不能搞清楚,你是不是很詫異呢?  是啊,兩年前我也經(jīng)常聽(tīng)一些人說(shuō)他們會(huì)Flash開(kāi)發(fā),可是我卻發(fā)現(xiàn)他們連最基本的變量的作用范圍都一知半解,如果連這個(gè)都不能系統(tǒng)掌握,能開(kāi)發(fā)出一個(gè)完美的程序來(lái)嗎?又如何為雇主創(chuàng)造價(jià)值呢?  想來(lái),我的前一本Flash作品已經(jīng)有不少人看過(guò)了,但是,同樣,大多數(shù)Flash開(kāi)發(fā)人員可能并沒(méi)有得到這個(gè)知識(shí)?! ∈前?,因?yàn)椴](méi)有特別聲張這件事,就是想看一看用戶究竟有沒(méi)有真正去學(xué)習(xí)Flash開(kāi)發(fā),去認(rèn)真獲取那些最真實(shí)的東西。  但是,這終究還是造成了遺憾——當(dāng)拙著第一次為整個(gè)ActionScript語(yǔ)言帶來(lái)了完整系統(tǒng)的變量作用范圍的介紹時(shí),可能很少人去注意它?! ‖F(xiàn)在,新版的《Flash開(kāi)發(fā)王》我想不會(huì)再有人錯(cuò)過(guò)了?! ∮袝r(shí)候,夜真的很黑、很深沉,它會(huì)淹沒(méi)你,并讓你忘記你自己……  開(kāi)發(fā)王系列圖書有兩個(gè)最基本的基石  當(dāng)然,即使有點(diǎn)點(diǎn)滴滴的、零星的低級(jí)錯(cuò)誤,也不能說(shuō)本書不能稱為“王”。開(kāi)發(fā)王必須有兩個(gè)最基本的基石,除此之外別無(wú)其他,這兩個(gè)基石是:  幫助用戶建立正確的認(rèn)知  幫助用戶建立完整系統(tǒng)的知識(shí)體系  正確的認(rèn)知就是一切的根本  正確的認(rèn)知就是一切的根本,這無(wú)須進(jìn)行任何說(shuō)明,而關(guān)鍵是什么是正確的認(rèn)知。  認(rèn)知有兩個(gè)層面的意思,一個(gè)是認(rèn)字,一個(gè)是知道?! ∶總€(gè)人都是從認(rèn)字開(kāi)始的,這毫無(wú)疑問(wèn),認(rèn)字就是了解事實(shí)是什么,知道就是怎樣做才能正確地認(rèn)識(shí)到這個(gè)事實(shí)?! ∥覀兘?jīng)常聽(tīng)到一個(gè)成語(yǔ)“授之以魚(yú),不如授之以漁”。是的,不單單是應(yīng)該告訴用戶一個(gè)事實(shí),還要告訴他們?cè)鯓尤フ_地認(rèn)識(shí)到這個(gè)事實(shí)?! ∈聦?shí)往往是某種規(guī)定,就像你學(xué)習(xí)漢語(yǔ)拼音那樣,a這個(gè)英文字母就是發(fā)音為“啊”。當(dāng)然,對(duì)于應(yīng)用程序開(kāi)發(fā)來(lái)說(shuō),這個(gè)規(guī)定性或由某個(gè)標(biāo)準(zhǔn)定義,或由某個(gè)規(guī)范定義,或由某個(gè)程序的業(yè)務(wù)邏輯所要求,而你的“認(rèn)字”也就是了解這種規(guī)定性究竟規(guī)定了什么。這個(gè)“認(rèn)字”很枯燥,你只有死記硬背,完全遵照,就像完全遵照J(rèn)avaBeans規(guī)范那樣?! ‖F(xiàn)在關(guān)鍵點(diǎn)是:這個(gè)死記硬背的事實(shí)用戶如何才能認(rèn)識(shí)到它呢?這真的很難辦。為此我們提出了3個(gè)最簡(jiǎn)單、最基本的問(wèn)題可以幫助你一舉解決這個(gè)難題:  這是什么?  為什么是這樣?  該怎樣做?  你在“開(kāi)發(fā)王”每一本書中,甚至每一章中都可以看到或體會(huì)到這樣的3個(gè)最簡(jiǎn)單、最基本的問(wèn)題?! ⊥暾到y(tǒng)的知識(shí)體系就是順理成章的一切  正確的認(rèn)知往往是一點(diǎn)一滴匯聚起來(lái)的,如果這些點(diǎn)點(diǎn)滴滴的認(rèn)知被相互肢解開(kāi)來(lái),那么最終形成的則是一片混亂。這就需要有一個(gè)知識(shí)體系將這些點(diǎn)點(diǎn)滴滴的認(rèn)知相互關(guān)聯(lián)起來(lái)形成完整系統(tǒng)的知識(shí)體系,這也是日漸龐大的萬(wàn)維網(wǎng)的必然要求?! ≌缒憧吹降哪菢?,我們將萬(wàn)維網(wǎng)應(yīng)用程序的知識(shí)體系建立在三層架構(gòu)的基礎(chǔ)之上,在這個(gè)最基本的認(rèn)知和知識(shí)體系下不斷將知識(shí)延伸?! ∥也幌朐谶@里對(duì)什么是“完整系統(tǒng)的知識(shí)體系”進(jìn)行過(guò)多的介紹,因?yàn)槊總€(gè)人都理解它的字面意思,也理解它對(duì)每個(gè)開(kāi)發(fā)者都是夢(mèng)寐以求的,而關(guān)鍵是“完整系統(tǒng)的知識(shí)體系”的內(nèi)容是什么。除了應(yīng)該牢記這篇序言前面所介紹的萬(wàn)維網(wǎng)的技術(shù)史和萬(wàn)維網(wǎng)的基本知識(shí)結(jié)構(gòu),我也不想在前言中再多費(fèi)筆墨,因?yàn)橹R(shí)體系往往融入在各個(gè)知識(shí)點(diǎn)的相互結(jié)合中,不是一兩頁(yè)紙所能闡述清楚的?! ∪绻苡脦醉?yè)紙闡述清楚那就好了,不過(guò)話又說(shuō)過(guò)來(lái),一個(gè)用幾頁(yè)紙就能闡述清楚的“完整系統(tǒng)的知識(shí)體系”能可信嗎?  “完整系統(tǒng)的知識(shí)體系”包含了某個(gè)領(lǐng)域內(nèi)的完整內(nèi)容,不可能使用幾頁(yè)紙就能闡述清楚,而且領(lǐng)域越廣,所需要的筆墨就越多。例如,針對(duì)JSP,你可能需要用一本書來(lái)介紹,但對(duì)整個(gè)萬(wàn)維網(wǎng)應(yīng)用程序來(lái)說(shuō),你可能需要10本書甚至更多,我想每一個(gè)用戶都不難理解?! ≌l(shuí)將從這套書中受益開(kāi)發(fā)者、雇主、主講教師、學(xué)員都將從“開(kāi)發(fā)王”系列圖書中受益  開(kāi)發(fā)者是理所應(yīng)當(dāng)?shù)淖畲笫芤嬲摺 『翢o(wú)疑問(wèn),“開(kāi)發(fā)王”這套書是最終面向開(kāi)發(fā)者的,不但初學(xué)者,而且資深的開(kāi)發(fā)者也應(yīng)視它為必讀之作。在正確的認(rèn)知和完整、系統(tǒng)的知識(shí)體系面前,初學(xué)者和資深的開(kāi)發(fā)者處于同一起跑線上?!  俺鯇W(xué)者”能夠在開(kāi)發(fā)伊始就將技術(shù)建立在正確的認(rèn)知的基礎(chǔ)上,并且循序漸進(jìn),獲得完整系統(tǒng)的知識(shí)體系,這不但可以加速學(xué)習(xí)進(jìn)程,而且也是正確開(kāi)發(fā)的保證。  “資深的開(kāi)發(fā)者”雖然在實(shí)踐過(guò)程中獲得了很多好的實(shí)戰(zhàn)經(jīng)驗(yàn),但未必能夠運(yùn)用自如,這就是過(guò)去混亂不堪的知識(shí)體系和錯(cuò)誤的認(rèn)知共同作用的結(jié)果。如果不砍掉錯(cuò)誤和混亂,必然使自己的開(kāi)發(fā)認(rèn)識(shí)躊躇不前,最終走火入魔也未必不可能?! ‘?dāng)然,如果你有錯(cuò)誤的認(rèn)知,并且編出了錯(cuò)誤的應(yīng)用程序,那么就要小心了,應(yīng)該盡快通讀本書,趁雇主還未發(fā)現(xiàn)之前將漏洞補(bǔ)上?! 」椭魇亲罱K的受益人  雇主首先要關(guān)心的是如何在有效的投入情況下獲得較高的產(chǎn)出,也就是如何實(shí)現(xiàn)經(jīng)濟(jì)產(chǎn)出?! ≌_的軟件開(kāi)發(fā)來(lái)源于正確的認(rèn)知和完整系統(tǒng)的知識(shí)體系,這是毫無(wú)疑問(wèn)的。  正如你前面看到的,正確的認(rèn)知是編寫正確程序的關(guān)鍵,試想一個(gè)沒(méi)有實(shí)現(xiàn)序列化的JavaBeans將會(huì)帶來(lái)什么樣的危害?假設(shè)是一個(gè)銀行結(jié)算程序,資金(一個(gè)JavaBeans)匯出去了,但是卻因?yàn)橹虚g運(yùn)算出了故障而死機(jī),這個(gè)時(shí)候自動(dòng)保護(hù)裝置本應(yīng)該能夠恢復(fù)JavaBeans的狀態(tài)(也就是你的資金),但卻因?yàn)樽玖拥腻e(cuò)誤認(rèn)知進(jìn)而編寫出拙劣的程序,這一程序從而又導(dǎo)致這一恢復(fù)過(guò)程無(wú)法完成。對(duì)一個(gè)企業(yè)而言,這是致命的一擊—連自己的基礎(chǔ)設(shè)施都無(wú)法保證,企業(yè)信譽(yù)便蕩然無(wú)存?! ?shí)現(xiàn)經(jīng)濟(jì)產(chǎn)出的另一個(gè)要關(guān)心的事情是如何實(shí)現(xiàn)團(tuán)隊(duì)協(xié)作,這個(gè)時(shí)候正確的認(rèn)知和完整系統(tǒng)的知識(shí)體系顯得尤為重要。  現(xiàn)在,拋開(kāi)那些點(diǎn)點(diǎn)滴滴的零星錯(cuò)誤(雖然它們也很重要),讓我們眼光看得更長(zhǎng)更遠(yuǎn),即使是組織行為學(xué)的經(jīng)典理論也認(rèn)為僅僅是團(tuán)隊(duì)精神和團(tuán)隊(duì)意識(shí)并不足以成功實(shí)現(xiàn)團(tuán)隊(duì)協(xié)作,共同的技術(shù)知識(shí)和技術(shù)能力才是團(tuán)隊(duì)合作得以有效進(jìn)行的基礎(chǔ)?! 」餐募夹g(shù)知識(shí)和技術(shù)能力不但能夠很容易使成員清楚要達(dá)到的目標(biāo),而且相互間也清楚自己應(yīng)承擔(dān)的責(zé)任和應(yīng)該實(shí)現(xiàn)的功能。因此,一個(gè)完整、系統(tǒng)的知識(shí)體系對(duì)于團(tuán)隊(duì)合作而言便顯得極為重要。僅僅靠熱情,員工們能夠合作得像一個(gè)團(tuán)隊(duì)嗎?恐怕員工們自己也說(shuō)服不了自己,更何況位于組織核心的人力資源主管和信息技術(shù)主管呢?  人力資源主管和信息技術(shù)主管作為雇主的代表應(yīng)該將此書作為實(shí)現(xiàn)團(tuán)隊(duì)合作的技術(shù)知識(shí)和技術(shù)能力評(píng)估的“客觀指標(biāo)”。  人力資源主管和信息技術(shù)主管作為雇主的代表,同時(shí)也是這一知識(shí)體系的受益者。這一知識(shí)體系首先使你可以認(rèn)識(shí)到一個(gè)合格的開(kāi)發(fā)者所應(yīng)具備的基本知識(shí)技能?! 〕酥猓@套圖書包含了大量的測(cè)試題,可以幫助你從客觀的技術(shù)層面上選擇那些適用于本企業(yè)的開(kāi)發(fā)人員,以及用于員工考評(píng)和員工的再培訓(xùn)。并且這些測(cè)試題可以提高你的工作效率,從而為你和你的雇主節(jié)省成本?! W(xué)員應(yīng)該擁有這套書  雖然學(xué)員大多數(shù)選擇教材都還是為了應(yīng)付考試,但是不管是用于考試還是用于以后從業(yè)于因特網(wǎng),“開(kāi)發(fā)王”系列圖書是建立在正確的認(rèn)知和完整系統(tǒng)的知識(shí)體系之上的,這符合最一般的邏輯要求,有利于記憶和總結(jié),它會(huì)加快你的學(xué)習(xí)進(jìn)程,提高效率,節(jié)省時(shí)間。  雖然教材并非由學(xué)員自己來(lái)選擇,但任課老師一般都會(huì)非常尊重學(xué)員的建議,你應(yīng)告訴他你看到的真實(shí)的東西,以及你想到的東西,如果你這樣做了,就理應(yīng)得到贊許。  如果你發(fā)現(xiàn)了教材中的一些錯(cuò)誤,就應(yīng)該及時(shí)提醒任課教師,并且也應(yīng)該和同學(xué)切磋這個(gè)認(rèn)識(shí)是否正確,這個(gè)過(guò)程也是培養(yǎng)團(tuán)隊(duì)協(xié)作精神的過(guò)程。  “開(kāi)發(fā)王”系列圖書不但適合作為教材,也適合作為自學(xué)用書,在3個(gè)最基本問(wèn)題的指引下,學(xué)員也可以迅速有效地掌握萬(wàn)維網(wǎng)應(yīng)用程序開(kāi)發(fā)的知識(shí)。并且,書中大量的范例可以用于實(shí)際應(yīng)用程序開(kāi)發(fā)和設(shè)計(jì)中,每章后面的習(xí)題可以用于鞏固所學(xué)的知識(shí)?! ∪握n教師應(yīng)該使用這套書作為  教材以贏得學(xué)員的信任  主講網(wǎng)絡(luò)開(kāi)發(fā)的任課教師應(yīng)該成為正確認(rèn)知和完整系統(tǒng)的萬(wàn)維網(wǎng)知識(shí)體系的傳播者,正確的認(rèn)知和完整系統(tǒng)的萬(wàn)維網(wǎng)知識(shí)體系是相對(duì)于錯(cuò)誤認(rèn)知和混亂的知識(shí)而言的,在教學(xué)上,混亂的知識(shí)往往與肢解式的授課方式緊密連在一起?! ≈馐浇虒W(xué)往往是要么盲目地對(duì)某個(gè)語(yǔ)法進(jìn)行割裂式的使用方法講解,要么沉迷于對(duì)某個(gè)具體范例的長(zhǎng)篇累牘的分析之中。這種教學(xué)雖然容易讓學(xué)員沉醉于暫時(shí)的范例成果而“沾沾自喜”,但也往往讓他們迷失在這種“沾沾自喜”當(dāng)中,從而忘記軟件開(kāi)發(fā)的基本事實(shí)?! ∵@樣做的教學(xué)目標(biāo)看似明確,其實(shí)貽害無(wú)窮?!  扳叶〗馀#灰?jiàn)全?!笔橇鱾鲙浊甑睦瞎适拢v述了庖丁最初解牛時(shí)“所見(jiàn)無(wú)非全牛者”,而其“所好者道也,進(jìn)乎技矣”,這個(gè)“道”就是指要完整系統(tǒng)地把握一件事物,然后再勤加練習(xí),到“三年之后,未嘗見(jiàn)全牛也”?! ∪握n教師應(yīng)該將學(xué)員從這種“沾沾自喜”的懸崖邊緣拉回來(lái),授以庖丁之“道”,勉勵(lì)其自學(xué)以成庖丁之“技”,并最終集萬(wàn)維網(wǎng)應(yīng)用程序開(kāi)發(fā)之大成?! ∪握n教師要做到這一點(diǎn),一個(gè)重要的方式就是將過(guò)去肢解式的授課永遠(yuǎn)忘掉,那些肢解式的教材也理應(yīng)被扔到垃圾堆中?!  伴_(kāi)發(fā)王”這套書能夠幫助你完成你的教學(xué)目標(biāo),這套書的一個(gè)編寫特點(diǎn)就是其完整系統(tǒng)的知識(shí)體系,它能夠幫助學(xué)員掌握“道”之本質(zhì)?! 榱耸菇虒W(xué)能夠更順利地展開(kāi),并便于學(xué)生課后自學(xué),我們?cè)诿空碌那懊鎸?duì)本章內(nèi)容做了總結(jié),而且,每章的后面提供了習(xí)題和小結(jié)?! ∫詧?jiān)實(shí)恒定的基石應(yīng)對(duì)變化  對(duì)開(kāi)發(fā)者、雇主、主講教師、學(xué)員來(lái)說(shuō),市場(chǎng)的不斷發(fā)展變化是不可避免的,市場(chǎng)的變化進(jìn)而催生技術(shù)的不斷發(fā)展變化,這些變化對(duì)每一個(gè)卷入IT產(chǎn)業(yè)的組織和人員都提出了挑戰(zhàn)?! ∑髽I(yè)如何才能迅速響應(yīng)市場(chǎng)變化帶來(lái)的挑戰(zhàn)呢?開(kāi)發(fā)者如何才能迅速應(yīng)對(duì)企業(yè)的新需求呢?在面對(duì)新技術(shù)時(shí),如何將教學(xué)工作與新技術(shù)迅速銜接起來(lái)呢?  為了保持競(jìng)爭(zhēng)優(yōu)勢(shì)并更迅速地響應(yīng)市場(chǎng)變化,人員的技術(shù)知識(shí)和企業(yè)的業(yè)務(wù)必須保持流程的一致性,以實(shí)現(xiàn)更大的柔性和擴(kuò)展性,而這一切必須建立在一個(gè)“堅(jiān)實(shí)恒定”的基石之上才能說(shuō)有可靠的技術(shù)保證。  在“開(kāi)發(fā)王”這套技術(shù)叢書中,每一個(gè)參與者都將看到這塊“堅(jiān)實(shí)恒定”的基石,這個(gè)基石被稱為“完整系統(tǒng)的萬(wàn)維網(wǎng)知識(shí)體系”,在這個(gè)基石之上實(shí)現(xiàn)的柔性和擴(kuò)展性必然是可持久、可度量的,且可以應(yīng)對(duì)迅速的變化?! ⊥暾到y(tǒng)的萬(wàn)維網(wǎng)知識(shí)體系針對(duì)變化提供了更多機(jī)會(huì),無(wú)論變化多么復(fù)雜、多么迅速,“開(kāi)發(fā)王”都能夠幫助簡(jiǎn)化它們,從而輕松獲取競(jìng)爭(zhēng)優(yōu)勢(shì)?! 拇耍兓辉倭钊丝鄲?,相反它為你帶來(lái)一系列機(jī)遇:靈活性、業(yè)務(wù)一致性,當(dāng)然,還有競(jìng)爭(zhēng)優(yōu)勢(shì),不管是對(duì)個(gè)人,還是對(duì)組織……  作者的話  從開(kāi)始準(zhǔn)備寫作到本套書的出版,前后經(jīng)歷了近6年的時(shí)間,也經(jīng)歷了多個(gè)軟件版本變遷,以及萬(wàn)維網(wǎng)的沉沉浮浮,在這緊張的幾十個(gè)月后,本套書終于得以問(wèn)世。我希望能通過(guò)本書給萬(wàn)維網(wǎng)應(yīng)用程序開(kāi)發(fā)者和設(shè)計(jì)者帶來(lái)無(wú)限廣闊的、基本的、正確認(rèn)知和完整系統(tǒng)的網(wǎng)絡(luò)開(kāi)發(fā)知識(shí)?! ”緯趯懽鬟^(guò)程中參考了“大量”的參考資料,包括數(shù)十份標(biāo)準(zhǔn)和規(guī)范,也包括作者多年創(chuàng)作和開(kāi)發(fā)體驗(yàn)的結(jié)晶,所有范例也都經(jīng)過(guò)了嚴(yán)格的測(cè)試,從而確保了內(nèi)容準(zhǔn)確翔實(shí)?! ∥恼轮刑岢龅娜魏斡^點(diǎn)和主張都必須經(jīng)得起事實(shí)的考驗(yàn)?! ‰m然如此,錯(cuò)誤和不足也在所難免,懇請(qǐng)讀者不吝賜教和指正,我們一定會(huì)全力改進(jìn),在以后的工作中加強(qiáng)和提高?! ”緯趧?chuàng)作和出版的過(guò)程中得到了電子工業(yè)出版社易飛思公司的大力支持,感謝他們?cè)趫D書的設(shè)計(jì)及內(nèi)容審定方面所給予的指導(dǎo),同時(shí)也感謝為本書的出版而努力工作的出版社其他工作人員?! ≡鯓娱喿x這套書  這套書的知識(shí)結(jié)構(gòu)(包括范例),前后銜接的邏輯非常緊密,所以,這里特別提示用戶不要試圖跳躍章節(jié)閱讀,這將恐怕使你欲速而不達(dá)?! ”3峙c作者溝通  有時(shí)與作者溝通是十分必要的,用戶可以從作者處獲取知識(shí)的更新,或者勘誤(如果書中有的話),同時(shí)也可以讓作者了解到你的想法。

內(nèi)容概要

本書完全按照HTML 4.01規(guī)范要求編寫,詳細(xì)介紹如何使用HTML語(yǔ)言創(chuàng)作網(wǎng)頁(yè),并且介紹如何將網(wǎng)頁(yè)聚合起來(lái)架設(shè)網(wǎng)站。HTML語(yǔ)言有嚴(yán)格的邏輯,是完整系統(tǒng)的互聯(lián)網(wǎng)知識(shí)體系的一部分。本書亦包含XHTML 1.0規(guī)范的全部?jī)?nèi)容?! ”緯宰钚碌募记?,教讀者輕松掌握HTML語(yǔ)言;并按照下面的邏輯認(rèn)知順序進(jìn)行講授:什么是HTML語(yǔ)言(what),為什么學(xué)HTML語(yǔ)言(why),以及怎樣使用HTML語(yǔ)言(how)。這樣是為了先幫助用戶建立首要的、基礎(chǔ)的正確認(rèn)知,而后以深入淺出的實(shí)例來(lái)說(shuō)明如何利用HTML語(yǔ)言制作網(wǎng)頁(yè)(即通過(guò)一個(gè)完整的網(wǎng)上餐廳案例,循序漸進(jìn)地指導(dǎo)讀者怎樣將HTML網(wǎng)頁(yè)集合起來(lái)架設(shè)網(wǎng)站,并通過(guò)這一范例了解上載、更新和管理網(wǎng)站的技能)?! ”緯m合網(wǎng)絡(luò)開(kāi)發(fā)工程師、網(wǎng)頁(yè)設(shè)計(jì)師,以及學(xué)校的相關(guān)任課教師和學(xué)員。網(wǎng)頁(yè)設(shè)計(jì)師,可以從本書學(xué)習(xí)到更為高級(jí)的網(wǎng)頁(yè)設(shè)計(jì)應(yīng)用技巧,進(jìn)而加強(qiáng)功力;程序開(kāi)發(fā)者,也可以從本書學(xué)習(xí)到最為正統(tǒng)的HTML知識(shí),從而避免錯(cuò)誤認(rèn)知和混亂。

作者簡(jiǎn)介

張亞飛是現(xiàn)今活躍在信息技術(shù)領(lǐng)域的卓越作者。正如讀者過(guò)去所看到的那樣,他建立了一整套基于時(shí)間軸的完整系統(tǒng)的Flash知識(shí)體系,這個(gè)知識(shí)體系已經(jīng)使很多Flash開(kāi)發(fā)者和設(shè)計(jì)者受益。今天,他從紛繁復(fù)雜的亂象中抽象出真知,構(gòu)建了一整套完整系統(tǒng)的萬(wàn)維網(wǎng)應(yīng)用程序開(kāi)發(fā)的知識(shí)體系

書籍目錄

第1篇  HTML基礎(chǔ)入門篇 第1章  建立首要的、基礎(chǔ)的正確認(rèn)知      1.1  Internet和萬(wàn)維網(wǎng)       1.1.1  什么是WWW(萬(wàn)維網(wǎng))       1.1.2  W3C是什么      1.2  網(wǎng)頁(yè)、瀏覽器、網(wǎng)站和網(wǎng)絡(luò)服務(wù)器       1.2.1  網(wǎng)頁(yè)和瀏覽器       1.2.2  不可不知的瀏覽器發(fā)展史       1.2.3  瀏覽網(wǎng)頁(yè)       1.2.4  網(wǎng)站和網(wǎng)絡(luò)服務(wù)器      1.3  了解HTML語(yǔ)言       1.3.1  關(guān)于HTML和HTML編輯器       1.3.2  創(chuàng)建第一個(gè)網(wǎng)頁(yè)       1.3.3  查看網(wǎng)頁(yè)的源文件      1.4  HTML 4.0的特點(diǎn)       1.4.1  國(guó)際化       1.4.2  可訪問(wèn)性       1.4.3  表格       1.4.4  混合文檔       1.4.5  樣式表       1.4.6  腳本       1.4.7  打印      1.5  鞏固與自測(cè)     第2章  HTML文檔的基本結(jié)構(gòu)      2.1  使用Dreamweaver創(chuàng)建第一個(gè)網(wǎng)頁(yè)       2.1.1  Dreamweaver安裝和配置向?qū)?      2.1.2  使用Dreamweaver創(chuàng)建網(wǎng)頁(yè)的基本步驟       2.1.3  使用Dreamweaver的基本知識(shí)      2.2  HTML文檔的基本結(jié)構(gòu)       2.2.1  了解SGML和HTML的關(guān)系       2.2.2  HTML簡(jiǎn)要的歷史和為何要使用HTML       2.2.3  HTML 4.01的版本和文檔類型聲明       2.2.4  標(biāo)簽對(duì)和屬性       2.2.5  標(biāo)簽對(duì)       2.2.6  標(biāo)簽對(duì)      2.3  鞏固與自測(cè)     第3章  HTML文檔的編寫規(guī)范      3.1  使用標(biāo)簽、元素和屬性       3.1.1  標(biāo)簽       3.1.2  元素       3.1.3  屬性的定義       3.1.4  屬性值的定義       3.1.5  元素和屬性的大小寫規(guī)范       3.2  字符引用       3.2.1  字符數(shù)字引用       3.2.2  字符實(shí)體引用      3.3  使用注釋      3.4  關(guān)于空白和空白字符       3.4.1  關(guān)于斷行符       3.4.2  空白字符      3.5  基本HTML數(shù)據(jù)型式       3.5.1  CDATA數(shù)據(jù)類型       3.5.2  ID和NAME使用的數(shù)據(jù)類型       3.5.3  IDREF和IDREFS使用的數(shù)據(jù)類型       3.5.4  NUMBER數(shù)據(jù)類型       3.5.5  文本字符串       3.5.6  使用URI       3.5.7  使用顏色       3.5.8  使用長(zhǎng)度       3.5.9  內(nèi)容類型(MIME類型)       3.5.10  語(yǔ)言代碼       3.5.11  字符編碼       3.5.12  單字符       3.5.13  日期和時(shí)間       3.5.14  鏈接類型       3.5.15  介質(zhì)描述符       3.5.16  腳本數(shù)據(jù)       3.5.17  樣式表數(shù)據(jù)       3.5.18  框架目標(biāo)名       3.6  鞏固與自測(cè)    第2篇  HTML詳細(xì)學(xué)習(xí)篇 第4章  HTML文檔的頭部定義      4.1  定義標(biāo)題(title元素)      4.2  怎樣定義元數(shù)據(jù)       4.2.1  定義元數(shù)據(jù)關(guān)鍵字       4.2.2  元數(shù)據(jù)的語(yǔ)言信息       4.2.3  元數(shù)據(jù)的其他定義方法      4.3  用于搜索引擎的元數(shù)據(jù)       4.3.1  定義編輯工具       4.3.2  定義版權(quán)信息       4.3.3  定義關(guān)鍵字       4.3.4  定義概要描述       4.3.5  定義設(shè)計(jì)者       4.3.6  定義創(chuàng)作日期       4.3.7  定義搜索引擎搜索方式      4.4  用于HTTP消息報(bào)頭的元數(shù)據(jù)(屬性http-equiv)       4.4.1  設(shè)置網(wǎng)頁(yè)內(nèi)容類型和字符集       4.4.2  設(shè)置網(wǎng)頁(yè)所使用的語(yǔ)言       4.4.3  設(shè)置網(wǎng)頁(yè)定時(shí)跳轉(zhuǎn)       4.4.4  設(shè)置網(wǎng)頁(yè)禁用緩存       4.4.5  設(shè)置網(wǎng)頁(yè)到期       4.4.6  設(shè)置網(wǎng)頁(yè)Cookie存活時(shí)間       4.4.7  設(shè)置網(wǎng)頁(yè)框架目標(biāo)       4.4.8  設(shè)置網(wǎng)頁(yè)轉(zhuǎn)場(chǎng)效果       4.4.9  設(shè)置網(wǎng)頁(yè)分級(jí)      4.5  元數(shù)據(jù)綱要和元數(shù)據(jù)架構(gòu)       4.5.1  使用元數(shù)據(jù)綱要(profile屬性)       4.5.2  使用元數(shù)據(jù)架構(gòu)(scheme屬性)      4.6  鞏固與自測(cè)     第5章  文字與段落      5.1  結(jié)構(gòu)化的文本       5.1.1  用于強(qiáng)調(diào)的短語(yǔ)元素(em元素、strong元素、cite元素)       5.1.2  用于縮寫的短語(yǔ)元素(abbr元素、acronym元素)       5.1.3  其他的短語(yǔ)元素(dfn、code、samp、kbd、var)       5.1.4  引用(blockquote元素、q元素)       5.1.5  下標(biāo)和上標(biāo)(sub元素、sup元素)      5.2  行和段落       5.2.1  段落(p元素)       5.2.2  控制換行(br元素)       5.2.3  連字符       5.2.4  預(yù)格式化文本(pre元素)       5.2.5  段落的視覺(jué)呈現(xiàn)      5.3  標(biāo)題字體(h#元素)      5.4  標(biāo)記文檔改變:ins和del元素      5.5  基本文字格式(tt、i、b、big、small、strike、s、u)      5.6  字體修改(font、basefont元素)       5.6.1  改變字體大?。╯ize屬性)       5.6.2  改變文本顏色(color屬性)       5.6.3  改變字體(face屬性)      5.7  加入水平分割線(hr元素)       5.7.1  分隔線寬度和高度(width屬性、size屬性)       5.7.2  分隔線對(duì)齊(align屬性)       5.7.3  分隔線顏色(color屬性)       5.7.4  分隔線陰影(noshade屬性)      5.8  鞏固與自測(cè)     第6章  建立列表      6.1  創(chuàng)建列表       6.1.1  有序列表(ol元素)       6.1.2  無(wú)序列表(ul元素)       6.1.3  解說(shuō)列表(dl元素)       6.1.4  嵌套列表       6.1.5  列表的緊湊顯示(compact 屬性)      6.2  定制列表前的符號(hào)       6.2.1  定制無(wú)序列表符號(hào)(type屬性)       6.2.2  定制有序列表中的序號(hào)(type屬性)       6.2.3  定制有序列表中的列表項(xiàng)的起始數(shù)(start屬性)       6.2.4  定制有序列表中的列表項(xiàng)序號(hào)的數(shù)值(value屬性)      6.3  使用dir和menu元素來(lái)定義列表      6.4  鞏固與自測(cè)     第7章  建立超鏈接      7.1  鏈接的基礎(chǔ)知識(shí)      7.2  了解文檔位置和路徑       7.2.1  絕對(duì)路徑       7.2.2  文檔相對(duì)路徑       7.2.3  區(qū)分URI、URL和URN       7.2.4  區(qū)分本地鏈接和服務(wù)器鏈接      7.3  使用a元素定義鏈接       7.3.1  定義鏈接的目標(biāo)URI(href屬性)       7.3.2  定義鏈接的目標(biāo)窗口(target屬性)       7.3.3  定義鏈接的提示信息(title屬性)       7.3.4  國(guó)際化和鏈接(hreflang屬性和charset屬性)       7.3.5  鏈接到其他網(wǎng)站       7.3.6  鏈接到您的網(wǎng)站中的其他網(wǎng)頁(yè)       7.3.7  鏈接到電子郵件地址       7.3.8  鏈接到任何類型的文件以供下載       7.3.9  創(chuàng)建空鏈接和腳本鏈接       7.3.10  鏈接的創(chuàng)建與管理        7.4  定義書簽和鏈接到書簽       7.4.1  定義命名錨點(diǎn)(id屬性和name屬性)       7.4.2  鏈接到命名錨點(diǎn)      7.5  文檔關(guān)系鏈接(link元素)       7.5.1  定義關(guān)系鏈接地址(href屬性)       7.5.2  向前鏈接或者反轉(zhuǎn)鏈接(rel和rev屬性)       7.5.3  鏈接到外部樣式表       7.5.4  使用link元素說(shuō)明文檔集合關(guān)系       7.5.5  鏈接到文檔的替代版本       7.5.6  鏈接到文檔的版權(quán)聲明       7.5.7  鏈接到文檔的幫助       7.5.8  鏈接到文檔中的書簽      7.6  link元素和搜索引擎      7.7  定義基準(zhǔn)地址(base元素)       7.7.1  使用基準(zhǔn)URI       7.7.2  用戶瀏覽器如何決定相對(duì)URI       7.7.3  定義基準(zhǔn)鏈接目標(biāo)窗口(target屬性)      7.8  鞏固與自測(cè)     第8章  鏈入圖片和混排圖文      8.1  了解圖片       8.1.1  了解GIF格式圖片       8.1.2  了解JPEG格式圖片       8.1.3  了解PNG格式圖片       8.1.4  創(chuàng)建圖片       8.2  鏈入圖片(img元素)        8.2.1  圖片的源地址(src屬性)       8.2.2  圖片的幅面大小(width屬性和height屬性)       8.2.3  圖片的說(shuō)明(alt屬性、longdesc屬性)       8.2.4  圖片的邊框(border屬性)       8.2.5  圖片的占位符       8.2.6  圖片和文字的對(duì)齊(align屬性)       8.2.7  圖片的水平間距和垂直間距(hspace屬性和vspace屬性)      8.3  為圖片建立超鏈接(img元素)      8.4  創(chuàng)建圖像映射       8.4.1  了解熱點(diǎn)和圖像映射       8.4.2  關(guān)于客戶端圖像映射和服務(wù)端圖像映射       8.4.3  創(chuàng)建圖像映射(map元素、area元素)       8.4.4  設(shè)置熱點(diǎn)默認(rèn)鏈接       8.4.5  創(chuàng)建服務(wù)端圖像映射       8.4.6  客戶端圖像映射和服務(wù)端圖像映射混合      8.5  飄浮對(duì)象和圖文混排       8.5.1  飄浮對(duì)象的定義       8.5.2  飄浮對(duì)象周圍的文本的流動(dòng)      8.6  鞏固與自測(cè)     第9章  使用表格      9.1  了解表格       9.1.1  表格用來(lái)做什么       9.1.2  了解行、列和單元格      9.2  創(chuàng)建表格       9.2.1  創(chuàng)建表格的基本語(yǔ)法(table元素、tr元素、th元素、td元素)       9.2.2  設(shè)置表格邊框線條寬度(border屬性)       9.2.3  設(shè)置表格寬度(width屬性)       9.2.4  表格在頁(yè)面中的對(duì)齊(align屬性)       9.2.5  表格的描述(summary屬性)       9.2.6  表格的背景色(bgcolor屬性)       9.2.7  表格中單元格的間距和襯距(cellspacing屬性、cellpadding屬性)      9.3  表格的標(biāo)題(caption元素)      9.4  設(shè)置單元格(th元素、td元素)       9.4.1  使用th元素定義單元格       9.4.2  跨多行、多列的單元格       9.4.3  單元格的背景色彩       9.4.4  單元格的寬度和高度      9.5  表格的按行分組顯示(thead元素、tfoot元素、tbody元素)      9.6  表格的按列分組顯示(colgroup元素、col元素)       9.6.1  創(chuàng)建列分組(colgroup元素)       9.6.2  使用span屬性指定列分組       9.6.3  為列分組定義列寬(width屬性)      9.7  表格邊框和分隔線的呈現(xiàn)(frame屬性、rules屬性)       9.7.1  表格中邊框線的顯示(frame屬性)       9.7.2  表格中分隔線的顯示(rules屬性)      9.8  單元格內(nèi)內(nèi)容的對(duì)齊       9.8.1  單元格對(duì)齊屬性       9.8.2  對(duì)齊的繼承       9.8.3  軸線(axis屬性)      9.9  鞏固與自測(cè)     第10章  建立HTML表單      10.1  認(rèn)識(shí)和建立HTML表單       10.1.1  建立表單(form元素)       10.1.2  了解控件       10.1.3  控件類型      10.2  使用input元素創(chuàng)建表單控件       10.2.1  創(chuàng)建文本框和密碼文本框       10.2.2  創(chuàng)建復(fù)選框       10.2.3  創(chuàng)建單選按鈕       10.2.4  創(chuàng)建提交按鈕       10.2.5  創(chuàng)建重置按鈕       10.2.6  創(chuàng)建圖形按鈕       10.2.7  創(chuàng)建普通按鈕       10.2.8  創(chuàng)建文件選擇框       10.2.9  創(chuàng)建隱藏控件      10.3  使用button元素創(chuàng)建按鈕      10.4  組合框控件和列表框控件       10.4.1  創(chuàng)建組合框控件和列表框控件       10.4.2  成組選項(xiàng)       10.4.3  關(guān)于預(yù)先選定選項(xiàng)      10.5  創(chuàng)建多行文本框(textarea元素)      10.6  使用isindex元素創(chuàng)建文本框      10.7  為表單控件定義標(biāo)簽(label元素)      10.8  為表單添加結(jié)構(gòu)(fieldset元素和legend元素)      10.9  將焦點(diǎn)移到某個(gè)元素上       10.9.1  使用【Tab】鍵導(dǎo)航       10.9.2  使用熱鍵導(dǎo)航       10.10  設(shè)置禁用控件和設(shè)置只讀控件       10.10.1  設(shè)置禁止控件       10.10.2  設(shè)置只讀控件      10.11  表單提交       10.11.1  表單提交的方法       10.11.2  結(jié)果良好的控件       10.11.3  瀏覽器怎樣發(fā)送表單數(shù)據(jù)       10.11.4  表單內(nèi)容的類型      10.12  鞏固與自測(cè)     第11章  使用框架集結(jié)構(gòu)      11.1  框架集的基本語(yǔ)法       11.1.1  框架文檔聲明       11.1.2  縱向排列框架和橫向排列框架(rows屬性、cols屬性)       11.1.3  嵌套框架集       11.1.4  不顯示框架時(shí)(noframes元素)      11.2  框架窗口的內(nèi)容和外觀(frame元素)       11.2.1  設(shè)置框架的初始內(nèi)容       11.2.2  框架窗口邊框線的設(shè)置       11.2.3  頁(yè)面空白       11.2.4  滾動(dòng)條設(shè)置       11.2.5  改變框架窗口大小       11.2.6  框架的描述(title屬性、longdesc屬性)      11.3  使用目標(biāo)框架(name屬性和target屬性)       11.3.1  設(shè)置鏈接默認(rèn)的目標(biāo)       11.3.2  目標(biāo)的優(yōu)先級(jí)       11.3.3  名稱和框架標(biāo)識(shí)      11.4  內(nèi)聯(lián)框架(iframe元素)      11.5  鞏固與自測(cè)     第12章  鏈入對(duì)象和其他多媒體元素      12.1  使用Java Applet(applet元素)       12.1.1  安裝Java運(yùn)行時(shí)環(huán)境       12.1.2  準(zhǔn)備Java Applet應(yīng)用程序       12.1.3  鏈入Java Applet應(yīng)用程序      12.2  使用object元素鏈入對(duì)象       12.2.1  為何要使用object元素       12.2.2  了解對(duì)象、數(shù)據(jù)和實(shí)現(xiàn)       12.2.3  使用通用的鏈入方法(object元素)       12.2.4  將object元素置于head元素內(nèi)       12.2.5  渲染對(duì)象的規(guī)則       12.2.6  內(nèi)聯(lián)數(shù)據(jù)vs外部數(shù)據(jù)       12.2.7  對(duì)象初始化(param元素)       12.2.8  對(duì)象的全局命名機(jī)制       12.2.9  對(duì)象的聲明和實(shí)例化      12.3  使用object元素鏈入對(duì)象實(shí)踐       12.3.1  鏈入Java Applet       12.3.2  鏈入Flash影片(SWF)       12.3.3  鏈入QuickTime影片(MOV)       12.3.4  鏈入AVI、MPEG影片       12.3.5  鏈入Real影片(RM和RMVB)       12.3.6  鏈入MP3、WMA音頻       12.3.7  鏈入Shockwave影片(DIR)       12.3.8  關(guān)于嵌入的HTML文檔      12.4  鏈入對(duì)象的呈現(xiàn)       12.4.1  對(duì)象的寬度和高度       12.4.2  對(duì)象的水平間距和垂直間距(hspace屬性和vspace屬性)       12.4.3  對(duì)象的邊框       12.4.4  對(duì)象的對(duì)齊       12.4.5  定義替換文本      12.5  使用object元素創(chuàng)建圖像映射       12.5.1  使用a元素定義熱點(diǎn)       12.5.2  為內(nèi)嵌元素定義熱點(diǎn)      12.6  鞏固與自測(cè)     第13章  使用腳本語(yǔ)言      13.1  了解腳本語(yǔ)言       13.1.1  客戶端腳本       13.1.2  服務(wù)端腳本      13.2  在HTML文檔中使用腳本代碼       13.2.1  使用script元素定義腳本代碼       13.2.2  在內(nèi)建事件中定義腳本       13.2.3  在超鏈接中定義腳本       13.2.4  定義腳本語(yǔ)言       13.2.5  動(dòng)態(tài)修改文檔       13.2.6  認(rèn)識(shí)DHTML      13.3  瀏覽器不支持腳本是應(yīng)注意的問(wèn)題       13.3.1  noscript元素       13.3.2  隱藏腳本數(shù)據(jù)      13.4  鞏固與自測(cè)    第3篇  網(wǎng)頁(yè)呈現(xiàn)進(jìn)階和網(wǎng)頁(yè)布局篇 第14章  HTML網(wǎng)頁(yè)呈現(xiàn)和網(wǎng)頁(yè)國(guó)際化      14.1  鍵入文字和使用字符編碼(charset屬性)       14.1.1  計(jì)算機(jī)文字字符編碼簡(jiǎn)介       14.1.2  使用HTML文檔字符集和選擇字符編碼       14.1.3  指定字符編碼       14.1.4  字符編碼的優(yōu)先級(jí)       14.1.5  在HTML文檔中使用字符引用      14.2  指定文檔內(nèi)容的語(yǔ)言(lang屬性)       14.2.1  語(yǔ)言代碼       14.2.2  語(yǔ)言代碼的繼承       14.2.3  瀏覽器對(duì)語(yǔ)言代碼的解釋      14.3  定義文本和表格的方向       14.3.1  Unicode規(guī)范定義的文本字符方向       14.3.2  Unicode雙向運(yùn)算法則       14.3.3  文本方向的繼承       14.3.4  使用bdo元素忽略雙向運(yùn)算法則       14.3.5  表格的方向      14.4  body元素用于全局呈現(xiàn)      14.5  網(wǎng)頁(yè)國(guó)際化和區(qū)域化的相關(guān)名詞      14.6  鞏固與自測(cè)     第15章  應(yīng)用樣式表呈現(xiàn)和布局      15.1  為什么要使用樣式表       15.1.1  過(guò)去的不足和樣式表的優(yōu)點(diǎn)       15.1.2  了解CSS(層疊樣式表)       15.1.3  HTML 4對(duì)樣式表技術(shù)的支持      15.2  添加CSS樣式到HTML網(wǎng)頁(yè)       15.2.1  設(shè)置默認(rèn)的樣式表語(yǔ)言       15.2.2  內(nèi)聯(lián)樣式       15.2.3  定義嵌入的樣式表(style元素)      15.3  使用外部樣式表       15.3.1 “可替換樣式表”和“偏好樣式表”       15.3.2  指定外部樣式表       15.3.3  樣式表的聲明語(yǔ)句       15.3.4  使用HTTP消息報(bào)頭鏈接到樣式表      15.4  層疊樣式表       15.4.1  基于介質(zhì)的層疊       15.4.2  繼承和層疊      15.5  隱藏樣式數(shù)據(jù)      15.6  了解塊級(jí)元素和行內(nèi)級(jí)元素       15.6.1  塊級(jí)元素和行內(nèi)級(jí)元素的不同       15.6.2  關(guān)于div元素和span元素       15.6.3  元素標(biāo)識(shí)(id屬性和class屬性)      15.7  鞏固與自測(cè)     第16章  應(yīng)用表格和框架布局      16.1  使用表格進(jìn)行網(wǎng)頁(yè)設(shè)計(jì)和布局的方法       16.1.1  了解布局模塊       16.1.2  表格布局的方法       16.2  在Dreamweaver中使用表格       16.2.1  在“布局”模式下使用表格進(jìn)行網(wǎng)頁(yè)布局       16.2.2  在“布局”模式下修改網(wǎng)頁(yè)布局       16.2.3  設(shè)置“布局”模式的首選參數(shù)       16.2.4  將內(nèi)容添加到布局單元格中      16.3  使用嵌套表格進(jìn)行網(wǎng)頁(yè)布局實(shí)務(wù)       16.3.1  通過(guò)嵌套表格實(shí)現(xiàn)布局       16.3.2  怎樣在文本周圍保留空白區(qū)域       16.3.3  怎樣設(shè)置復(fù)雜的邊緣飾紋       16.3.4  布局的最后潤(rùn)色      16.4  使用框架進(jìn)行網(wǎng)頁(yè)布局實(shí)務(wù)       16.4.1  框架和表格的關(guān)系       16.4.2  在Dreamweaver中使用框架      16.5  鞏固與自測(cè)    第4篇  創(chuàng)建和發(fā)布網(wǎng)站篇 第17章  網(wǎng)頁(yè)、網(wǎng)站和網(wǎng)絡(luò)應(yīng)用程序      17.1  安裝和設(shè)置網(wǎng)絡(luò)應(yīng)用程序的運(yùn)行環(huán)境       17.1.1  安裝IIS       17.1.2  安裝PWS       17.1.3  通過(guò)服務(wù)器請(qǐng)求網(wǎng)頁(yè)      17.2  Web服務(wù)器根目錄和虛擬目錄       17.2.1  Web服務(wù)器根目錄       17.2.2  虛擬目錄       17.2.3  啟用默認(rèn)文件      17.3  鞏固與自測(cè)     第18章  HTML完整應(yīng)用——?jiǎng)?chuàng)建網(wǎng)上餐廳網(wǎng)站      18.1  怎樣開(kāi)發(fā)網(wǎng)站      18.2  規(guī)劃設(shè)計(jì)網(wǎng)站       18.2.1  規(guī)劃網(wǎng)站的結(jié)構(gòu)       18.2.2  創(chuàng)建網(wǎng)站      18.3  風(fēng)格設(shè)計(jì)和頁(yè)面布局       18.3.1  注意事項(xiàng)       18.3.2  設(shè)計(jì)網(wǎng)頁(yè)布局       18.3.3  使用框架和表格實(shí)現(xiàn)布局       18.3.4  實(shí)現(xiàn)主頁(yè)默認(rèn)中間模塊      18.4  瀏覽產(chǎn)品       18.4.1  創(chuàng)建產(chǎn)品列表網(wǎng)頁(yè)       18.4.2  創(chuàng)建產(chǎn)品詳細(xì)信息      18.5  實(shí)現(xiàn)頂部廣告模塊     第19章  發(fā)布和管理網(wǎng)站      19.1  設(shè)置Dreamweaver站點(diǎn)       19.1.1  了解Dreamweaver站點(diǎn)       19.1.2  創(chuàng)建新的Dreamweaver站點(diǎn)       19.1.3  編輯Dreamweaver站點(diǎn)設(shè)置      19.2  整理站點(diǎn)       19.2.1  檢查無(wú)效鏈接       19.2.2  驗(yàn)證語(yǔ)法是否有誤      19.3  上傳和更新的管理       19.3.1  使用FTP服務(wù)器建立上傳網(wǎng)站空間       19.3.2  虛擬主機(jī)       19.3.3  管理和上傳網(wǎng)站       19.3.4  管理局域網(wǎng)站點(diǎn)    附錄A  從HTML 4到XHTML     A.1  XML的知識(shí)準(zhǔn)備        A.1.1  書寫XML文檔      A.1.2  有效的XML文檔      A.1.3  使用命名空間     A.2  XHTML語(yǔ)法入門      A.2.1  XHTML文檔結(jié)構(gòu)      A.2.2  XHTML文檔標(biāo)簽語(yǔ)法     A.3  XHTML和HTML 4的不同點(diǎn)      A.3.1  文檔必須格式良好      A.3.2  元素和屬性必須使用小寫字母      A.3.3  屬性定義必須嚴(yán)格符合要求      A.3.4  Script和Style元素      A.3.5  SGML禁止      A.3.6  使用lang和xml:lang屬性      A.3.7  使用字符編碼      A.3.8  包含id和name屬性的元素      A.3.9  使用isindex      A.3.10  使用邏輯屬性      A.3.11  文檔對(duì)象模型和XHTML      A.3.12  層疊樣式表和XHTML      A.3.13  不要在注釋內(nèi)容中使“—”      A.3.14  使用十六進(jìn)制數(shù)字引用      A.3.15  預(yù)定義屬性值必須區(qū)分大小寫     A.4  轉(zhuǎn)換HTML 4為XHTML    附錄B  HTML的字符實(shí)體引用和數(shù)字引用對(duì)照表    附錄C  用HTML 4.0制作文檔應(yīng)遵循的一般性原則    附錄D  使用微軟個(gè)人服務(wù)器PWS     D.1  安裝PWS     D.2  配置PWS      D.2.1  主屏      D.2.2  高級(jí)      D.2.3  其他    附錄E  關(guān)于網(wǎng)頁(yè)安全色    附錄F  HTML自然語(yǔ)言及語(yǔ)言代碼對(duì)照表    附錄G  常用字符集速查表    附錄H  HTML標(biāo)簽對(duì)的使用及元素可用屬性速查手冊(cè)    附錄I  HTML屬性及可附著元素速查手冊(cè)    附錄J  參考答案     第1章     第2章     第3章     第4章     第5章     第6章     第7章     第8章     第9章     第10章     第11章     第12章     第13章     第14章     第15章     第16章     第17章    附錄K  參考文獻(xiàn)及資料來(lái)源

章節(jié)摘錄

  第1章 建立首要的、基礎(chǔ)的正確認(rèn)知  用戶要學(xué)習(xí)HTML,必須首先了解萬(wàn)維網(wǎng)、網(wǎng)頁(yè)和HTML的關(guān)系。萬(wàn)維網(wǎng)是由無(wú)數(shù)的網(wǎng)頁(yè)組成的,這些網(wǎng)頁(yè)由HTML語(yǔ)言編寫,這是萬(wàn)維網(wǎng)、網(wǎng)頁(yè)和HTML三者之間的基本關(guān)系。所有的網(wǎng)頁(yè)——無(wú)論是動(dòng)態(tài)網(wǎng)頁(yè)還是靜態(tài)網(wǎng)頁(yè),都是最終形成HTML語(yǔ)言并為瀏覽器所解釋的,所以,用戶要學(xué)習(xí)網(wǎng)絡(luò)設(shè)計(jì)和開(kāi)發(fā),首先必須熟悉HTML語(yǔ)言?! TML語(yǔ)言,全稱是HyperText MarKup LangLLage(超文本標(biāo)簽語(yǔ)言),其實(shí)是一個(gè)規(guī)范(或者稱為標(biāo)準(zhǔn)),它由W3C制定,而為參與萬(wàn)維網(wǎng)的創(chuàng)作者和軟件廠商所遵守?! ?chuàng)作者一般是指網(wǎng)頁(yè)(包括圖形等多媒體文件)的創(chuàng)建者,如正在學(xué)習(xí)本書的你,將會(huì)使用HTML語(yǔ)言創(chuàng)作網(wǎng)頁(yè);而軟件廠商一般是指開(kāi)發(fā)網(wǎng)頁(yè)瀏覽工具的廠商,如開(kāi)發(fā)Internet Explorer瀏覽器軟件的微軟公司,它們將會(huì)開(kāi)發(fā)瀏覽器等終端設(shè)備解釋網(wǎng)頁(yè)。

編輯推薦

  “在正確與錯(cuò)誤之間做抉擇并不艱難,打開(kāi)前言,將抉擇權(quán)把握在自己手中?!薄 〗⒄_的認(rèn)知、完整系統(tǒng)的知識(shí)體系。在文章中提出的任何觀點(diǎn)和主張都必須經(jīng)得起事實(shí)的考驗(yàn)?! 【烤故裁词钦_的HTML網(wǎng)頁(yè),讓本書來(lái)給你答案;完全范例講解,通俗易懂,循序漸進(jìn),學(xué)習(xí)效率和效果最佳;范例完全通過(guò)W3C推薦驗(yàn)證程序驗(yàn)證,真正使你的網(wǎng)頁(yè)完全符合行業(yè)標(biāo)準(zhǔn);完全涵蓋HTML4.01和XHTML1.0,真正全面準(zhǔn)確地學(xué)習(xí)網(wǎng)頁(yè)語(yǔ)言;透析HTML網(wǎng)頁(yè)內(nèi)核,內(nèi)容和樣式的真實(shí)內(nèi)涵,為網(wǎng)絡(luò)開(kāi)發(fā)奠定正確的基石;完全實(shí)戰(zhàn)網(wǎng)站架設(shè)和維護(hù),最符合團(tuán)隊(duì)協(xié)作要求,提高工作效率,讓你可以完全滿足雇主的需求。  “開(kāi)發(fā)王”系列圖書是張亞飛從業(yè)互聯(lián)網(wǎng)以來(lái)出版的首套完整系統(tǒng)的網(wǎng)絡(luò)開(kāi)發(fā)圖書,它也是國(guó)內(nèi)第一套完整系統(tǒng)的萬(wàn)維網(wǎng)網(wǎng)絡(luò)開(kāi)發(fā)圖書。張解釋說(shuō):這套書一直是他計(jì)劃中的一部分,經(jīng)過(guò)近6年的準(zhǔn)備、編寫和測(cè)試才完成這套心血力作,在還沒(méi)有完全滿意之前他不會(huì)輕易發(fā)表作品,就像他以前做的那樣!他希望在10年后再看這套書時(shí),人們還會(huì)說(shuō)這是一套”很棒的開(kāi)發(fā)圖書”。而現(xiàn)在正是發(fā)表這套圖書的好時(shí)機(jī),因?yàn)橐磺卸家褱?zhǔn)備就緒!  ——田蕾

圖書封面

圖書標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    HTML開(kāi)發(fā)王 PDF格式下載


用戶評(píng)論 (總計(jì)5條)

 
 

  •   之前在網(wǎng)上學(xué)了html,這本書買了沒(méi)怎么看,買來(lái)的目的就是放在那里,沒(méi)事翻一下,鞏固一下。
  •   總體來(lái)說(shuō),還好,需要花時(shí)間看
  •   我覺(jué)得說(shuō)得還比較詳細(xì)
  •   不知道是什么時(shí)候的書了頁(yè)面都不是純的白色了
  •   想自學(xué)的可以看看
 

250萬(wàn)本中文圖書簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7