ASP.NET Web應(yīng)用開(kāi)發(fā)教程
定 價(jià):42 元
叢書(shū)名:普通高等教育“十三五”規(guī)劃教材
- 作者:吳志祥,何亨,楊宜波,曾誠(chéng) 著
- 出版時(shí)間:2016/11/1
- ISBN:9787568016759
- 出 版 社:華中科技大學(xué)出版社
- 中圖法分類(lèi):TP393.092.2
- 頁(yè)碼:306
- 紙張:書(shū)寫(xiě)紙
- 版次:1
- 開(kāi)本:16開(kāi)
本書(shū)系統(tǒng)地介紹了ASP.NET Web應(yīng)用開(kāi)發(fā)的基礎(chǔ)知識(shí)和實(shí)際應(yīng)用,共分8章,包括Web應(yīng)用開(kāi)發(fā)基礎(chǔ),HTML與CSS+Div布局,客戶端腳本及應(yīng)用(含jQuery),ASP.NET Web項(xiàng)目開(kāi)發(fā)基礎(chǔ),基于WebForm模式的Web項(xiàng)目,ASP.NET MVC框架使用基礎(chǔ),實(shí)體模型、EF框架與LINQ查詢(xún),MVC 5及EF 6框架深入編程等內(nèi)容。
本書(shū)以實(shí)用為出發(fā)點(diǎn),其內(nèi)容從簡(jiǎn)單到復(fù)雜,循序漸進(jìn),結(jié)構(gòu)合理,邏輯性強(qiáng)。每個(gè)知識(shí)點(diǎn)都有精心設(shè)計(jì)的典型例子說(shuō)明其用法,每章都配有標(biāo)準(zhǔn)化的練習(xí)題及其答案、上機(jī)實(shí)驗(yàn)指導(dǎo)。與本書(shū)配套的教學(xué)網(wǎng)站上有教學(xué)大綱、實(shí)驗(yàn)大綱、各種軟件的下載鏈接、課件和案例源代碼下載、在線測(cè)試等。
為了方便教學(xué),本書(shū)還配有電子課件等教學(xué)資源包,任課教師和學(xué)生可以登錄“我們愛(ài)讀書(shū)”網(wǎng)(www.ibook4us.com)免費(fèi)注冊(cè)并瀏覽,或者發(fā)郵件至hustpeiit@163.com免費(fèi)索取。
本書(shū)可以作為高等院校計(jì)算機(jī)專(zhuān)業(yè)和非計(jì)算機(jī)專(zhuān)業(yè)學(xué)生的ASP.NET Web開(kāi)發(fā)課程教材,也可以作為ASP.NET Web編程愛(ài)好者的參考書(shū)。
適讀人群 :本書(shū)可以作為高等院校計(jì)算機(jī)專(zhuān)業(yè)和相關(guān)專(zhuān)業(yè)學(xué)生學(xué)習(xí)“.NET架構(gòu)”和“Web程序設(shè)計(jì)”等課程的教材,也可以作為Web開(kāi)發(fā)者的參考書(shū)。
本書(shū)特色
(1)根據(jù)ASP.NET項(xiàng)目開(kāi)發(fā)的實(shí)際需求,精心組織各章節(jié)目錄,突出實(shí)用;
(2)教材體系嚴(yán)密、循序漸進(jìn)(從WebForm開(kāi)發(fā)到MVC框架開(kāi)發(fā)),前后呼應(yīng);
(3)知識(shí)點(diǎn)介紹簡(jiǎn)明扼要,并有使用實(shí)例;
(4)提供了訪問(wèn)數(shù)據(jù)庫(kù)SQL Server及MySQL的通用類(lèi);
(5)提供了課件和所有案例的源代碼下載、上機(jī)實(shí)驗(yàn)網(wǎng)站http://www.wustwzx.com/asp_net和標(biāo)準(zhǔn)化的習(xí)題與答案,方便教學(xué)、鞏固知識(shí)點(diǎn);
(6)提供了兩個(gè)綜合項(xiàng)目:使用WebForm三層架構(gòu)模式開(kāi)發(fā)的Flower1和使用MVC 5+EF 6開(kāi)發(fā)的Flower2;
(7)使用新的VS 2015集成開(kāi)發(fā)環(huán)境。
目前,市場(chǎng)上關(guān)于ASP.NET Web項(xiàng)目開(kāi)發(fā)的相關(guān)書(shū)籍比較多,但系統(tǒng)地從WebForm開(kāi)發(fā)過(guò)渡到MVC+EF框架開(kāi)發(fā)的教材還沒(méi)有。為此,筆者組織一線相關(guān)教師編寫(xiě)了這本符合高校教學(xué)需要和公司需要的教材。
本書(shū)系統(tǒng)地介紹了ASP.NET應(yīng)用開(kāi)發(fā)的基礎(chǔ)知識(shí)和實(shí)際應(yīng)用,共分8章,包括Web應(yīng)用開(kāi)發(fā)基礎(chǔ),HTML與CSS+Div布局,客戶端腳本及應(yīng)用(含jQuery),ASP.NET Web項(xiàng)目開(kāi)發(fā)基礎(chǔ),基于WebForm模式的Web項(xiàng)目,ASP.NET MVC框架使用基礎(chǔ),實(shí)體模型,EF框架與LINQ查詢(xún),MVC 5及EF 6框架深入編程等內(nèi)容,其內(nèi)容從簡(jiǎn)單到復(fù)雜,循序漸進(jìn),結(jié)構(gòu)合理,邏輯性強(qiáng)。
本書(shū)以實(shí)用為出發(fā)點(diǎn),每個(gè)章節(jié)中的每個(gè)知識(shí)點(diǎn)幾乎都有精心設(shè)計(jì)的典型例子說(shuō)明其用法,每章都配有標(biāo)準(zhǔn)化的練習(xí)題及其答案、上機(jī)實(shí)驗(yàn)指導(dǎo)。與本書(shū)配套的教學(xué)網(wǎng)站上有教學(xué)大綱、實(shí)驗(yàn)大綱、各種軟件的下載鏈接、課件和案例源代碼下載、在線測(cè)試等,極大地方便了教與學(xué)。
本書(shū)寫(xiě)作特色鮮明,一是教材結(jié)構(gòu)合理,我們對(duì)教材內(nèi)容的設(shè)置進(jìn)行了深思熟慮的推敲,在正文中指出了相關(guān)章節(jié)知識(shí)點(diǎn)之間的聯(lián)系;二是知識(shí)點(diǎn)介紹簡(jiǎn)明,例子生動(dòng)并緊扣理論,很多例子是作者精心設(shè)計(jì)的;三是在教材中通過(guò)大量的截圖,清晰地反映了程序集→命名空間→類(lèi)(或接口)三個(gè)軟件層次;四是通過(guò)綜合案例的設(shè)計(jì)與分析,讓學(xué)生綜合使用ASP.NET Web應(yīng)用開(kāi)發(fā)的各個(gè)知識(shí)點(diǎn);五是有配套的上機(jī)實(shí)驗(yàn)網(wǎng)站,包括實(shí)驗(yàn)?zāi)康、?shí)驗(yàn)內(nèi)容、在線測(cè)試(含答案和評(píng)分)和素材的提供等。
相對(duì)于傳統(tǒng)的WebForm三層架構(gòu)而言,MVC 5+EF 6框架具有如下特點(diǎn):①請(qǐng)求MVC Web項(xiàng)目的控制器取代了對(duì)窗體頁(yè)面的請(qǐng)求;②將復(fù)雜的應(yīng)用分成M、V、C三個(gè)組件模型后,有效地簡(jiǎn)化了復(fù)雜的架構(gòu),并將處理后臺(tái)邏輯代碼與前臺(tái)展示邏輯進(jìn)行了很好的分離;③優(yōu)秀的Razor引擎使得視圖代碼顯得清晰并可使用C#代碼獲取動(dòng)態(tài)數(shù)據(jù);④單個(gè)視圖可以對(duì)應(yīng)多個(gè)控制器,提高了代碼的重用;⑤ASP.NET MVC中的Partial View 和Layout分別布局取代了WebForm中的 Web用戶控件和母版;⑥MVC AJAX很好地支持異步處理;⑦ASP.NET MVC沒(méi)有服務(wù)器控件,其底層與WebForm是一樣的,即ASP.NET MVC是對(duì)WebForm的再封裝。此外,MVC 5+EF 6框架還具有Code First、模型重建和數(shù)據(jù)遷移等功能。
本書(shū)由吳志祥、何亨、張智、楊宜波和曾誠(chéng)老師整體構(gòu)思,并與其他參編人員共同編著完成。
本書(shū)可以作為高等院校計(jì)算機(jī)專(zhuān)業(yè)和相關(guān)專(zhuān)業(yè)學(xué)生學(xué)習(xí)“.NET架構(gòu)”和“Web程序設(shè)計(jì)”等課程的教材,也可以作為Web開(kāi)發(fā)者的參考書(shū)。
想獲取本書(shū)配套的教學(xué)大綱等教學(xué)資料,可訪問(wèn)http://www.wustwzx.com,上機(jī)實(shí)驗(yàn)指導(dǎo)和教材中所有案例的源代碼,可訪問(wèn)http://www.wustwzx.com/asp_net。
需要特別感謝的是碩士研究生張繼同學(xué),他全程參與了教材案例的設(shè)計(jì)與測(cè)試。
為了方便教學(xué),本書(shū)還配有電子課件等教學(xué)資源包,任課教師和學(xué)生可以登錄“我們愛(ài)讀書(shū)”網(wǎng)(www.ibook4us.com)免費(fèi)注冊(cè)并瀏覽,或者發(fā)郵件至hustpeiit@163.com免費(fèi)索取。
由于編者水平有限,書(shū)中錯(cuò)漏之處在所難免,在此真誠(chéng)歡迎讀者多提寶貴意見(jiàn),讀者可通過(guò)訪問(wèn)作者的教學(xué)網(wǎng)站http://www.wustwzx.com與作者聯(lián)系,以便再版時(shí)及時(shí)更正。
編 者
2016年9月于武漢
第1章 Web應(yīng)用開(kāi)發(fā)基礎(chǔ) 1
1.1 基于B/S體系的動(dòng)態(tài)網(wǎng)站 1
1.1.1 Web服務(wù)器及客戶端 1
1.1.2 應(yīng)用層協(xié)議HTTP 2
1.2 搭建ASP.NET應(yīng)用的開(kāi)發(fā)環(huán)境 2
1.2.1 VS 2015專(zhuān)業(yè)版的安裝與基本使用 2
1.2.2 ASP.NET項(xiàng)目及其分類(lèi) 3
1.2.3 ASP.NET控制臺(tái)程序 5
1.2.4 創(chuàng)建一個(gè)簡(jiǎn)單的ASP.NET網(wǎng)站 6
1.2.5 使用NuGet下載、引用第三方程序集 7
1.3 關(guān)系型數(shù)據(jù)庫(kù)及其服務(wù)器 8
1.3.1 關(guān)系型數(shù)據(jù)庫(kù)概述 8
1.3.2 SQL Server 10
1.3.3 MySQL 13
1.4 使用網(wǎng)頁(yè)三劍客制作網(wǎng)頁(yè)素材* 15
1.4.1 圖形圖像處理軟件概述 15
1.4.2 使用Fireworks或Photoshop編輯圖像 16
1.4.3 使用Flash制作動(dòng)畫(huà) 16
1.4.4 切圖形成網(wǎng)頁(yè)素材 17
習(xí)題1 18
實(shí)驗(yàn)1 Web應(yīng)用開(kāi)發(fā)基礎(chǔ) 19
第2章 HTML與CSS+Div布局 21
2.1 使用超文本標(biāo)記語(yǔ)言HTML組織頁(yè)面內(nèi)容 21
2.1.1 HTML概述 21
2.1.2 在頁(yè)面里插入圖像、音頻和視頻 24
2.1.3 超鏈接、熱點(diǎn)鏈接和錨點(diǎn)鏈接 24
2.1.4 列表 26
2.1.5 表格 26
2.1.6 表單及常用表單元素 27
2.2 使用層疊樣式表CSS設(shè)置頁(yè)面元素的外觀 31
2.2.1 CSS樣式概述、CSS選擇器 31
2.2.2 重新定義HTML元素外觀、偽類(lèi)樣式 35
2.2.3 內(nèi)聯(lián)樣式 36
2.2.4 包含了濾鏡的樣式 36
2.2.5 外部樣式 37
2.3 頁(yè)面布局 38
2.3.1 區(qū)域標(biāo)記 38
2.3.2 用于頁(yè)面布局的常用CSS樣式屬性 42
2.3.3 一個(gè)采用CSS+Div布局的主頁(yè) 43
2.3.4 頁(yè)內(nèi)框架與框架布局 45
習(xí)題2 48
實(shí)驗(yàn)2 HTML標(biāo)記語(yǔ)言、CSS樣式與頁(yè)面布局 49
第3章 客戶端腳本及應(yīng)用 51
3.1 使用JavaScript腳本控制網(wǎng)頁(yè)的客戶端行為 51
3.1.1 JavaScript內(nèi)置對(duì)象和瀏覽器對(duì)象 51
3.1.2 JavaScript變量與常量、流程控制語(yǔ)句 53
3.1.3 在頁(yè)面里使用JavaScript腳本實(shí)現(xiàn)頁(yè)面的交互效果 55
3.1.4 在頁(yè)面里使用JavaScript腳本實(shí)現(xiàn)頁(yè)面的動(dòng)態(tài)效果 60
3.1.5 使用JavaScript腳本驗(yàn)證表單 63
3.2 使用JavaScript的功能擴(kuò)展庫(kù)jQuery 65
3.2.1 jQuery使用基礎(chǔ) 65
3.2.2 jQuery使用示例 67
3.3 使用第三方提供的JS特效腳本 74
3.3.1 制作循環(huán)顯示的圖片新聞 74
3.3.2 實(shí)現(xiàn)QQ臨時(shí)會(huì)話 77
3.4 HTML 5簡(jiǎn)介 77
3.4.1 從HTML 4到HTML 5 77
3.4.2 HTML 5的兩個(gè)應(yīng)用實(shí)例 78
習(xí)題3 80
實(shí)驗(yàn)3 客戶端腳本與HTML 5的使用 81
第4章 ASP.NET項(xiàng)目開(kāi)發(fā)基礎(chǔ) 83
4.1 ASP.NET項(xiàng)目運(yùn)行環(huán)境 83
4.1.1 .NET框架體系與Framework 83
4.1.2 ASP.NET的兩種Web編程框架 84
4.1.3 使用Win 7操作系統(tǒng)的計(jì)算機(jī)的IIS服務(wù)器 85
4.1.4 ASP.NET網(wǎng)站工作原理 87
4.2 C#編程及動(dòng)態(tài)調(diào)試技術(shù) 89
4.2.1 基本概念 89
4.2.2 C#數(shù)據(jù)類(lèi)型及運(yùn)算符 91
4.2.3 變量的作用范圍與生命周期 94
4.2.4 流程控制語(yǔ)句及異常處理 95
4.2.5 日期與時(shí)間相關(guān)類(lèi)(DateTime結(jié)構(gòu)體) 96
4.2.6 數(shù)組、泛型與集合框架 96
4.2.7 自定義C#類(lèi)、方法、字段與屬性 100
4.2.8 ASP.NET項(xiàng)目調(diào)試 102
4.3 ASP.NET內(nèi)置對(duì)象 104
4.3.1 響應(yīng)對(duì)象Response 104
4.3.2 請(qǐng)求對(duì)象Request 104
4.3.3 會(huì)話對(duì)象Session與Cookie 105
4.3.4 應(yīng)用的全局對(duì)象Application 106
4.3.5 服務(wù)器對(duì)象Server 106
4.4 使用數(shù)據(jù)集訪問(wèn)數(shù)據(jù)庫(kù) 109
4.4.1 數(shù)據(jù)集概述 109
4.4.2 數(shù)據(jù)集類(lèi)的創(chuàng)建與使用 109
4.5 使用ADO.NET編程方式訪問(wèn)數(shù)據(jù)庫(kù) 112
4.5.1 ADO.NET體系結(jié)構(gòu) 112
4.5.2 SQL Server數(shù)據(jù)庫(kù)訪問(wèn)的通用類(lèi)設(shè)計(jì) 114
4.5.3 MySQL數(shù)據(jù)庫(kù)訪問(wèn)及其通用類(lèi)設(shè)計(jì) 118
4.6 在ASP.NET中使用XML 121
4.6.1 XML簡(jiǎn)介 121
4.6.2 XML基本語(yǔ)法 122
習(xí)題4 123
實(shí)驗(yàn)4 ASP.NET Web應(yīng)用開(kāi)發(fā)基礎(chǔ) 124
第5章 基于WebForm模式的Web項(xiàng)目 127
5.1 基于WebForm的網(wǎng)站文件系統(tǒng)、窗體模型及語(yǔ)法 127
5.1.1 基于WebForm的網(wǎng)站文件系統(tǒng) 127
5.1.2 窗體模型與PostBack機(jī)制 128
5.1.3 窗體頁(yè)面語(yǔ)法 129
5.2 ASP.NET常用的服務(wù)器控件 131
5.2.1 ASP.NET服務(wù)器控件概述 131
5.2.2 ASP.NET基本服務(wù)器控件 132
5.2.3 ASP.NET驗(yàn)證控件 136
5.2.4 ASP.NET數(shù)據(jù)綁定控件 137
5.3 母版、Web用戶控件和第三方分頁(yè)控件 144
5.3.1 母版頁(yè)的創(chuàng)建與使用 144
5.3.2 Web用戶控件的創(chuàng)建與使用 145
5.3.3 第三方分頁(yè)控件AspNetPager的使用 147
5.4 站點(diǎn)地圖與導(dǎo)航控件 150
5.4.1 網(wǎng)站導(dǎo)航概述、地圖文件與站點(diǎn)數(shù)據(jù)源控件 150
5.4.2 使用SiteMapPath控件實(shí)現(xiàn)面包屑導(dǎo)航 152
5.4.3 使用TreeView控件設(shè)計(jì)折疊式樹(shù)形菜單 152
5.4.4 使用Menu控件設(shè)計(jì)水平彈出式菜單 153
5.5 WebForm項(xiàng)目三層架構(gòu) 154
5.5.1 三層架構(gòu)概述 154
5.5.2 搭建Web表示層并添加對(duì)其他層的引用 156
5.5.3 搭建數(shù)據(jù)訪問(wèn)層DAL 157
5.5.4 搭建業(yè)務(wù)邏輯層BLL并添加對(duì)DAL層的引用 157
5.5.5 使用三層架構(gòu)的鮮花網(wǎng)站Flower1 161
5.6 在WebForm項(xiàng)目中使用Web Service 174
5.6.1 Web服務(wù)概述 174
5.6.2 使用Web服務(wù) 174
5.6.3 自定義Web服務(wù)及其使用 180
5.7 AJAX控件的使用 182
5.7.1 ASP.NET AJAX控件及其作用 182
5.7.2 AJAX應(yīng)用示例 183
5.7.3 AjaxToolKit控件包的使用 188
5.8 Web環(huán)境下的文件與目錄操作 190
5.8.1 瀏覽文件與目錄 190
5.8.2 使用FileUpload控件實(shí)現(xiàn)文件上傳 195
5.8.3 文件讀寫(xiě)操作 197
5.9 ASP.NET Web項(xiàng)目的編譯發(fā)布 206
習(xí)題5 210
實(shí)驗(yàn)5 基于WebForm的Web項(xiàng)目開(kāi)發(fā) 211
第6章 ASP.NET MVC框架使用基礎(chǔ) 215
6.1 基于MVC模式的MVC 5框架 215
6.1.1 關(guān)于MVC開(kāi)發(fā)模式 215
6.1.2 MVC 5項(xiàng)目的創(chuàng)建及結(jié)構(gòu)分析 216
6.2 MVC 5控制器 218
6.2.1 控制器抽象類(lèi)Controller 218
6.2.2 MVC 5控制器相關(guān)類(lèi) 219
6.3 頁(yè)面視圖設(shè)計(jì)初步 220
6.3.1 視圖設(shè)計(jì) 220
6.3.2 視圖模板引擎Razor 222
6.3.3 分部視圖、頁(yè)面布局和視圖節(jié) 224
6.4 一個(gè)簡(jiǎn)單的MVC 5示例項(xiàng)目 229
習(xí)題6 234
實(shí)驗(yàn)6 ASP.NET MVC框架使用基礎(chǔ) 235
第7章 實(shí)體模型、EF框架與LINQ查詢(xún) 237
7.1 ASP.NET EF實(shí)體框架 237
7.1.1 實(shí)體框架EF作為對(duì)象關(guān)系映射ORM產(chǎn)品 237
7.1.2 實(shí)體框架EF的引用及主要API 238
7.1.3 數(shù)據(jù)庫(kù)上下文類(lèi)System.Data.DbContext 240
7.1.4 實(shí)體集類(lèi)System.Data.Entity.DbSet 241
7.2 模型類(lèi)的創(chuàng)建及其相關(guān)操作 241
7.2.1 創(chuàng)建模型類(lèi) 241
7.2.2 模型注解與數(shù)據(jù)有效性驗(yàn)證規(guī)則 241
7.2.3 根據(jù)數(shù)據(jù)表自動(dòng)創(chuàng)建實(shí)體類(lèi) 242
7.2.4 創(chuàng)建含有模型數(shù)據(jù)的頁(yè)面視圖 245
7.2.5 控制器里的模型操作 248
7.2.6 在控制器里注解用于處理表單的動(dòng)作 248
7.3 集成語(yǔ)言查詢(xún)LINQ 249
7.3.1 LINQ概述 249
7.3.2 LINQ查詢(xún)及其相關(guān)類(lèi)與接口 250
習(xí)題7 262
實(shí)驗(yàn)7 模型、EF框架與LINQ查詢(xún) 263
第8章 MVC 5及EF 6框架深入編程 265
8.1 在ASP.NET MVC項(xiàng)目里使用EF框架 265
8.1.1 使用ASP.NET MVC框架的一般步驟 265
8.1.2 CSS樣式與JS腳本文件的優(yōu)化管理 265
8.1.3 在MVC項(xiàng)目里訪問(wèn)MySQL數(shù)據(jù)庫(kù) 267
8.1.4 MVC文件上傳與富文本編輯 270
8.2 控制器與視圖的高級(jí)使用 275
8.2.1 使用PagedList插件實(shí)現(xiàn)記錄分頁(yè)導(dǎo)航 275
8.2.2 在視圖中使用jQuery UI 277
8.2.3 在MVC項(xiàng)目里使用AJAX技術(shù) 279
8.3 EF Code First特性 283
8.4 模型重建與數(shù)據(jù)遷移 285
8.4.1 當(dāng)模型修改時(shí)自動(dòng)重建數(shù)據(jù)庫(kù) 286
8.4.2 數(shù)據(jù)遷移 288
8.5 基于MVC+EF框架開(kāi)發(fā)的鮮花網(wǎng)站 290
8.5.1 總體設(shè)計(jì) 290
8.5.2 網(wǎng)站布局及主頁(yè)設(shè)計(jì) 291
8.5.3 前臺(tái)主要功能設(shè)計(jì) 296
8.5.4 后臺(tái)主要功能設(shè)計(jì) 298
習(xí)題8 300
實(shí)驗(yàn)8 使用MVC及EF框架開(kāi)發(fā)Web項(xiàng)目 301
習(xí)題答案 303
參考文獻(xiàn) 306
第3章
客戶端腳本及應(yīng)用
第3章 客戶端腳本及應(yīng)用
JavaScript(以下簡(jiǎn)稱(chēng)JS)是一種腳本語(yǔ)言,用于編寫(xiě)頁(yè)面腳本以實(shí)現(xiàn)對(duì)網(wǎng)頁(yè)客戶端行為的控制。目前的瀏覽器大都內(nèi)嵌了JS引擎,用來(lái)執(zhí)行客戶端腳本。同時(shí),網(wǎng)頁(yè)設(shè)計(jì)人員還可以使用優(yōu)秀的JS功能擴(kuò)展庫(kù)jQuery或第三方提供的JS腳本。本章的學(xué)習(xí)要點(diǎn)如下。
?掌握在頁(yè)面中使用JS腳本的方法。
?掌握J(rèn)avaScript內(nèi)置對(duì)象實(shí)現(xiàn)對(duì)表單提交數(shù)據(jù)有效性的驗(yàn)證。
?掌握使用JS對(duì)象和瀏覽器對(duì)象實(shí)現(xiàn)頁(yè)面的交互效果和動(dòng)態(tài)效果。
?掌握jQuery的使用方法。
?掌握使用第三方的JS腳本制作圖片新聞的方法。
?了解面向?qū)ο笤O(shè)計(jì)方法的優(yōu)點(diǎn)。
?了解HTML 5與HTML 4的區(qū)別(新增功能)。
3.1 使用JavaScript腳本控制網(wǎng)頁(yè)的客戶端行為
3.1.1 JavaScript內(nèi)置對(duì)象和瀏覽器對(duì)象
JS是一種廣泛用于客戶端Web開(kāi)發(fā)的腳本語(yǔ)言,常用來(lái)給HTML網(wǎng)頁(yè)添加動(dòng)態(tài)功能,如響應(yīng)用戶的各種操作。
如今的瀏覽器程序一般都嵌入了JavaScript解釋程序,用于解釋執(zhí)行嵌入在頁(yè)面里的JS腳本(程序)。
JS內(nèi)置了幾個(gè)重要對(duì)象,主要包括日期/時(shí)間對(duì)象Date、數(shù)組對(duì)象Array、字符串對(duì)象String和數(shù)學(xué)對(duì)象Math等。其中:Date、Array和String是動(dòng)態(tài)對(duì)象(本質(zhì)上是類(lèi)),它們封裝了一些常用的屬性和方法,使用前需要使用new運(yùn)算符創(chuàng)建其實(shí)例;而Math是靜態(tài)對(duì)象,不需要實(shí)例化就可以直接使用其方法及屬性。
對(duì)于嵌入到網(wǎng)頁(yè)中的JS來(lái)說(shuō),其宿主對(duì)象就是瀏覽器提供的對(duì)象,所以又稱(chēng)為瀏覽器對(duì)象。在瀏覽器對(duì)象模型中,頂級(jí)對(duì)象是Window對(duì)象,表示瀏覽器的窗口,其提供了如下重要方法。
?alert():產(chǎn)生警示消息框方法,警告框在單擊確定后消失。
?setTimeout()(或setInterval()):定時(shí)器方法,在指定的時(shí)間(或周期性地)調(diào)用某個(gè)方法。
?confirm():產(chǎn)生一個(gè)是否型對(duì)話框方法,對(duì)話完成后對(duì)話框關(guān)閉。
在瀏覽器窗口里,可以包含文檔、框架和訪問(wèn)歷史記錄等對(duì)象,幾個(gè)常用的二級(jí)對(duì)象介紹如下。
?document:表示瀏覽器窗口里的文檔。
?location:表示窗口里文檔的位置,使用href屬性可實(shí)現(xiàn)客戶端頁(yè)面跳轉(zhuǎn)。
?navigator:表示客戶端瀏覽器。
?history:表示歷史訪問(wèn)記錄。
文檔對(duì)象document的常用方法如下。
?write(exp):向文檔對(duì)應(yīng)的網(wǎng)頁(yè)窗口輸出表達(dá)式exp的值。
?getElementsByTagName(\"tagName\"):返回文檔里指定標(biāo)簽名的對(duì)象的集合。
?getElementById():返回使用ID屬性定義的對(duì)象。
注意:
(1) 在JS腳本里使用瀏覽器對(duì)象時(shí),瀏覽器對(duì)象名稱(chēng)通常需要小寫(xiě),這不同于HTML標(biāo)記名稱(chēng)及其屬性名稱(chēng),使用JS內(nèi)置對(duì)象時(shí),其名稱(chēng)及其方法名需要嚴(yán)格區(qū)分大小寫(xiě)。
(2) 使用JS內(nèi)置對(duì)象編程時(shí),其名稱(chēng)及其方法與屬性名需要嚴(yán)格區(qū)分大小寫(xiě)。
在一個(gè)文檔里可以包含超鏈接、圖像和表單等,表單又可以包含文本框、下拉列表、提交按鈕等。因此,瀏覽器對(duì)象模型具有多級(jí)結(jié)構(gòu),如圖3.1.1所示。
圖3.1.1 瀏覽器對(duì)象模型簡(jiǎn)圖
為了控制客戶端的行為,需要引入面向?qū)ο蟮乃枷牒蛯?duì)象的PEM模型。
類(lèi)與對(duì)象是面向?qū)ο缶幊谭绞降暮诵暮突A(chǔ),對(duì)象是類(lèi)的一個(gè)實(shí)例,類(lèi)是對(duì)一類(lèi)對(duì)象的抽象。通過(guò)類(lèi)可以對(duì)零散的用于實(shí)現(xiàn)某項(xiàng)功能的代碼進(jìn)行有效管理。
將要處理的問(wèn)題(對(duì)象)抽象為類(lèi),并將這類(lèi)對(duì)象的屬性和方法封裝起來(lái),然后通過(guò)對(duì)象的事件來(lái)訪問(wèn)該類(lèi)對(duì)象的屬性和方法來(lái)解決實(shí)際問(wèn)題。
任何對(duì)象都具有一些屬性(property)和方法(method),方法是在一定的事件(event)發(fā)生時(shí)采用的,這就是對(duì)象的PEM模型。
JavaScript支持的瀏覽器事件有很多,它們可以用于不同的對(duì)象,常用事件如表3.1.1所示。
表3.1.1 JavaScript支持的常用瀏覽器事件
序 號(hào) 事 件 名 含義或說(shuō)明
1 OnClick 單擊事件,常用于button類(lèi)型的命令按鈕和超鏈接
2 OnFocus 獲得焦點(diǎn)事件,如激活文本框等對(duì)象時(shí)觸發(fā)
3 OnBlur 失去焦點(diǎn)事件,如下拉列表選擇、文本框輸入確定后觸發(fā)
4 OnChange 更新后事件,在元素的值發(fā)生改變時(shí)觸發(fā)
5 OnLoad Document對(duì)象的事件,瀏覽器完成HTML文檔載入時(shí)觸發(fā)
6 OnDblClick 雙擊事件,常用于button類(lèi)型的命令按鈕
7 OnMouseOver 鼠標(biāo)位于對(duì)象上時(shí)
8 OnMouseOut 鼠標(biāo)從對(duì)象上離開(kāi)時(shí)
要在JS中訪問(wèn)DOM(document object model,文檔對(duì)象模型)元素,就需要標(biāo)識(shí)HTML元素的標(biāo)記屬性。屬性ID和Name都可以用來(lái)標(biāo)識(shí)一個(gè)HTML元素,JavaScript分別有兩個(gè)方法getElementById()和getElementByName()來(lái)定位DOM節(jié)點(diǎn)。ID標(biāo)識(shí)的元素外觀由與ID屬性值相同的#樣式?jīng)Q定;在表單表提交到服務(wù)器端后,為了取到表單域的值,則需要使用Name屬性命名表單域(表單元素)。
注意:在HTML中,Name屬性值可以重復(fù),而ID屬性值不可重復(fù),是方法getElementById()的要求。
在設(shè)計(jì)在線測(cè)試頁(yè)面時(shí),其單選題對(duì)應(yīng)的表單元素的Name屬性值相同,為此,客戶端腳本和服務(wù)器腳本分別提交其處理方法。
表單里的元素是頁(yè)面中的元素,在JS腳本中,除了可以按名稱(chēng)訪問(wèn)外,還可以使用elements[]數(shù)組訪問(wèn)。命名訪問(wèn)表單第i個(gè)元素的屬性的方法如下。
表單名.elements[i].屬性名 i=0,1,2…
其中,下標(biāo)i為該元素在表單內(nèi)元素出現(xiàn)的先后順序,從0開(kāi)始編號(hào)。
本課程在線測(cè)試頁(yè)面,請(qǐng)?jiān)L問(wèn)http://www.wustwzx.com/asp_net/zxcs.html。
3.1.2 JavaScript變量與常量、流程控制語(yǔ)句
程序是可執(zhí)行的語(yǔ)句序列。變量與常量是程序設(shè)計(jì)中最基本的概念。
常量在指在程序運(yùn)行過(guò)程中值不發(fā)生變化的量;變量是相對(duì)于常量而言的,它的值在程序運(yùn)行過(guò)程中可以隨時(shí)變化。
程序結(jié)構(gòu)除了容易理解的順序結(jié)構(gòu)外,還有分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。
1. 分支結(jié)構(gòu)
分支語(yǔ)句用于條件執(zhí)行,可分為單分支語(yǔ)句、雙分支語(yǔ)句和多分支語(yǔ)句三種。
單分支語(yǔ)句的用法格式如下。
if(exp){
statement; //exp的值為真時(shí)才執(zhí)行
}
//后繼語(yǔ)句; //無(wú)條件執(zhí)行的語(yǔ)句
雙分支語(yǔ)句用于二選一,其用法格式如下。
if(exp){
statement1; // exp的值為真時(shí)執(zhí)行
}else{
statement2; // exp的值為假時(shí)執(zhí)行
}
//后繼語(yǔ)句; //無(wú)條件執(zhí)行的語(yǔ)句
多分支語(yǔ)句用于多選一的情形,其用法格式如下。
if(exp1){
statement1;
}
else if(exp 2){
statement 2;
}
else if(exp 3){
statement 3;
}
……
else if(exp n){
statement n;
}
else{
statement n+1;
}
//后繼語(yǔ)句; //無(wú)條件執(zhí)行的語(yǔ)句
注意:多分支實(shí)質(zhì)上是基本分支語(yǔ)句的嵌套。
開(kāi)關(guān)語(yǔ)句可用于多選一的情形,其用法格式如下。
switch(表達(dá)式)
{
case 常量表達(dá)式1: 語(yǔ)句組1; break;
case 常量表達(dá)式2: 語(yǔ)句組2; break;
case 常量表達(dá)式3: 語(yǔ)句組3; break;
…….
case 常量表達(dá)式n: 語(yǔ)句組n; break;
default: 語(yǔ)句組n+1;
}
//后繼語(yǔ)句; //無(wú)條件執(zhí)行的語(yǔ)句
注意:執(zhí)行開(kāi)關(guān)語(yǔ)句時(shí),遇到break語(yǔ)句就終止switch執(zhí)行語(yǔ)句,轉(zhuǎn)到后繼語(yǔ)句。
2. 循環(huán)結(jié)構(gòu)
循環(huán)結(jié)構(gòu)有for、while和do…while等多種格式。for循環(huán)的語(yǔ)法格式如下。
for(exp1;exp2;exp3){ //當(dāng)exp1僅執(zhí)行一次
循環(huán)體語(yǔ)句 //當(dāng)exp2為真時(shí)才執(zhí)行,然后執(zhí)行exp3,再次執(zhí)行exp2
}
// 后繼語(yǔ)句
注意:當(dāng)exp2為假時(shí),將終止循環(huán)的執(zhí)行。
while循環(huán)的語(yǔ)法格式如下。
while(exp){ //當(dāng)exp為真才執(zhí)行循環(huán)體
循環(huán)體語(yǔ)句
}
// 后繼語(yǔ)句
do…while循環(huán)的語(yǔ)法格式如下。
do{
循環(huán)體語(yǔ)句
}while(exp); //當(dāng)exp為假時(shí)將執(zhí)行后繼語(yǔ)句
// 后繼語(yǔ)句
注意:do…while是先執(zhí)行循環(huán)體再判斷條件,因此,循環(huán)體至少執(zhí)行一次。
在循環(huán)體內(nèi),通常使用if語(yǔ)句檢測(cè)某種條件是否成立。當(dāng)條件成立時(shí),使用break語(yǔ)句可以提前終止循環(huán),即程序執(zhí)行到循環(huán)語(yǔ)句的后繼語(yǔ)句。
3.1.3 在頁(yè)面里使用JavaScript腳本實(shí)現(xiàn)頁(yè)面的交互效果
使用button類(lèi)型的命令按鈕用來(lái)響應(yīng)客戶端的瀏覽器事件,而響應(yīng)客戶端事件的處理方法可用JS來(lái)寫(xiě)。在如下的例3.1.1中,OnLoad表示頁(yè)面加載完畢事件,OnClick表示單擊命令按鈕事件。
【例3.1.1】在頁(yè)面中央顯示一組圖片。
【瀏覽效果】頁(yè)面瀏覽效果如圖3.1.2所示。
圖3.1.2 頁(yè)面example3_1_1.html瀏覽效果
頁(yè)面example3_1_1.html代碼如下。
以交互方式在頁(yè)面正中央顯示一組圖片