Struts 2是一款真正意義上按照MVC架構模式搭建的Web開發(fā)框架。本書全面講述Struts 2開發(fā)框架的知識,包括Struts 2概述、Struts 2配置詳解、Struts 2攔截器、類型轉換、輸入校驗、Struts 2國際化與異常處理、OGNL、Struts 2標簽庫、Struts 2數(shù)據庫的應用、文件的上傳與下載、避免表單重復提交與等待頁面以及Struts 2與其他流行框架的整合,最后以一個Spring+Struts 2+Hibernate三大框架整合的實例,綜合地介紹Struts 2在實際應用中的使用。本書光盤提供了全程配音視頻文件和實例源代碼。
本書適合大專院校在校生、網站開發(fā)人員、Struts 2學習和開發(fā)人員以及編程愛好者學習和參考。
第1章 Struts 2概述
1.1 MVC思想概述
1.1.1 MVC設計模式
1.1.2 MVC的優(yōu)點
1.1.3 Model 1和Model 2開發(fā)模式
1.2 Struts 2體系介紹
1.2.1 核心控制器
1.2.2 業(yè)務處理器Action
1.2.3 Struts 2配置文件
1.2.4 Struts 2的控制器組件
1.2.5 Struts 2的標簽庫
1.3 搭建Struts 2開發(fā)環(huán)境
1.3.1 安裝配置JDK
1.3.2 下載安裝Tomcat
1.3.3 下載安裝Struts 2
第1章 Struts 2概述
1.1 MVC思想概述
1.1.1 MVC設計模式
1.1.2 MVC的優(yōu)點
1.1.3 Model 1和Model 2開發(fā)模式
1.2 Struts 2體系介紹
1.2.1 核心控制器
1.2.2 業(yè)務處理器Action
1.2.3 Struts 2配置文件
1.2.4 Struts 2的控制器組件
1.2.5 Struts 2的標簽庫
1.3 搭建Struts 2開發(fā)環(huán)境
1.3.1 安裝配置JDK
1.3.2 下載安裝Tomcat
1.3.3 下載安裝Struts 2
1.3.4 使用MyEclipse開發(fā)工具
1.4 Struts 2應用示例
1.4.1 配置web.xml文件
1.4.2 Action業(yè)務控制器
1.4.3 struts.xml配置文件
1.4.4 添加視圖文件完成應用
1.4.5 運行實例
1.5 在Struts 2中使用POJO
1.6 項目案例:編寫簡單的登錄驗證
系統(tǒng)
1.7 習題
1.8 實踐疑難解答
1.8.1 Struts 2接收日期格式賦值
錯誤
1.8.2 關于Struts 2標簽的一個問題
第2章 Struts 2配置詳解
2.1 Struts 2的配置文件
2.1.1 web.xml
2.1.2 struts.xml
2.1.3 struts-default.xml
2.1.4 struts.properties
2.1.5 靜態(tài)內容
2.2 struts.xml配置詳解
2.2.1 Bean配置
2.2.2 常量配置
2.2.3 包配置
2.2.4 命名空間配置
2.2.5 包含配置
2.2.6 攔截器配置
2.3 配置Action
2.3.1 實現(xiàn)Action類
2.3.2 Action間接訪問Servlet API
2.3.3 Action直接訪問Servlet API
2.3.4 配置Action
2.3.5 動態(tài)方法調用
2.3.6 為Action元素指定method
屬性
2.3.7 使用通配符映射
2.3.8 默認Action
2.4 配置Result
2.4.1 結果映射
2.4.2 結果類型
2.4.3 dispatcher結果類型
2.4.4 redirect結果類型
2.4.5 redirectAction結果類型
2.4.6 chain結果類型
2.4.7 plainText結果類型
2.4.8 通配符動態(tài)配置Result
2.4.9 OGNL動態(tài)配置Result
2.5 使用注解配置Action
2.5.1 與Action配置相關的注解
2.5.2 使用注解配置Action的注意
事項
2.6 項目案例:實現(xiàn)用戶的注冊功能
2.7 習題
2.8 實踐疑難解答
2.8.1 通配符的使用效率
2.8.2 配置struts.xml文件時,class
路徑錯誤
第3章 Struts 2的攔截器
3.1 攔截器簡介
3.2 Struts 2攔截器
3.2.1 配置攔截器
3.2.2 使用攔截器
3.2.3 默認攔截器
3.3 自定義攔截器
3.3.1 自定義攔截器類
3.3.2 使用自定義攔截器
3.4 深入攔截器
3.4.1 方法過濾
3.4.2 攔截器的執(zhí)行順序
3.4.3 攔截結果監(jiān)聽器
3.4.4 覆蓋攔截器棧中攔截器參數(shù)
3.5 Struts 2框架的系統(tǒng)攔截器
3.5.1 系統(tǒng)攔截器
3.5.2 timer攔截器實例
3.6 項目案例:實現(xiàn)文字過濾功能
3.7 習題
3.8 實踐疑難解答
3.8.1 為什么要用攔截器的問題
3.8.2 設置默認攔截器的問題
3.8.3 Action方法的執(zhí)行和攔截器
關系的問題
3.8.4 攔截器的錯誤信息如何顯示
在頁面上
第4章 類型轉換
4.1 傳統(tǒng)的類型轉換
4.2 類型轉換器
4.2.1 類型轉換器介紹
4.2.2 編寫類型轉換器
4.3 自定義類型轉換器
4.3.1 基于OGNL的類型轉換器
4.3.2 基于Struts 2的類型轉換器
4.3.3 注冊自定義類型轉換器
4.3.4 數(shù)組屬性類型轉換器
4.3.5 集合屬性類型轉換器
4.4 使用Struts 2的類型轉換
4.4.1 Struts 2系統(tǒng)內建的類型
轉換器
4.4.2 null屬性的處理
4.4.3 使用OGNL表達式
4.4.4 使用集合類型屬性
4.4.5 使用Set類型屬性
4.5 類型轉換中的異常處理
4.5.1 類型轉換異常攔截器
4.5.2 改進類型轉換異常顯示信息
4.5.3 處理復合類型轉換異常
4.6 項目案例:使用List屬性同時處理多
條注冊數(shù)據
4.7 習題
4.8 實踐疑難解答
4.8.1 Struts 2 Date類型轉換問題
4.8.2 Struts2的自動類型轉換出錯
第5章 Struts 2的輸入校驗
5.1 輸入校驗概述
5.1.1 輸入校驗的必要性
5.1.2 客戶端和服務器端校驗
5.2 使用validate進行輸入校驗
5.2.1 validate()方法輸入校驗
5.2.2 validateXxx()方法輸入校驗
5.2.3 Struts 2的輸入校驗流程
5.3 基本輸入校驗
5.3.1 定義校驗規(guī)則
5.3.2 校驗器配置風格
5.3.3 輸入校驗的國際化信息
5.3.4 校驗的搜索順序
5.4 Struts 2框架的校驗器
5.4.1 必填校驗器
5.4.2 必填字符串校驗器
5.4.3 字符串長度校驗器
5.4.4 整數(shù)校驗器
5.4.5 日期校驗器
5.4.6 轉換校驗器
5.4.7 郵件地址校驗器
5.4.8 網址校驗器
5.4.9 表達式校驗器
5.4.10 字段表達式校驗器
5.4.11 正則表達式校驗器
5.4.12 visitor校驗器
5.5 自定義校驗器
5.6 項目案例:學生信息錄入
5.7 習題
5.8 實踐疑難解答
5.8.1 使用轉換校驗器拋出異常
5.8.2 Struts 2如何顯示驗證出錯
信息
5.8.3 Struts 2中校驗方法的使用
第6章 Struts 2國際化與異常處理
6.1 Java國際化
6.1.1 Java對國際化的支持
6.1.2 Java支持的語言和區(qū)域
6.1.3 使用資源文件
6.1.4 使用類文件代替資源文件
6.1.5 MessageFormat類
6.2 Struts 2國際化
6.2.1 Struts 2對國際化的支持
6.2.2 使用占位符
6.2.3 包范圍資源文件
6.2.4 Action范圍資源文件
6.2.5 臨時資源文件
6.2.6 加載資源文件的順序
6.3 動態(tài)訪問國際化資源文件
6.4. Struts 2異常處理
6.4.1 傳統(tǒng)異常處理方式
6.4.2 Struts 2異常處理機制
6.4.3 配置異常處理
6.4.4 異常處理實例
6.5 項目案例:實現(xiàn)注冊系統(tǒng)的國際化
功能
6.6 習題
6.7 實踐疑難解答
6.7.1 Struts 2國際化中文亂碼解決
問題
6.7.2 使用Struts 2國際化標簽的
錯誤問題
第7章 OGNL
7.1 OGNL基礎
7.1.1 OGNL三要素
7.1.2 OGNL表達式
7.1.3 對集合的操作
7.2 lambda表達式
7.3 Struts 2的OGNL
7.4 項目案例:獲取員工信息
7.5 習題
7.6 實踐疑難解答
7.6.1 OGNL表達式問題
7.6.2 Struts 2的OGNL調用Action
中的方法
7.6.3 #、%、$在頁面表達式的
區(qū)別
第8章 Struts 2標簽庫
8.1 Struts 2的標簽庫概述
8.1.1 標簽庫簡介
8.1.2 Struts 2的標簽分類
8.2 控制標簽
8.2.1 if/elseif/else標簽
8.2.2 iterator標簽
8.2.3 append標簽
8.2.4 generator標簽
8.2.5 merge標簽
8.2.6 subset標簽
8.2.7 sort標簽
8.3 數(shù)據標簽
8.3.1 action標簽
8.3.2 bean標簽
8.3.3 date標簽
8.3.4 debug標簽
8.3.5 include標簽
8.3.6 param標簽
8.3.7 push標簽
8.3.8 set標簽
8.3.9 url標簽
8.3.10 property標簽
8.4 主題與模板
8.4.1 主題
8.4.2 模板
8.4.3 使用主題模板
8.5 表單標簽
8.5.1 表單標簽通用屬性
8.5.2 checkboxlist標簽
8.5.3 combobox標簽
8.5.4 doubleselect標簽
8.5.5 datetimepicker標簽
8.5.6 head標簽
8.5.7 file標簽
8.5.8 hidden標簽
8.5.9 select標簽
8.5.10 radio標簽
8.5.11 optgroup標簽
8.5.12 textfield、password和textarea
標簽
8.5.13 token標簽
8.5.14 updownselect標簽
8.5.15 optiontransferselect標簽
8.6 非表單標簽
8.6.1 actionerror和actionmessage
標簽
8.6.2 component標簽
8.6.3 tree和treenode標簽
8.7 項目案例:編寫一個用戶注冊頁面
8.8 習題
8.9 實踐疑難解答
8.9.1 表單標簽hidden的使用問題
8.9.2 Struts 2<s:iterator>標簽問題
第9章 Struts 2數(shù)據庫應用
9.1 訪問MySQL數(shù)據庫
9.1.1 創(chuàng)建一個數(shù)據庫
9.1.2 建立JDBC連接
9.2 使用Tomcat數(shù)據源
9.3 Struts 2數(shù)據分頁
9.4 項目案例:商品的增刪改查
9.4.1 通用模塊的實現(xiàn)
9.4.2 添加商品
9.4.3 修改商品
9.4.4 刪除商品
9.5 習題
9.6 實踐疑難解答
9.6.1 MySQL自增列的設置問題
9.6.2 MySQL代碼中關鍵字的
大小寫問題
9.6.3 MySQL中l(wèi)imit的用法
第10章 文件上傳與下載
10.1 文件上傳
10.1.1 基于表單的文件上傳
10.1.2 手動上傳
10.1.3 Struts 2對文件上傳的支持
10.1.4 在Struts 2中實現(xiàn)文件上傳
10.1.5 實現(xiàn)上傳文件過濾
10.2 多個文件同時上傳
10.2.1 使用數(shù)組同時上傳多個
文件
10.2.2 使用List同時上傳多個
文件
10.3 文件下載
10.3.1 使用Struts 2控制文件下載
10.3.2 下載權限控制
10.4 項目案例:實現(xiàn)多個文件的上傳
功能
10.5 習題
10.6 實踐疑難解答
10.6.1 Struts2文件上傳類型問題
10.6.2 Struts 2判斷上傳文件大小
問題
第11章 避免表單重復提交與等待
頁面
11.1 表單重復提交原因
11.2 Struts 2實現(xiàn)方式
11.2.1 使用token標簽
11.2.2 使用tokenSession攔截器
11.3 顯示等待頁面
11.4 項目案例:編寫簡單的登錄系統(tǒng)
11.5 習題
11.6 實踐疑難解答
11.6.1 token標簽的問題
11.6.2 tokenSession攔截器的問題
11.6.3 顯示等待頁面錯誤
第12章 整合Spring
12.1 Spring概述
12.1.1 Spring的起源及優(yōu)點
12.1.2 Spring的核心
12.1.3 下載安裝Spring
12.1.4 使用Spring的IoC容器
12.2 Struts 2整合Spring
12.2.1 整合原理
12.2.2 整合步驟
12.2.3 Struts 2整合Spring示例
12.3 項目案例:編寫簡單的登錄驗證
系統(tǒng)
12.4 習題
12.5 實踐疑難解答
12.5.1 訪問Action時請求參數(shù)為
null
12.5.2 Struts 2整合Spring概念不
清楚
第13章 整合Hibernate
13.1 Hibernate簡介
13.1.1 Hibernate的優(yōu)缺點
13.1.2 Hibernate API簡介
13.1.3 Hibernate核心接口
13.2 Struts 2整合Hibernate
13.2.1 下載安裝Hibernate
13.2.2 Struts 2與Hibernate的整合
方案
13.2.3 功能設計與數(shù)據庫設計
13.2.4 Hibernate映射對象到
數(shù)據庫
13.2.5 hibernate.cfg.xml配置文件
13.2.6 構建SessionFactory
13.2.7 數(shù)據庫操作DAO
13.2.8 業(yè)務控制Action
13.2.9 struts.xml配置文件
13.2.10 視圖文件
13.3 習題
13.4 實踐疑難解答
13.4.1 使用Hibernate更改指定
屬性
13.4.2 Hibernate中常用的主鍵生成
策略有哪幾種
13.4.3 Hibernate調用createQuery()
方法的值的類型問題
第14章 整合其他框架技術
14.1 整合JSF
14.1.1 整合原理
14.1.2 整合步驟
14.1.3 整合實例
14.2 整合SiteMesh
14.2.1 SiteMesh簡介
14.2.2 下載安裝SiteMesh
14.2.3 SiteMesh的簡單應用
14.2.4 更復雜的裝飾器頁面
14.2.5 Struts 2中使用SiteMesh
14.3 整合FreeMarker
14.3.1 FreeMarker簡介
14.3.2 FreeMarker的簡單應用
14.3.3 FreeMarker常用指令
14.3.4 Struts 2中使用FreeMarker
14.4 整合Tiles
14.4.1 Tiles簡介
14.4.2 下載安裝Tiles
14.4.3 Tiles的簡單應用
14.4.4 Struts 2中使用Tiles
14.5 整合JFreeChart
14.5.1 JFreeChart簡介
14.5.2 下載安裝JFreeChart
14.5.3 JFreeChart的簡單應用
14.5.4 Struts 2中使用JFreeChart
14.6 項目案例:開發(fā)在線投票系統(tǒng)
14.7 習題
14.8 實踐疑難解答
14.8.1 JSF的配置問題
14.8.2 JAR文件的版本問題
第15章 人事管理系統(tǒng)
15.1 系統(tǒng)概述
15.1.1 需求分析
15.1.2 系統(tǒng)用例圖
15.1.3 系統(tǒng)設計
15.2 數(shù)據庫設計
15.3 搭建Struts 2+Spring+Hibernate
開發(fā)環(huán)境
15.4 系統(tǒng)實現(xiàn)
15.4.1 通用模塊的實現(xiàn)
15.4.2 部門管理
15.4.3 員工管理
15.4.4 招聘管理
Struts 1是一個非常成功的MVC框架,對于項目的開發(fā)有很大的幫助,但是,隨著時間的流逝以及技術的進步,Struts 1的缺陷也逐漸顯露出來,制約了Struts 1的繼續(xù)發(fā)展。
對于Struts 1框架而言,由于和JSP/Servlet耦合非常緊密,導致出現(xiàn)了一些嚴重的問題,主要體現(xiàn)在支持視圖技術單一、難于測試、龐大的配置文件和大量的ActionForm類這幾個方面,給項目開發(fā)的管理維護帶來了困難。于是,大量的開發(fā)人員、軟件公司開始選擇更好的MVC解決方案,這個時候Struts 2應運而生,Struts 2整合了兩個優(yōu)秀的框架,Struts 1和WebWork,這兩個框架都是非常成熟優(yōu)秀的MVC框架,這就保證了Struts 2作為實際開發(fā)框架的成熟性。Struts 2保留了Struts 1的簡單易用性,并且充分利用了WebWork的攔截器機制,Struts 2發(fā)展成為一個具有高度可擴展性的框架。
本書內容
本書全面介紹Struts 2的框架,包括Struts 2框架的配置文件、Struts 2框架的攔截器、Struts 2框架強大的標簽庫以及Struts 2框架與其他框架的整合。
本書共15章,各章內容如下。
第1章:Struts 2概述。主要講述MVC設計模式以及Struts 2的框架架構、標簽庫、開發(fā)環(huán)境以及基本配置,重點介紹Struts 2的Action配置。
第2章:Struts 2配置詳解。本章主要介紹Struts 2的配置文件,講述Struts 2在web.xml文件中的配置、struts.xml文件的配置、Action的配置以及它們的注解形式,還介紹了Action對Servlet API的訪問方式和Result結果的幾種形式。
第3章:Struts 2的攔截器。主要介紹攔截器的工作原理及其功能、攔截器的配置和使用以及自定義攔截器。
第4章:類型轉換。主要介紹類型轉換器的編寫、自定義類型轉換器以及內置類型轉換器、還介紹了類型轉換中的異常處理以及類型轉換的注解。
第5章:Struts 2的輸入校驗。主要介紹幾種輸入校驗的方法以及輸入校驗的流程,重點介紹常用校驗器、校驗器的配置和自定義校驗器。
第6章:Struts 2國際化與異常處理。主要介紹國際化的機制及其配置應用,還介紹了異常處理的機制和它的應用以及聲明。
第7章:OGNL。本章介紹OGNL的三要素、表達式的使用和它對集合的操作,講述了lambda表達式的使用以及Struts 2對OGNL表達式的增強。
第8章:Struts 2標簽庫。本章介紹Struts 2標簽庫的使用,其中重點介紹控制標簽、數(shù)據標簽、主題概念標簽以及表單標簽。
第9章:Struts 2數(shù)據庫應用。本章介紹MySQL數(shù)據庫的創(chuàng)建、JDBC數(shù)據庫的連接和Tomcat數(shù)據源的使用,也重點介紹了分頁查詢和對數(shù)據庫的操作。
第10章:文件上傳與下載。本章介紹文件上傳與下載,主要介紹Struts 2對文件上傳和下載的支持、上傳文件的過濾、多個文件的上傳和下載權限的控制。
第11章:避免表單重復提交與等待頁面。本章主要介紹TokenInterceptor、TokenSessionStoreInterceptor和ExecuteAndWaitInterceptor這3個攔截器的使用。
第12章:整合Spring。本章介紹Spring框架以及它的優(yōu)點,并且介紹了相關的IoC和DI的概念,重點介紹了Struts 2整合Spring的原理和流程。
第13章:整合Hibernate。本章介紹Hibernate框架和該框架的使用、Hibernate映射和配置文件、Hibernate對數(shù)據庫的操作。以案例的形式講述了Struts 2與Hibernate的整合。
第14章:整合其他框架技術。本章講述Struts 2與JSF框架、siteMesh框架、FreeMarker框架、Tiles框架的整合,并且介紹了JFreeChart框架。
第15章:人事管理系統(tǒng)。本章通過一個Web項目講述Spring、Hibernate和Struts 2三大框架的整合,并且詳細講述了各個模塊的實現(xiàn)過程和運行結果。
本書特色
本書采用大量的實例進行講解,力求通過實際操作使讀者輕松掌握Struts 2框架技術的使用。本書每章后面都有精選的習題供讀者鞏固所學知識,每個章節(jié)末尾都有實踐疑難解答,在這個模塊中收集了每章中的重點、難點以及易出錯點,以問答的形式告訴讀者,使讀者更輕松地掌握這些知識。本書難度適中,內容由淺而深,實用性強,覆蓋面廣,條理清晰。
q 知識面全 本書全面地介紹了Struts 2框架的各知識點,具有很強的系統(tǒng)性。
q 示例典型,應用廣泛 作者精心挑選了大量示例程序,它們都是根據作者在實際開發(fā)中的經驗總結而來的,涵蓋了實際開發(fā)中出現(xiàn)的各種問題。而且有些程序可以直接在項目中使用,無需二次開發(fā)。
q 快速掌握 注重技術原理和實際應用的高度融合,通過循序漸進的內容組織,幫助讀者快速掌握和應用Struts 2框架技術。
q 隨書光盤 本書為實例配備了視頻教學文件,讀者可以通過視頻文件更加直觀地學習Struts 2框架知識。
q 網站技術支持 讀者在學習或者工作的過程中,如果遇到實際問題,可以直接登錄www.itzcn.com與我們取得聯(lián)系,我們會在第一時間內給予幫助。
讀者對象
本書具有知識全面、實例精彩、指導性強的特點,力求以全面的知識及豐富的實例來指導讀者透徹地學習Struts 2框架和相關方面的知識。本書可以作為Struts 2框架的入門書籍,也可以幫助中級讀者提高技能,對高級讀者也有一定的啟發(fā)意義。
本書適合以下人員閱讀學習。
q 系統(tǒng)開發(fā)人員。
q 系統(tǒng)維護人員。
q Struts 2初學者。
q MVC框架編程人員。
q 各大中專院校的在校學生和相關授課老師。
除了封面署名人員之外,參與本書編寫的人員還有馬海軍、李海慶、陶麗、王詠梅、康顯麗、郝軍啟、朱俊成、宋強、孫洪葉、袁江濤、張東平、吳鵬、王新偉、劉青鳳、湯莉、冀明、王超英、王丹花、閆琰、張麗莉、李衛(wèi)平、王慧、牛紅惠、丁國慶、黃錦剛、李旎、王中行、李志國等。在編寫過程中難免會有漏洞,歡迎讀者通過我們的網站www.itzcn.com與我們聯(lián)系,幫助我們改正提高。