本書是一本應用教程,通過大量實例介紹Struts 2框架應用的基本思想、方法和技術,同時配備了相應的實踐環節,鞏固Struts 2應用開發的方法和技術,力圖達到“做中學,學中做”。
全書共10章,內容包括Struts 2入門、Struts 2的Action、類型轉換、攔截器、表達式語言OGNL、標簽庫、輸入校驗、國際化、文件上傳和下載以及電子商務平臺的設計與實現等重要內容。書中實例側重實用性和啟發性,趣味性強,分布合理,通俗易懂,使讀者能夠快速掌握Struts 2框架應用的基礎知識、編程技巧以及完整的開發體系,為實際應用打下堅實的基礎。
盡管已經有許多與Struts 2框架有關的書籍,但大部分書籍非常注重知識的系統性,使得知識體系結構過于全面、龐大,不太適合作為高校計算機相關專業的教材。本書的重點不是簡單地介紹Struts 2框架的基礎知識,而是大量的實例與實踐環節。讀者通過本書可以快速地掌握Struts 2框架技術,提高開發Struts 2應用的能力。全書共10章,具體內容如下:
第1章介紹MVC的設計思想,講解Struts 2應用開發框架的構建。
第2章講解Action的編寫方式、接收用戶數據的方式、在Action中訪問Servlet API以及Action中常見的結果類型,是本書的重點內容之一。
第3章講解Struts 2的類型轉換,包括內置的類型轉換器和自定義類型轉換器。
第4章講解Struts 2的攔截器,包括內置的攔截器和自定義攔截器。
第5章講解表達式語言OGNL,包括OGNL語法基礎、值棧的概念以及OGNL表達式的應用。
第6章講解Struts 2標簽,包括非UI標簽和UI標簽,是本書的重點內容之一。
第7章講解Struts 2框架的輸入校驗體系,包括手動編程校驗和校驗框架校驗。
第8章講解Struts 2國際化的實現方法,包括JSP頁面國際化、校驗信息國際化以及Action信息國際化等內容。
第9章講解使用Struts 2框架進行文件的上傳與下載,包括單文件上傳、多文件上傳以及文件下載。
第10章是本書的重點內容之一,將前面章節的知識進行綜合,講解使用Struts 2框架來開發一個Web應用(電子商務平臺)的過程。
為了便于教學,本教材配有教學課件、源代碼以及實踐環節與課后習題的參考答案,讀者可從清華大學出版社的網站(http://www.tup.com.cn)免費下載。
由于編者水平有限,書中難免會有不足之處,敬請廣大讀者批評指正。
編者
2015年8月
第1章Struts 2入門1
1.1MVC模式1
1.2Struts 2的體系結構2
1.3Struts 2的工作環境3
1.3.1Struts 2的下載與安裝4
1.3.2使用Eclipse開發Struts 2的Web應用4
1.3.3使用MyEclipse開發Struts 2的Web應用10
1.4第一個Struts 2應用14
1.4.1用戶請求頁面14
1.4.2Action實現15
1.4.3配置Action15
1.4.4發布并運行Web應用16
1.4.5struts.xml配置中的包屬性介紹19
1.5實踐環節19
1.6本章小結19
習題120第2章Struts 2的Action21
2.1Action的創建與配置21
2.1.1Action的創建方式21
2.1.2Action的配置23
2.1.3DMI以及通配符24
2.1.4實踐環節26
2.2Action接收請求參數26
2.2.1使用Action屬性接收參數26
2.2.2使用DomainModel接收參數27
2.2.3使用ModelDriven<T>接口接收參數29
2.2.4實踐環節29
2.3Action訪問Servlet API30
2.3.1通過ActionContext30
2.3.2實現RequestAware、SessionAware和ApplicationAware接口32
2.3.3通過ServletActionContext33
2.3.4實現ServletRequestAware接口34
2.3.5實踐環節35
2.4struts.xml文件中的include及constant36
2.4.1include的配置36
2.4.2constant的配置36
2.5Action中常見的結果類型37
2.5.1chain類型37
2.5.2redirectAction類型38
2.5.3redirect類型39
2.5.4dispatcher類型39
2.5.5全局result39
2.5.6實踐環節40
2.6包的繼承41
2.7本章小結42
習題242第3章Struts 2的類型轉換43
3.1類型轉換的意義43
3.2Struts 2內置的類型轉換器45
3.3自定義類型轉換器47
3.3.1實現類型轉換器50
3.3.2注冊類型轉換器52
3.3.3實踐環節53
3.4數組屬性的類型轉換器53
3.5集合屬性的類型轉換器56
3.6本章小結58
習題358第4章Struts 2的攔截器59
4.1攔截器概述59
4.1.1攔截器的原理59
4.1.2攔截器與過濾器的區別59
4.1.3Struts 2內置的攔截器60
4.2攔截器的配置61
4.2.1配置攔截器62
4.2.2攔截器棧63
4.2.3默認攔截器63
4.2.4實踐環節64
4.3自定義攔截器64
4.3.1實現Interceptor接口65
4.3.2繼承AbstractInterceptor類67
4.3.3繼承MethodFilterInterceptor類67
4.3.4實踐環節69
4.4使用自定義攔截器完成權限驗證71
4.5本章小結74
習題474第5章表達式語言OGNL76
5.1OGNL簡介76
5.2OGNL基礎76
5.2.1OGNL上下文78
5.2.2值棧81
5.2.3OGNL的訪問83
5.2.4實踐環節85
5.3OGNL基本語法85
5.3.1常量86
5.3.2操作符86
5.3.3OGNL表達式87
5.3.4實踐環節91
5.4本章小結96
習題596第6章Struts 2中的標簽97
6.1標簽庫概述97
6.1.1標簽的分類97
6.1.2標簽的使用97
6.1.3標簽的語法97
6.2數據標簽98
6.2.1action標簽99
6.2.2bean標簽102
6.2.3date標簽103
6.2.4debug標簽104
6.2.5include標簽105
6.2.6param標簽106
6.2.7push標簽106
6.2.8set標簽107
6.2.9url標簽108
6.2.10property標簽109
6.2.11實踐環節109
6.3流程控制標簽110
6.3.1if/elseif/else標簽110
6.3.2iterator標簽111
6.3.3append標簽113
6.3.4generator標簽114
6.3.5merge標簽115
6.3.6subset標簽115
6.3.7sort標簽117
6.3.8實踐環節118
6.4表單標簽118
6.4.1表單標簽的通用屬性118
6.4.2checkboxlist標簽119
6.4.3combobox標簽121
6.4.4doubleselect標簽122
6.4.5optiontransferselect標簽123
6.4.6select標簽125
6.4.7optgroup標簽126
6.4.8radio標簽127
6.4.9實踐環節128
6.5非表單標簽129
6.6本章小結131
習題6131第7章Struts 2的輸入校驗132
7.1輸入校驗概述132
7.1.1客戶端校驗132
7.1.2服務器端校驗136
7.2手動編程校驗136
7.2.1重寫validate()方法136
7.2.2重寫validateXxx()方法139
7.2.3輸入校驗的流程140
7.2.4實踐環節140
7.3校驗框架校驗141
7.3.1Struts 2內置的校驗器141
7.3.2常用內置校驗器的配置142
7.3.3校驗Action中所有與execute簽名相同的方法143
7.3.4校驗Action中某個與execute簽名相同的方法145
7.3.5校驗文件搜索順序146
7.3.6實踐環節146
7.4本章小結146
習題7147第8章Struts 2的國際化148
8.1程序國際化概述148
8.1.1Java國際化的思想148
8.1.2Java支持的語言和國家149
8.1.3Java程序國際化150
8.1.4帶占位符的國際化信息152
8.1.5實踐環節152
8.2國際化的步驟153
8.2.1Struts 2中加載全局資源文件153
8.2.2國際化信息輸出153
8.2.3實踐環節156
8.3資源文件的加載方式157
8.3.1包范圍資源文件157
8.3.2Action范圍資源文件157
8.3.3臨時指定資源文件157
8.4用戶自定義切換語言示例158
8.5本章小結162
習題8163第9章文件的上傳與下載164
9.1Struts 2文件上傳164
9.1.1基于表單的文件上傳164
9.1.2Struts 2單文件上傳165
9.1.3攔截器實現文件過濾168
9.1.4文件上傳的常量配置169
9.1.5Struts 2多文件上傳169
9.1.6實踐環節172
9.2Struts 2文件下載172
9.3本章小結176
習題9176第10章電子商務平臺的設計與實現178
10.1系統設計178
10.1.1系統功能需求178
10.1.2系統模塊劃分178
10.2數據庫設計179
10.2.1數據庫概念結構設計179
10.2.2數據邏輯結構設計181
10.2.3創建數據表182
10.3系統管理185
10.3.1導入相關的jar包185
10.3.2JSP頁面管理185
10.3.3包管理189
10.3.4配置文件管理189
10.4組件設計195
10.4.1過濾器195
10.4.2攔截器195
10.4.3驗證碼196
10.4.4數據庫操作196
10.5后臺管理子系統的實現211
10.5.1Action的實現212
10.5.2管理員登錄218
10.5.3添加商品219
10.5.4查詢商品221
10.5.5修改商品223
10.5.6刪除商品226
10.5.7訂單管理227
10.5.8用戶管理228
10.5.9公告管理229
10.5.10退出系統232
10.6前臺電子商務子系統的實現232
10.6.1Action的實現233
10.6.2導航欄239
10.6.3銷售排行243
10.6.4人氣排行243
10.6.5最新商品243
10.6.6公告欄243
10.6.7用戶注冊243
10.6.8用戶登錄243
10.6.9商品詳情244
10.6.10關注商品246
10.6.11購物車246
10.6.12下單249
10.6.13用戶中心251
10.7本章小結255
參考文獻256