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