出版時(shí)間:2008-7 出版社:人民郵電出版社 作者:陳云芳 頁(yè)數(shù):216
內(nèi)容概要
本書(shū)由淺入深、循序漸進(jìn)地介紹了使用Struts 2框架進(jìn)行Web應(yīng)用開(kāi)發(fā)的基本原理和方法?! ∪珪?shū)共分為4篇,第一篇Struts 2快速入門(mén),主要介紹了基本的Web開(kāi)發(fā)技術(shù),Struts 2的基礎(chǔ)知識(shí),并通過(guò)簡(jiǎn)單應(yīng)用實(shí)例,講解了Struts 2的框架結(jié)構(gòu)。第二篇Struts 2框架核心,包括Action、Interceptor、Result、多視圖和數(shù)據(jù)持久化支持等方面的知識(shí)。第三篇Struts 2高級(jí)特性,介紹了數(shù)據(jù)驗(yàn)證、類(lèi)型轉(zhuǎn)換和國(guó)際化等方面的內(nèi)容。第四篇Struts 2綜合項(xiàng)目實(shí)踐,介紹了3個(gè)綜合實(shí)例(網(wǎng)絡(luò)商店系統(tǒng)、網(wǎng)絡(luò)文件管理系統(tǒng)、網(wǎng)絡(luò)購(gòu)書(shū)系統(tǒng))的開(kāi)發(fā)過(guò)程,每個(gè)實(shí)例均按照需求分析、項(xiàng)目設(shè)計(jì)、代碼開(kāi)發(fā)、程序測(cè)試及項(xiàng)目部署等實(shí)際開(kāi)發(fā)流程編寫(xiě),力求使讀者在學(xué)習(xí)理論的同時(shí),能夠進(jìn)一步通過(guò)現(xiàn)有的程序?qū)嵗由罾斫?,提升?shí)戰(zhàn)能力?! ‰S書(shū)附贈(zèng)光盤(pán)上有本書(shū)全部已經(jīng)調(diào)試通過(guò)的程序源代碼。 本書(shū)重點(diǎn)突出,理論與實(shí)踐并重,適合于具有一定Java基礎(chǔ),進(jìn)行Web應(yīng)用開(kāi)發(fā)的程序員閱讀,也可作為相關(guān)培訓(xùn)機(jī)構(gòu)的教材,以及高等院校相關(guān)專(zhuān)業(yè)師生的參考用書(shū)。
書(shū)籍目錄
第1篇 Struts 2快速入門(mén) 第1章 Web應(yīng)用開(kāi)發(fā)概覽 1.1 Web應(yīng)用與Web開(kāi)發(fā)框架 1.1.1 Web應(yīng)用開(kāi)發(fā)歷程 1.1.2 為什么需要Web框架 1.2 MVC模式和Struts 1.2.1 什么是MVC模式 1.2.2 MVC模式的Web框架映射 1.2.3 Struts 2對(duì)MVC模式的改進(jìn) 1.3 Struts 2框架概覽 1.3.1 Struts 2框架的演變 1.3.2 Struts 2的特性 1.3.3 與其他Web框架的比較 1.4 小結(jié) 第2章 第一個(gè)Struts 2應(yīng)用 2.1 Struts 2開(kāi)發(fā)環(huán)境配置 2.1.1 JDK1.5.10和Tomcat的安裝與配置 2.1.2 MyEclipse的安裝和配置 2.1.3 Struts 2的安裝 2.2 創(chuàng)建配置文件 2.2.1 配置web.xml文件 2.2.2 配置Struts 2的xml文件 2.2.3 配置Struts 2的properties文件 2.3 第一個(gè)Action 2.3.1 創(chuàng)建helloworld.action 2.3.2 在struts.xml中配置Action 2.3.3 創(chuàng)建視圖hello.jsp 2.3.4 測(cè)試Action 2.4 體驗(yàn)Struts 2更高級(jí)功能 2.4.1 處理輸入 2.4.2 執(zhí)行結(jié)果 2.4.3 攔截器 2.5 小結(jié) 第2篇 Struts 2框架核心 第3章 Action 3.1 Action簡(jiǎn)介 3.1.1 返回類(lèi)型 3.1.2 execute()方法 3.2 Action接口 3.3 ActionSupport基類(lèi) 3.4 Action實(shí)例 3.4.1 實(shí)現(xiàn)Action接口的實(shí)例 3.4.2 實(shí)現(xiàn)ActionSupport基類(lèi)的實(shí)例 3.5 在Action中實(shí)現(xiàn)基本校驗(yàn) 3.5.1 使用Action的execute()方法 3.5.2 使用ActionSupport的validate()方法 3.5.3 使用注釋實(shí)現(xiàn)校驗(yàn) 3.6 ActionContext 3.7 小結(jié) 第4章 Interceptor 4.1 Interceotor基礎(chǔ) 4.1.1 理解Interceptor 4.1.2 Interceptor何時(shí)調(diào)用 4.1.3 Interceptor接口 4.1.4 Interceptor相關(guān)類(lèi) 4.2 使用預(yù)定義的Interceptor 4.2.1 預(yù)定義Interceptor類(lèi) 4.2.2 LoggingInterceptor示例 4.3 使用自定義的Interceptor 4.3.1 自定義Interceptor的配置 4.3.2 實(shí)現(xiàn)自己的Interceptor 4.4 Interceptor應(yīng)用實(shí)例 4.4.1 execAndWait攔截器源碼分析 4.4.2 項(xiàng)目概述 4.4.3 Action實(shí)現(xiàn)文件 4.4.4 頁(yè)面文件 4.4.5 配置文件 4.4.6 運(yùn)行 4.5 小結(jié) 第5章 Result 5.1 自定義Result 5.1.1 實(shí)現(xiàn)自定義Result 5.1.2 配置自己的Result 5.1.3 運(yùn)行測(cè)試Result 5.2 常用的Result 5.2.1 Dispatcher 5.2.2 Redirect 5.2.3 Chain 5.3 其他的Result 5.4 小結(jié) 第6章 標(biāo)簽 6.1 標(biāo)簽介紹 6.2 自定義標(biāo)簽 6.2.1 標(biāo)簽的實(shí)現(xiàn) 6.2.2 標(biāo)簽的配置 6.2.3 運(yùn)行 6.3 Struts 2標(biāo)簽概覽 6.3.1 標(biāo)簽簡(jiǎn)介 6.3.2 使用標(biāo)簽的準(zhǔn)備 6.4 非UI標(biāo)簽 6.4.1 數(shù)據(jù)標(biāo)簽 6.4.2 控制標(biāo)簽 6.4.3 其他標(biāo)簽 6.5 UI標(biāo)簽 6.5.1 通用屬性 6.5.2 簡(jiǎn)單UI標(biāo)簽 6.5.3 高級(jí)UI標(biāo)簽 6.6 小結(jié) 第7章 表達(dá)式語(yǔ)言O(shè)GNL 7.1 OGNL的基本特性 7.1.1 常量的聲明 7.1.2 方法調(diào)用 7.1.3 變量引用 7.2 操作集合 7.2.1 操作列表Lists 7.2.2 操作映射Maps 7.2.3 操作數(shù)組 Array 7.2.4 集合操作 7.3 OGNL的高級(jí)特性 7.3.1 類(lèi)型轉(zhuǎn)換 7.3.2 與值棧的聯(lián)系 7.3.3 lamuda表達(dá)式 7.3.4 Java和OGNL的比較 7.4 在JSP中使用OGNL 7.4.1 項(xiàng)目概述 7.4.2 工程代碼編寫(xiě) 7.4.3 運(yùn)行 7.5 小結(jié) 第8章 多視圖 8.1 Velocity 8.1.1 Velocity簡(jiǎn)介 8.1.2 語(yǔ)法 8.1.3 Velocity實(shí)例分析 8.2 FreeMarker 8.2.1 FreeMarker簡(jiǎn)介 8.2.2 語(yǔ)法 8.2.3 FreeMarker實(shí)例分析 8.2.4 FreeMarker和Velocity的比較 8.3 JasperReports 8.3.1 JasperReports介紹 8.3.2 JasperReports實(shí)例分析 8.4 小結(jié) 第9章 數(shù)據(jù)持久化——使用Hibernate 9.1 數(shù)據(jù)持久化與Hibernate基礎(chǔ) 9.1.1 數(shù)據(jù)持久化基礎(chǔ) 9.1.2 Hibernate基礎(chǔ) 9.2 Hibernate簡(jiǎn)單應(yīng)用 9.3 Hibernate核心 9.3.1 Hibernate的核心接口 9.3.2 Hibernate的配置文件 9.3.3 Hibernate的對(duì)象關(guān)系映射 9.3.4 Hibernate的檢索方式 9.4 Hibernate實(shí)例 9.5 小結(jié) 第3篇 Struts 2高級(jí)特性 第10章 校驗(yàn)框架 10.1 使用Struts 2自帶的校驗(yàn)器 10.1.1 配置攔截器 10.1.2 配置校驗(yàn)器 10.1.3 自帶校驗(yàn)器實(shí)例 10.2 使用自定義校驗(yàn)器 10.2.1 創(chuàng)建自定義校驗(yàn)器 10.2.2 自定義校驗(yàn)器的注冊(cè) 10.2.3 自定義校驗(yàn)器實(shí)例 10.3 小結(jié) 第11章 類(lèi)型轉(zhuǎn)換 11.1 為什么需要類(lèi)型轉(zhuǎn)換 11.1.1 沒(méi)有類(lèi)型轉(zhuǎn)換的實(shí)例 11.1.2 類(lèi)型轉(zhuǎn)換帶來(lái)的好處 11.2 Struts 2自帶的轉(zhuǎn)換器 11.2.1 自帶轉(zhuǎn)換器的數(shù)據(jù)類(lèi)型 11.2.2 轉(zhuǎn)換器的源碼分析 11.3 自定義轉(zhuǎn)換器 11.3.1 編寫(xiě)轉(zhuǎn)換器類(lèi) 11.3.2 配置 11.4 高級(jí)類(lèi)型轉(zhuǎn)換 11.4.1 空值屬性處理 11.4.2 類(lèi)型轉(zhuǎn)換錯(cuò)誤處理 11.5 小結(jié) 第12章 國(guó)際化 12.1 國(guó)際化基礎(chǔ) 12.2 Struts 2與國(guó)際化 12.2.1 Struts 2對(duì)國(guó)際化的支持 12.2.2 資源包相關(guān) 12.2.3 國(guó)際化信息的獲取 12.3 Struts 2國(guó)際化實(shí)現(xiàn) 12.3.1 初始頁(yè)面的國(guó)際化 12.3.2 Action的國(guó)際化 12.3.3 校驗(yàn)的國(guó)際化 12.4 國(guó)際化實(shí)例 12.4.1 項(xiàng)目配置與開(kāi)發(fā) 12.4.2 結(jié)果測(cè)試 12.5 小結(jié) 第13章 Struts 2調(diào)試 13.1 MyEclipse中的Java程序調(diào)試 13.1.1 調(diào)試配置 13.1.2 調(diào)試視圖 13.1.3 控制程序執(zhí)行 13.2 調(diào)試Struts 2程序 13.2.1 調(diào)試入門(mén) 13.2.2 連接Struts 2的源代碼 13.3 Struts 2調(diào)試應(yīng)用 13.3.1 實(shí)例的概述 13.3.2 實(shí)例工程的源文件 13.3.3 調(diào)試工程 13.4 小結(jié) 第14章 Struts 2原理探究 14.1 控制反轉(zhuǎn)(IOC) 14.1.1 什么是控制反轉(zhuǎn) 14.1.2 控制反轉(zhuǎn)的設(shè)計(jì)方式 14.1.3 Struts 2中的控制反轉(zhuǎn) 14.2 源碼探究 14.2.1 Struts 2啟動(dòng) 14.2.2 Action處理過(guò)程 14.2.3 Interceptor工作機(jī)制 14.2.4 ActionContext 14.3 小結(jié) 第15章 Struts 2與其他網(wǎng)絡(luò)框架整合 15.1 與SiteMesh整合 15.1.1 SiteMesh簡(jiǎn)介 15.1.2 SiteMesh的安裝 15.1.3 SiteMesh應(yīng)用實(shí)例 15.2 Quartz作業(yè)調(diào)度 15.2.1 Quartz簡(jiǎn)介 15.2.2 作業(yè)調(diào)度簡(jiǎn)介 15.2.3 Quartz應(yīng)用實(shí)例 15.3 Acegi-Security用戶(hù)管理 15.3.1 Acegi-Security簡(jiǎn)介 15.3.2 Acegi認(rèn)證過(guò)程 15.3.3 保護(hù)Web應(yīng)用程序 15.4 小結(jié) 第16章 Ajax與Struts 16.1 Ajax入門(mén) 16.1.1 Ajax發(fā)展過(guò)程 16.1.2 Ajax魅力所在 16.2 Ajax核心 16.2.1 使用XMLHttpRequest對(duì)象 16.2.2 發(fā)送請(qǐng)求與處理響應(yīng) 16.2.3 實(shí)現(xiàn)基本的Ajax技術(shù) 16.3 Struts 2與Ajax框架的整合 16.3.1 Dojo框架 16.3.2 DWR框架 16.3.3 使用JSON插件 16.4 Struts 2的Ajax標(biāo)簽 16.5 小結(jié) 第17章 Struts 2測(cè)試 17.1 軟件測(cè)試與JUnit基礎(chǔ) 17.1.1 軟件測(cè)試基礎(chǔ) 17.1.2 JUnit基礎(chǔ) 17.2 JUnit的使用 17.2.1 JUnit的安裝 17.2.2 創(chuàng)建測(cè)試類(lèi) 17.2.3 創(chuàng)建被測(cè)試類(lèi) 17.2.4 運(yùn)行測(cè)試 17.3 在Eclipse中使用JUnit測(cè)試Action 17.3.1 創(chuàng)建Struts 2項(xiàng)目 17.3.2 創(chuàng)建測(cè)試類(lèi) 17.3.3 運(yùn)行測(cè)試 17.4 JUnit高級(jí) 17.4.1 類(lèi)級(jí)別的fixture 17.4.2 限時(shí)測(cè)試 17.4.3 異常測(cè)試 17.4.4 忽略測(cè)試 17.4.5 測(cè)試運(yùn)行器 17.4.6 測(cè)試套件 17.4.7 參數(shù)化測(cè)試 17.5 小結(jié) 第18章 Spring整合 18.1 Spring初步 18.1.1 Spring 概述 18.1.2 Spring準(zhǔn)備 18.1.3 入門(mén)實(shí)例 18.2 Spring基礎(chǔ)特性 18.2.1 依賴(lài)注入 18.2.2 Spring 封裝機(jī)制 18.3 Spring高級(jí)特性 18.3.1 Spring MVC 18.3.2 數(shù)據(jù)持久層 18.4 小結(jié) 第4篇 Struts 2綜合項(xiàng)目實(shí)戰(zhàn) 第19章 網(wǎng)絡(luò)商店實(shí)例編程(Struts 2+Hibernate+Velocity) 19.1 項(xiàng)目概述 19.1.1 網(wǎng)絡(luò)商店概況 19.1.2 網(wǎng)絡(luò)商店的需求分析 19.1.3 網(wǎng)絡(luò)商店的業(yè)務(wù)建?! ?9.1.4 迭代式開(kāi)發(fā)介紹 19.1.5 項(xiàng)目功能模塊分割 19.2 迭代一游客瀏覽商品 19.2.1 本階段迭代的目標(biāo) 19.2.2 本階段頁(yè)面概述 19.2.3 商品的數(shù)據(jù)模型和數(shù)據(jù)庫(kù)設(shè)計(jì) 19.2.4 實(shí)現(xiàn)步驟 19.3 迭代二用戶(hù)管理 19.3.1 本階段迭代的目標(biāo) 19.3.2 本階段頁(yè)面概述 19.3.3 用戶(hù)數(shù)據(jù)模型和數(shù)據(jù)庫(kù)設(shè)計(jì) 19.3.4 實(shí)現(xiàn)步驟 19.4 迭代三購(gòu)物車(chē)管理 19.4.1 本階段的迭代目標(biāo) 19.4.2 本階段頁(yè)面概述 19.4.3 購(gòu)物車(chē)的功能需求和設(shè)計(jì)實(shí)現(xiàn) 19.4.4 實(shí)現(xiàn)步驟 19.5 迭代四后臺(tái)管理員功能 19.5.1 本階段的迭代目標(biāo) 19.5.2 本階段頁(yè)面概述 19.5.3 實(shí)現(xiàn)步驟 19.6 小結(jié) 第20章 網(wǎng)絡(luò)文件管理系統(tǒng)(Struts 2+Hibernate+FreeMarker) 20.1 項(xiàng)目概述 20.1.1 網(wǎng)絡(luò)文件管理系統(tǒng)概況 20.1.2 網(wǎng)絡(luò)文件管理系統(tǒng)需求分析 20.1.3 網(wǎng)絡(luò)文件管理系統(tǒng)業(yè)務(wù)建?! ?0.1.4 項(xiàng)目功能模塊分割 20.2 迭代一實(shí)現(xiàn)上傳、下載、刪除文件 20.2.1 本階段迭代的目標(biāo) 20.2.2 本階段頁(yè)面概述 20.2.3 文件的數(shù)據(jù)模型 20.2.4 實(shí)現(xiàn)步驟 20.3 迭代二添加用戶(hù)管理 20.3.1 本階段迭代的目標(biāo) 20.3.2 本階段頁(yè)面概述 20.3.3 用戶(hù)以及用戶(hù)空間的數(shù)據(jù)模型 20.3.4 實(shí)現(xiàn)步驟 20.4 迭代三添加消息處理,備忘錄管理 20.4.1 本階段迭代的目標(biāo) 20.4.2 本階段頁(yè)面概述 20.4.3 消息和備忘錄的數(shù)據(jù)模型 20.4.4 實(shí)現(xiàn)步驟 20.5 迭代四添加管理員功能 20.5.1 本階段迭代的目標(biāo) 20.5.2 本階段頁(yè)面概述 20.5.3 管理員的數(shù)據(jù)模型 20.5.4 實(shí)現(xiàn)步驟 20.6 小結(jié) 第21章 基于Struts 2和Ajax的網(wǎng)上購(gòu)書(shū)系統(tǒng)(Struts 2+Hibernate+Ajax+FreeMarker) 21.1 項(xiàng)目概述 21.1.1 購(gòu)書(shū)系統(tǒng)概況 21.1.2 購(gòu)書(shū)系統(tǒng)需求分析 21.1.3 購(gòu)書(shū)系統(tǒng)業(yè)務(wù)建?! ?1.1.4 項(xiàng)目功能模塊分割 21.2 迭代一用戶(hù)登錄,書(shū)籍瀏覽 21.2.1 本階段迭代目標(biāo) 21.2.2 本階段頁(yè)面概述 21.2.3 本階段數(shù)據(jù)模型 21.2.4 實(shí)現(xiàn)步驟 21.3 迭代二用戶(hù)購(gòu)書(shū) 21.3.1 本階段迭代目標(biāo) 21.3.2 本階段頁(yè)面概述 21.3.3 實(shí)現(xiàn)步驟 21.4 迭代三管理員登錄,用戶(hù)信息查看 21.4.1 本階段迭代目標(biāo) 21.4.2 本階段頁(yè)面概述 21.4.3 本階段數(shù)據(jù)模型 21.4.4 實(shí)現(xiàn)步驟 21.5 迭代四管理員添加書(shū)籍以及添加用戶(hù) 21.5.1 本階段迭代目標(biāo) 21.5.2 本階段頁(yè)面概述 21.5.3 實(shí)現(xiàn)步驟 21.6 小結(jié)
章節(jié)摘錄
第1章 Web應(yīng)用開(kāi)發(fā)概覽本章從Web開(kāi)發(fā)的基礎(chǔ)講起,將Web開(kāi)發(fā)的來(lái)龍去脈展現(xiàn)給各位讀者。同時(shí)讀者還將了解Web應(yīng)用中采用MVC模式的根本原因以及MVC模式在Web開(kāi)發(fā)框架中的發(fā)展現(xiàn)狀,Web應(yīng)用開(kāi)發(fā)的各種開(kāi)源框架及其比較,Struts 2高級(jí)特性介紹。幾種流行的開(kāi)源框架和Struts2的比較,明確Struts 2的優(yōu)缺點(diǎn),使Web開(kāi)發(fā)應(yīng)用更具有針對(duì)性。1.1 Web應(yīng)用與Web開(kāi)發(fā)框架1.1.1 Web應(yīng)用開(kāi)發(fā)歷程Java技術(shù)是目前流行的Web開(kāi)發(fā)語(yǔ)言,特別是基于J2EE平臺(tái)的Java web開(kāi)發(fā)模式已經(jīng)被廣泛使用,用戶(hù)接觸的很多動(dòng)態(tài)網(wǎng)站都是采用了Java技術(shù)開(kāi)發(fā)的。而Java web開(kāi)發(fā)技術(shù)的發(fā)展是和Internet、瀏覽器的發(fā)展密不可分的。Internet是一個(gè)遵循一定協(xié)議自由發(fā)展的國(guó)際互聯(lián)網(wǎng),它利用覆蓋全球的通信系統(tǒng)使各類(lèi)計(jì)算機(jī)網(wǎng)絡(luò)及個(gè)人計(jì)算機(jī)聯(lián)通,從而實(shí)現(xiàn)智能化的信息交流和資源共享。Internet早已從最初學(xué)術(shù)科研網(wǎng)絡(luò)變成了一個(gè)擁有眾多商業(yè)用戶(hù)、政府部門(mén)、機(jī)構(gòu)團(tuán)體和個(gè)人的綜合的計(jì)算機(jī)信息網(wǎng)絡(luò)。在發(fā)展規(guī)模上,目前Internet已經(jīng)是世界上規(guī)模最大、發(fā)展最快的計(jì)算機(jī)互聯(lián)網(wǎng)。TCP/IP協(xié)議簇是目前Imemet主流網(wǎng)絡(luò)協(xié)議,它可提供任意互聯(lián)的網(wǎng)絡(luò)間的通信,幾乎所用的網(wǎng)絡(luò)操作系統(tǒng)都支持TCP/IP協(xié)議簇。在TCP/IP協(xié)議簇中,Web服務(wù)以其使用的方便性占據(jù)了TCP/IP應(yīng)用的絕大部分。Web服務(wù)所采用的HTTP位于應(yīng)用層,如同TCP/IP成為事實(shí)上的標(biāo)準(zhǔn)Imemet網(wǎng)絡(luò)協(xié)議一樣,HTTP所支持的Web應(yīng)用成為Intemct的最主要應(yīng)用有一定的歷史機(jī)遇和偶然性,而這種偶然性在很大程度上與瀏覽器的發(fā)展密不可分,瀏覽器的發(fā)展在一定程度上也決定了web技術(shù)的發(fā)展。提到Web瀏覽器,大多數(shù)人都會(huì)想到無(wú)處不在的微軟公司的Intemet ExplOrer,簡(jiǎn)稱(chēng)IE,直到最近像Firefox、Safari和Opera之類(lèi)的瀏覽器推出,這種情況才稍有改觀。1993年,堪薩斯大學(xué)開(kāi)發(fā)人員編寫(xiě)了一個(gè)基于文本的瀏覽器,叫做Lynx。1994年,挪威奧斯陸的一個(gè)小組開(kāi)發(fā)了Opera,到1996年這個(gè)瀏覽器得到了廣泛使用。1994年12月,Netscape發(fā)布了Mozilla的1.0版,第一個(gè)盈利性質(zhì)的瀏覽器從此誕生。1996年夏天,微軟公司發(fā)布了IE 3.0版,幾乎一夜之間人們紛紛擁向IE。當(dāng)時(shí),因?yàn)镹etscape的瀏覽器是要收費(fèi)的,而微軟公司則免費(fèi)提供IE。關(guān)于瀏覽器領(lǐng)域誰(shuí)主沉浮,很多人擔(dān)心Microsoft會(huì)像在桌面領(lǐng)域一樣,在Web領(lǐng)域也一統(tǒng)天下。到1999年發(fā)布IE 5.0時(shí),它已經(jīng)成為使用最廣泛的瀏覽器。2002年,繼承了Netscape的開(kāi)源版本的Firefox瀏覽器異軍突起,奪回了大量的市場(chǎng)份額。Internet提供了網(wǎng)絡(luò)連接的基礎(chǔ)架構(gòu),而瀏覽器則帶給了Internet更為廣泛的實(shí)際應(yīng)用。下面讓我們來(lái)深入了解一下影響瀏覽器發(fā)展的一個(gè)重要因素——web應(yīng)用需求都經(jīng)歷了怎樣的變化?;仡橶eb應(yīng)用的發(fā)展歷程及展望其光明前景,我們可以將其大致分為3個(gè)階段:已經(jīng)基本成為歷史的1.0時(shí)代,正在曰益發(fā)展的2.0時(shí)代和尚在萌芽中的3.0時(shí)代。Web 1.0時(shí)代,在計(jì)算機(jī)世界大行其道的是最先由Borland公司提出來(lái)的C/S(客戶(hù)機(jī)/服務(wù)器)結(jié)構(gòu)模式。在這種模式下,服務(wù)器被啟動(dòng),就隨時(shí)等待響應(yīng)客戶(hù)程序發(fā)來(lái)的數(shù)據(jù)請(qǐng)求,這些請(qǐng)求通常只是一些數(shù)據(jù)庫(kù)操作語(yǔ)句,當(dāng)需要對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行任何操作時(shí),客戶(hù)程序就自動(dòng)地尋找服務(wù)器程序,并向它發(fā)出請(qǐng)求,服務(wù)器程序根據(jù)預(yù)定的規(guī)則作出應(yīng)答,返回結(jié)果。C/S模式首次將程序和數(shù)據(jù)徹底分離,數(shù)據(jù)可以為不同程序所用,性能比文件服務(wù)器結(jié)構(gòu)要強(qiáng),維護(hù)起來(lái)比文件服務(wù)器結(jié)構(gòu)容易,利用網(wǎng)絡(luò)所帶來(lái)的數(shù)據(jù)庫(kù)的數(shù)據(jù)查詢(xún)維護(hù)便利。然而,這種胖客戶(hù)機(jī)/瘦服務(wù)器的模式使得資源沒(méi)有合理使用,客戶(hù)機(jī)程序配置復(fù)雜,開(kāi)發(fā)難度大,難以使應(yīng)用系統(tǒng)動(dòng)態(tài)適應(yīng)企業(yè)日益增長(zhǎng)的業(yè)務(wù)需求,開(kāi)發(fā)缺乏標(biāo)準(zhǔn),系統(tǒng)的可用性和性能受到懷疑,同時(shí)也不便于異構(gòu)系統(tǒng)的互連和擴(kuò)充,難以保證應(yīng)用系統(tǒng)的安全性。C/S模式的缺陷和不足很快就被微軟公司注意到了,微軟公司對(duì)Borland公司的C/S模式進(jìn)行了小幅度的改動(dòng),然后提出了自己的B/S模式。這種B/S模式一般采用三層結(jié)構(gòu)。客戶(hù)層(browser):用戶(hù)接口和用戶(hù)請(qǐng)求的發(fā)出地,典型應(yīng)用是網(wǎng)絡(luò)瀏覽器。服務(wù)器層(Web server):典型應(yīng)用是Web服務(wù)器和運(yùn)行業(yè)務(wù)代碼的應(yīng)用程序服務(wù)器。數(shù)據(jù)層(datatier):典型應(yīng)用是關(guān)系型數(shù)據(jù)庫(kù)和其他后端數(shù)據(jù)資源等。B/S模式極大地統(tǒng)一并簡(jiǎn)化了客戶(hù)端,使用戶(hù)的操作變得異常簡(jiǎn)單和一致。B/S結(jié)構(gòu)是對(duì)C/S結(jié)構(gòu)的一種改進(jìn),用戶(hù)工作界面是通過(guò)瀏覽器來(lái)實(shí)現(xiàn)的,瀏覽器根據(jù)獲得的極少部分事務(wù)邏輯在前端(Browser)實(shí)現(xiàn),主要事務(wù)邏輯在服務(wù)器端(Server)實(shí)現(xiàn)。這樣就大大簡(jiǎn)化了客戶(hù)端電腦載荷,減輕了系統(tǒng)維護(hù)與升級(jí)的成本和工作量,降低了用戶(hù)的總體成本。然而,B/S模式的三層結(jié)構(gòu)只是簡(jiǎn)單把數(shù)據(jù)層分開(kāi),沒(méi)有把程序代碼按照邏輯分開(kāi),代碼重用難度大,顯示邏輯和業(yè)務(wù)功能邏輯沒(méi)有分開(kāi),耦合性和移植性都比較差。無(wú)論是C/S還是B/S結(jié)構(gòu)都存在這樣一些缺點(diǎn):數(shù)據(jù)安全性低,對(duì)服務(wù)器要求過(guò)高,數(shù)據(jù)傳輸處理速率低等。例如,通過(guò)瀏覽器進(jìn)行大量的數(shù)據(jù)輸入或進(jìn)行報(bào)表的應(yīng)答,專(zhuān)用性打印輸出都比較困難和不便,由此我們引出了一種分層的Web應(yīng)用。它的體系結(jié)構(gòu)如圖1.1所示。把顯示邏輯從業(yè)務(wù)邏輯中分離出來(lái),這就意味著業(yè)務(wù)代碼是獨(dú)立的,可以不關(guān)心怎樣顯示和在哪里顯示。業(yè)務(wù)邏輯層處于中間層,不需要關(guān)心由哪種類(lèi)型的客戶(hù)來(lái)顯示數(shù)據(jù),也可以與后端系統(tǒng)保持相對(duì)獨(dú)立性,有利于系統(tǒng)擴(kuò)展。多層結(jié)構(gòu)具有更好的移植性,可以跨不同類(lèi)型的平臺(tái)工作,允許用戶(hù)請(qǐng)求在多個(gè)服務(wù)器間進(jìn)行負(fù)載平衡。分層的Web應(yīng)用由于以上優(yōu)勢(shì)迅速成為Web應(yīng)用的主體,其間動(dòng)態(tài)網(wǎng)頁(yè)由于交互性受到了廣泛的關(guān)注并得到了長(zhǎng)足的發(fā)展。目前,常用的Web動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)有以下幾種:CGl、ASP、PHP、JSP。這些動(dòng)態(tài)網(wǎng)頁(yè)的工作原理大致相同,簡(jiǎn)單歸納如下。1.當(dāng)用戶(hù)請(qǐng)求一個(gè)木.asp(*.jsp、*.php、*.cgi等)頁(yè)面時(shí),web服務(wù)器響應(yīng)HTTP請(qǐng)求,調(diào)用ASP(JSP、PHP、CGl等)引擎,解釋?zhuān)ň幾g)被申請(qǐng)的文件。2.若腳本中含有訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的請(qǐng)求,就通過(guò)ODBC或者(JDBC)與后臺(tái)數(shù)據(jù)庫(kù)相連,由數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)組件執(zhí)行訪(fǎng)問(wèn)操作。3.ASP腳本在服務(wù)器端解釋?zhuān)↗SP在服務(wù)器端是編譯)執(zhí)行,根據(jù)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的結(jié)果集自動(dòng)生成符合HTML語(yǔ)言的主頁(yè),去響應(yīng)用戶(hù)的請(qǐng)求。所有相關(guān)的發(fā)布工作由www服務(wù)器負(fù)責(zé)。除了這些紛繁的動(dòng)態(tài)頁(yè)面生成技術(shù),豐富的Web頁(yè)面表現(xiàn)技術(shù)也不斷涌現(xiàn)。在過(guò)去的幾年里經(jīng)過(guò)長(zhǎng)足發(fā)展的頁(yè)面技術(shù)有Applet、JavaScript和Ajax等,正是這些技術(shù)使得Web應(yīng)用更加動(dòng)態(tài),更加智能,并且更具表現(xiàn)力。Web l.0是以信息的增值服務(wù),圍繞信息的搜集、獲取、整理和發(fā)布而展開(kāi)的。它的發(fā)展忽視了用戶(hù)的能動(dòng)性,用戶(hù)只能瀏覽由網(wǎng)頁(yè)編輯搜集整理的信息,而不能參與其中并加入討論。網(wǎng)站對(duì)于用戶(hù)來(lái)說(shuō)形同生人。這樣的一種模式不僅無(wú)法長(zhǎng)時(shí)間地吸引用戶(hù),并且網(wǎng)站形式及網(wǎng)站內(nèi)容極易被其他網(wǎng)站和個(gè)人所復(fù)制,發(fā)展也受到人員和資金的限制。用戶(hù)需要一種主觀的投入,能夠與網(wǎng)站展開(kāi)互動(dòng),網(wǎng)站所需要做的事情就是發(fā)掘用戶(hù)的需求并滿(mǎn)足用戶(hù)的需求,把復(fù)雜的技術(shù)開(kāi)發(fā)留給自己,而把簡(jiǎn)單的使用體驗(yàn)交給用戶(hù),伴隨著用戶(hù)需求的改變,Web 2.0就應(yīng)運(yùn)而生了。一般來(lái)說(shuō),Web 2.0(也有人稱(chēng)之為互聯(lián)網(wǎng)2.0)是相對(duì)web1.0新的一類(lèi)互聯(lián)網(wǎng)應(yīng)用的統(tǒng)稱(chēng)。Web 2.0跟Web 1.0的最大區(qū)別在于沒(méi)有了編輯,也就沒(méi)有了信息控制,體現(xiàn)了一種“去中心化”的趨勢(shì)。更注重用戶(hù)的交互作用,用戶(hù)既是網(wǎng)站內(nèi)容的消費(fèi)者,也是網(wǎng)站內(nèi)容的制造者。Blogger Don在他的“Web2.0概念詮釋”一文中提到:Web 2.0是以Flickr、.Craigslist、Linkedin、Tribes、gyze、Friendster、43Things.tom等網(wǎng)站為代表,以Bl09、TAG、SNS、RSS、wiki等社會(huì)軟件的應(yīng)用為核心,依據(jù)六度分隔、XML、Ajax等新理論和技術(shù)實(shí)現(xiàn)的互聯(lián)網(wǎng)新一代模式。如果說(shuō)Web l.0時(shí)代的標(biāo)準(zhǔn)語(yǔ)言是HTML,那么Web 2.0時(shí)代的標(biāo)準(zhǔn)語(yǔ)言就是XML(eXtensible Markup Language,可擴(kuò)展標(biāo)記語(yǔ)言)。這個(gè)“下一代網(wǎng)絡(luò)應(yīng)用的基石”自從它被提出來(lái)時(shí)就幾乎得到了業(yè)界所有大公司的支持,絲毫不遜于當(dāng)年HTML被提出來(lái)的熱度。1998年2月,W3C(World Wide Web Consoutium)正式公布了XML的1.0版語(yǔ)法標(biāo)準(zhǔn)。XML功能強(qiáng)大的主要原因在于XML是一種“元語(yǔ)言”(meta.1anguage)。換言之,XML是一種用來(lái)定義其他語(yǔ)言的語(yǔ)法系統(tǒng)。隨著XML的發(fā)展,W3C開(kāi)發(fā)了一系列技術(shù)來(lái)規(guī)范和促進(jìn)XML的發(fā)展。這一系列技術(shù)包括DTD、XML Schema(XMLS)、RELAX NG DOM、SAX、Xpath XSL、XSLT、XSL-Fo、CSS XLink、XPointer、Xquery等。如果說(shuō)Web1.0體現(xiàn)的網(wǎng)站和用戶(hù)之間是一種陌生人的關(guān)系,Web 2.0體現(xiàn)的網(wǎng)站和用戶(hù)之間是主人和客人的關(guān)系的話(huà),那么,到了Web3.0時(shí)代,每一個(gè)用戶(hù)都是Web的主人。2005年圣誕節(jié),Bill.Gates講述了公司的互聯(lián)網(wǎng)戰(zhàn)略,主要圍繞一個(gè)互聯(lián)網(wǎng)新的概念模式展開(kāi),并給這種互聯(lián)網(wǎng)模式一個(gè)新的名詞Web 3.0。從目前看來(lái),未來(lái)的Web 3.0主要包含以下3個(gè)基本特征。1.網(wǎng)站內(nèi)的信息可以直接和其他網(wǎng)站相關(guān)信息進(jìn)行交互和轉(zhuǎn)換,能通過(guò)第三方信息平臺(tái)同時(shí)對(duì)多家網(wǎng)站的信息進(jìn)行整合使用。2.用戶(hù)在互聯(lián)網(wǎng)上擁有自己的數(shù)據(jù),并能在不同網(wǎng)站上使用。3.完全基于Web,用瀏覽器即可以實(shí)現(xiàn)復(fù)雜的系統(tǒng)程序才具有的功能。1.1.2 為什么需要Web框架Web應(yīng)用開(kāi)發(fā)從lntemet誕生以來(lái)就一直在發(fā)展著,從傳統(tǒng)的CGl到更加高效的Servlet,其間經(jīng)歷了無(wú)數(shù)技術(shù)上的變革。回顧Web的發(fā)展歷史不難發(fā)現(xiàn),實(shí)現(xiàn)高效的用戶(hù)與服務(wù)器之問(wèn)或者用戶(hù)與用戶(hù)之間的交互可以說(shuō)就是Web應(yīng)用的本質(zhì),這種交互需要技術(shù)上的不斷進(jìn)步來(lái)支持。Web層作為三層架構(gòu)中的核心層,承擔(dān)著Web應(yīng)用的核心功能,在具備較大靈活性的同時(shí),也不可避免地帶來(lái)一些開(kāi)發(fā)上的制約。由于技術(shù)發(fā)展的歷史原因,雖然目前主流的Web應(yīng)用開(kāi)發(fā)工具(PHP、JSP、ASP)都提供了服務(wù)器端的頁(yè)面展示、業(yè)務(wù)邏輯處理和數(shù)據(jù)訪(fǎng)問(wèn)等功能,但是這些功能并沒(méi)有形成一個(gè)完整的整體,三層架構(gòu)中Web層的混亂程度幾乎到了難以忍受的地步,代碼編寫(xiě)困難,調(diào)試更加困難。
編輯推薦
隨書(shū)附贈(zèng)光盤(pán)上有《精通Struts 2:基于MVC的Java Web應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)》全部已經(jīng)調(diào)試通過(guò)的程序源代碼。 《精通Struts 2:基于MVC的Java Web應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)》重點(diǎn)突出,理論與實(shí)踐并重,適合于具有一定Java基礎(chǔ),進(jìn)行Web應(yīng)用開(kāi)發(fā)的程序員閱讀,也可作為相關(guān)培訓(xùn)機(jī)構(gòu)的教材,以及高等院校相關(guān)專(zhuān)業(yè)師生的參考用書(shū)。
圖書(shū)封面
評(píng)論、評(píng)分、閱讀與下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版