關(guān)于我們
書單推薦
新書推薦
|
Spring MVC開發(fā)技術(shù)指南
本書以大量的實例介紹了Spring MVC子框架應(yīng)用的方法和技術(shù), 同時以大量的工程實踐環(huán)節(jié)鞏固這些方法和技術(shù), 力圖使學(xué)生達(dá)到“做中學(xué), 學(xué)中做”的狀態(tài)。全書論述了Spring MVC子框架概述、開發(fā)環(huán)境構(gòu)建、基本流程、基本配置以及開發(fā)步驟、控制器、數(shù)據(jù)綁定和表單標(biāo)簽、類型轉(zhuǎn)換和格式化、文件上傳和下載、國際化、輸入校驗、EL與JSTL以及名片管理系統(tǒng)的設(shè)計與實現(xiàn)等內(nèi)容。
1.本書從Spring MVC基礎(chǔ)開始講解,逐步深入到Spring MVC開發(fā)技術(shù),內(nèi)容由易到難,講解由淺入深。
2.包含大量實例,包括簡單的代碼演示,較大應(yīng)用程序的實現(xiàn)步驟,方便閱讀和實現(xiàn)。 3.每章包含實踐環(huán)節(jié)與課后習(xí)題,幫助讀者鞏固所學(xué)知識,提高編程能力。 4. 可作為高等院校相關(guān)專業(yè)的教材,也可作為教輔資料,還可作為技術(shù)開發(fā)人員的參考書。 5.本書提供配套電子課件、源代碼以及實踐環(huán)節(jié)與課后習(xí)題的參考答案,讀者可登錄清華大學(xué)出版社網(wǎng)站下載,也可加入教材交流QQ群(46696527)下載。
目前,盡管市面上有許多與Spring框架有關(guān)的書籍,但單獨介紹Spring MVC子框架的書籍還寥寥無幾。而且相關(guān)書籍非常注重知識的系統(tǒng)性,使得知識體系結(jié)構(gòu)過于全面、龐大。這種知識體系過于龐大的書籍不太適合作為高校計算機相關(guān)專業(yè)的教材。同時,許多教師在教學(xué)過程中,非常希望教材本身能引導(dǎo)學(xué)生盡可能地參與到教學(xué)活動中,因此本書的重點不是簡單地介紹Spring MVC子框架的基礎(chǔ)知識,而是大量的實例與實踐環(huán)節(jié)。讀者通過本書可以快速地掌握Spring MVC子框架,提高Java Web應(yīng)用的開發(fā)能力。全書共10章,各章的具體內(nèi)容如下:
第1章重點講解MVC的設(shè)計思想以及Spring MVC開發(fā)環(huán)境的構(gòu)建。 第2章詳細(xì)講解基于注解的控制器、Controller接收請求參數(shù)的方式以及如何編寫請求處理方法,是本書的重點內(nèi)容之一。 第3章介紹類型轉(zhuǎn)換器和格式化轉(zhuǎn)換器,包括內(nèi)置的類型轉(zhuǎn)換器和格式化轉(zhuǎn)換器以及自定義類型轉(zhuǎn)換器和格式化轉(zhuǎn)換器。 第4章講解數(shù)據(jù)綁定和表單標(biāo)簽庫,是本書的重點內(nèi)容之一。 第5章詳細(xì)講解Spring MVC框架的輸入驗證體系,包括Spring驗證和JSR303驗證,是本書的重點內(nèi)容之一。 第6章介紹Spring MVC國際化的實現(xiàn)方法。 第7章講解如何使用Spring MVC框架進(jìn)行文件的上傳與下載。 第8章詳細(xì)講解如何使用Spring MVC框架進(jìn)行異常的統(tǒng)一處理,是本書的重點內(nèi)容之一。 第9章介紹EL與JSTL的基本用法。 第10章是本書的重點內(nèi)容之一,它將前面章節(jié)的知識進(jìn)行綜合,詳細(xì)地講解了如何使用Spring MVC框架來開發(fā)一個Web應(yīng)用(名片管理系統(tǒng))。 本書特別注重引導(dǎo)學(xué)生參與課堂教學(xué)活動,適合作為大學(xué)計算機及相關(guān)專業(yè)的教材或教學(xué)參考書,也適合作為Spring MVC應(yīng)用開發(fā)人員的參考用書。 為便于教學(xué),本書配有教學(xué)課件、源代碼以及實踐環(huán)節(jié)與課后習(xí)題參考答案,讀者可從清華大學(xué)出版社網(wǎng)站免費下載,也可加入教材交流QQ群(46696527)下載。 由于編者水平有限,書中難免會有不足之處,敬請廣大讀者批評指正。 編 者 2017年2月
第1章?Spring MVC入門 1
1.1 MVC模式與Spring MVC工作原理 1 1.1.1 MVC模式 1 1.1.2 Spring MVC工作原理 2 1.1.3 Spring MVC接口 3 1.2 Spring MVC的開發(fā)環(huán)境 3 1.2.1 Spring的下載與安裝 6 1.2.2 使用Eclipse開發(fā)Spring MVC應(yīng)用 6 1.3 第一個Spring MVC應(yīng)用 12 1.3.1 應(yīng)用首頁 12 1.3.2 實現(xiàn)Controller 13 1.3.3 配置Controller 14 1.3.4 應(yīng)用的其他頁面 14 1.3.5 發(fā)布并運行Spring MVC應(yīng)用 14 1.3.6 實踐環(huán)節(jié) 15 1.4 視圖解析器 15 1.5 本章小結(jié) 16 習(xí)題1 16 第2章?Controller 17 2.1 基于注解的控制器 17 2.1.1 Controller注解類型 18 2.1.2 RequestMapping注解類型 19 2.1.3 編寫請求處理方法 20 2.2 Controller接收請求參數(shù)的常見方式 21 2.2.1 通過實體bean接收請求參數(shù) 21 2.2.2 通過處理方法的形參接收請求參數(shù) 28 2.2.3 通過HttpServletRequest接收請求參數(shù) 29 2.2.4 通過@PathVariable接收URL中的請求參數(shù) 29 2.2.5 通過@RequestParam接收請求參數(shù) 30 2.2.6 通過@ModelAttribute接收請求參數(shù) 31 2.2.7 實踐環(huán)節(jié) 32 2.3 重定向與轉(zhuǎn)發(fā) 32 2.4 應(yīng)用@Autowired和@Service進(jìn)行依賴注入 33 2.5 @ModelAttribute 36 2.6 本章小結(jié) 37 習(xí)題2 38 第3章?類型轉(zhuǎn)換和格式化 39 3.1 類型轉(zhuǎn)換的意義 39 3.2 Converter 41 3.2.1 內(nèi)置的類型轉(zhuǎn)換器 41 3.2.2 自定義類型轉(zhuǎn)換器 43 3.2.3 實踐環(huán)節(jié) 47 3.3 Formatter 47 3.3.1 內(nèi)置的格式化轉(zhuǎn)換器 48 3.3.2 自定義格式化轉(zhuǎn)換器 48 3.3.3 實踐環(huán)節(jié) 53 3.4 本章小結(jié) 53 習(xí)題3 53 第4章?數(shù)據(jù)綁定和表單標(biāo)簽庫 54 4.1 數(shù)據(jù)綁定 54 4.2 表單標(biāo)簽庫 54 4.2.1 表單標(biāo)簽 55 4.2.2 input標(biāo)簽 56 4.2.3 password標(biāo)簽 56 4.2.4 hidden標(biāo)簽 56 4.2.5 textarea標(biāo)簽 57 4.2.6 checkbox標(biāo)簽 57 4.2.7 checkboxes標(biāo)簽 57 4.2.8 radiobutton標(biāo)簽 58 4.2.9 radiobuttons標(biāo)簽 58 4.2.10 select標(biāo)簽 58 4.2.11 options標(biāo)簽 58 4.2.12 errors標(biāo)簽 59 4.3 數(shù)據(jù)綁定應(yīng)用 59 4.3.1 應(yīng)用的相關(guān)配置 59 4.3.2 領(lǐng)域模型 61 4.3.3 Service層 62 4.3.4 Controller層 63 4.3.5 View層 64 4.3.6 測試應(yīng)用 67 4.4 實踐環(huán)節(jié) 68 4.5 本章小結(jié) 69 習(xí)題4 69 第5章?數(shù)據(jù)驗證 70 5.1 數(shù)據(jù)驗證概述 70 5.1.1 客戶端驗證 70 5.1.2 服務(wù)器端驗證 71 5.2 Spring驗證器 71 5.2.1 Validator接口 71 5.2.2 ValidationUtils類 71 5.2.3 驗證示例 72 5.2.4 實踐環(huán)節(jié) 80 5.3 JSR 303驗證 81 5.3.1 JSR 303驗證配置 81 5.3.2 標(biāo)注類型 82 5.3.3 驗證示例 83 5.3.4 實踐環(huán)節(jié) 87 5.4 本章小結(jié) 88 習(xí)題5 88 第6章?國際化 89 6.1 程序國際化概述 89 6.1.1 Java國際化的思想 89 6.1.2 Java支持的語言和國家 90 6.1.3 Java程序國際化 91 6.1.4 帶占位符的國際化信息 92 6.1.5 實踐環(huán)節(jié) 93 6.2 Spring MVC的國際化 93 6.2.1 Spring MVC加載資源屬性文件 94 6.2.2 語言區(qū)域的選擇 94 6.2.3 使用message標(biāo)簽顯示國際化信息 95 6.3 用戶自定義切換語言示例 96 6.4 本章小結(jié) 101 習(xí)題6 101 第7章?文件的上傳與下載 102 7.1 文件上傳 102 7.1.1 commons-fileupload組件 102 7.1.2 基于表單的文件上傳 103 7.1.3 MultipartFile接口 103 7.1.4 單文件上傳 104 7.1.5 多文件上傳 109 7.1.6 實踐環(huán)節(jié) 111 7.2 文件下載 111 7.2.1 文件下載的實現(xiàn)方法 111 7.2.2 文件下載過程 112 7.3 本章小結(jié) 115 習(xí)題7 115 第8章?統(tǒng)一異常處理 117 8.1 示例介紹 117 8.2 SimpleMappingExceptionResolver類 124 8.3 HandlerExceptionResolver接口 126 8.4 @ExceptionHandler注解 127 8.5 本章小結(jié) 129 習(xí)題8 129 第9章?EL與JSTL 130 9.1 表達(dá)式語言EL 130 9.1.1 基本語法 130 9.1.2 EL隱含對象 133 9.1.3 實踐環(huán)節(jié) 136 9.2 JSP標(biāo)準(zhǔn)標(biāo)簽庫JSTL 136 9.2.1 配置JSTL 136 9.2.2 核心標(biāo)簽庫之通用標(biāo)簽 137 9.2.3 核心標(biāo)簽庫之流程控制標(biāo)簽 138 9.2.4 核心標(biāo)簽庫之迭代標(biāo)簽 140 9.2.5 函數(shù)標(biāo)簽庫 142 9.2.6 實踐環(huán)節(jié) 146 9.3 本章小結(jié) 146 習(xí)題9 146 第10章?名片管理系統(tǒng)的設(shè)計與實現(xiàn) 148 10.1 系統(tǒng)設(shè)計 148 10.1.1 系統(tǒng)功能需求 148 10.1.2 系統(tǒng)模塊劃分 148 10.2 數(shù)據(jù)庫設(shè)計 149 10.2.1 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計 149 10.2.2 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計 150 10.3 系統(tǒng)管理 150 10.3.1 導(dǎo)入相關(guān)的jar包 150 10.3.2 JSP頁面管理 151 10.3.3 包管理 156 10.3.4 配置文件管理 157 10.4 組件設(shè)計 160 10.4.1 工具類 160 10.4.2 統(tǒng)一異常處理 161 10.4.3 登錄權(quán)限控制器 162 10.4.4 數(shù)據(jù)庫統(tǒng)一操作 162 10.5 名片管理 164 10.5.1 Controller實現(xiàn) 164 10.5.2 Service實現(xiàn) 168 10.5.3 Dao實現(xiàn) 170 10.5.4 添加名片 172 10.5.5 查詢名片 174 10.5.6 修改名片 178 10.5.7 刪除名片 183 10.6 用戶相關(guān) 187 10.6.1 Controller實現(xiàn) 187 10.6.2 Service實現(xiàn) 189 10.6.3 Dao實現(xiàn) 190 10.6.4 注冊 192 10.6.5 登錄 195 10.6.6 修改密碼 197 10.6.7 基本信息 199 10.7 安全退出 201 10.8 本章小結(jié) 201 參考文獻(xiàn) 202
第3章
類型轉(zhuǎn)換和格式化 學(xué)習(xí)目的與要求 本章主要學(xué)習(xí)類型轉(zhuǎn)換器和格式化轉(zhuǎn)換器。通過本章的學(xué)習(xí),應(yīng)該理解類型轉(zhuǎn)換器和格式化轉(zhuǎn)換器的原理,掌握類型轉(zhuǎn)換器和格式化轉(zhuǎn)換器的用法。 本章主要內(nèi)容 * Converter * Formatter 在Spring MVC框架中,需要收集用戶請求參數(shù),并將請求參數(shù)傳遞給應(yīng)用的控制器組件。此時存在一個問題,所有的請求參數(shù)類型只能是字符串?dāng)?shù)據(jù)類型,但Java是強類型語言,所以Spring MVC框架必須將這些字符串請求參數(shù)轉(zhuǎn)換成相應(yīng)的數(shù)據(jù)類型。 Spring MVC框架不僅提供了強大的類型轉(zhuǎn)換和格式化機制,而且開發(fā)者還可以方便地開發(fā)出自己的類型轉(zhuǎn)換器和格式化轉(zhuǎn)換器,完成字符串和各種數(shù)據(jù)類型之間的轉(zhuǎn)換。這正是學(xué)習(xí)本章的目的所在。 3.1 類型轉(zhuǎn)換的意義 本節(jié)通過一個簡單應(yīng)用(JSP + Servlet)為示例來介紹類型轉(zhuǎn)換的意義。如圖3.1所示地添加商品頁面,該頁面用于收集用戶輸入的商品信息。商品信息包括:商品名稱(字符串類型String)、商品價格(雙精度浮點類型double)、商品數(shù)量(整數(shù)類型int)。 圖3.1 添加商品信息的收集頁面 addGoods.jsp頁面的代碼如下: 商品名稱: 商品價格: 商品數(shù)量: 希望頁面收集到的數(shù)據(jù)提交到addGoods的Servlet(AddGoodsServlet類),該Servlet將這些請求信息封裝成一個Goods類的值對象。 Goods類的代碼如下: package domain; public class Goods { private String goodsname; private double goodsprice; private int goodsnumber; //無參數(shù)的構(gòu)造方法 public Goods(){} //有參數(shù)的構(gòu)造方法 public Goods(String goodsname, double goodsprice, int goodsnumber) { super(); this.goodsname = goodsname; this.goodsprice = goodsprice; this.goodsnumber = goodsnumber; } //此處省略了setter和getter方法 … } AddGoodsServlet類的代碼如下: package servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import domain.Goods; public class AddGoodsServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); //設(shè)置編碼,防止亂碼 request.setCharacterEncoding("utf-8"); //獲取參數(shù)值 String goodsname = request.getParameter("goodsname"); String goodsprice = request.getParameter("goodsprice"); String goodsnumber = request.getParameter("goodsnumber"); //下面進(jìn)行類型轉(zhuǎn)換 double newgoodsprice = Double.parseDouble(goodsprice); int newgoodsnumber = Integer.parseInt(goodsnumber); //將轉(zhuǎn)換后的數(shù)據(jù)封裝成goods值對象 Goods goods = new Goods(goodsname, newgoodsprice, newgoodsnumber); //將goods值對象傳遞給數(shù)據(jù)訪問層,進(jìn)行添加操作,代碼省略 … } } 對于上面這個應(yīng)用而言,開發(fā)者需要自己在Servlet中進(jìn)行類型轉(zhuǎn)換,并將其封裝成值對象。這些類型轉(zhuǎn)換操作全部手工完成,非常煩瑣。 對于Spring MVC框架而言,它必須將請求參數(shù)轉(zhuǎn)換成值對象類里各屬性對應(yīng)的數(shù)據(jù)類型——這就是類型轉(zhuǎn)換的意義。 3.2 Converter Spring MVC框架的Converter是一個可以將一種數(shù)據(jù)類型轉(zhuǎn)換成另一種數(shù)據(jù)類型的接口,這里S表示源類型,T表示目標(biāo)類型。開發(fā)者在實際應(yīng)用中,使用框架內(nèi)置的類型轉(zhuǎn)換器基本就夠了,但有時需要編寫具有特定功能的類型轉(zhuǎn)換器。 3.2.1 內(nèi)置的類型轉(zhuǎn)換器 在Spring MVC框架中,對于常用的數(shù)據(jù)類型,開發(fā)者無須創(chuàng)建自己的類型轉(zhuǎn)換器,因為Spring MVC框架有許多內(nèi)置的類型轉(zhuǎn)換器完成常用的類型轉(zhuǎn)換。Spring MVC框架提供的內(nèi)置類型轉(zhuǎn)換包括如下幾種類型。 * 標(biāo)量轉(zhuǎn)換器 StringToBooleanConverter:String到boolean類型轉(zhuǎn)換。 ObjectToStringConverter:Object到String轉(zhuǎn)換,調(diào)用toString方法轉(zhuǎn)換。 StringToNumberConverterFactory:String到數(shù)字轉(zhuǎn)換(如Integer、Long等)。 NumberToNumberConverterFactory:數(shù)字子類型(基本類型)到數(shù)字類型(包裝類型)轉(zhuǎn)換。 StringToCharacterConverter:String到Character轉(zhuǎn)換,取字符串第一個字符。 NumberToCharacterConverter:數(shù)字子類型到Character轉(zhuǎn)換。 CharacterToNumberFactory:Character到數(shù)字子類型轉(zhuǎn)換。 StringToEnumConverterFactory:String到枚舉類型轉(zhuǎn)換,通過Enum.valueOf將字符串轉(zhuǎn)換為需要的枚舉類型。 EnumToStringConverter:枚舉類型到String轉(zhuǎn)換,返回枚舉對象的name()值。 StringToLocaleConverter:String到j(luò)ava.util.Locale轉(zhuǎn)換。 PropertiesToStringConverter:java.util.Properties到String轉(zhuǎn)換,默認(rèn)通過ISO-8859-1解碼。 StringToPropertiesConverter:String到j(luò)ava.util.Properties轉(zhuǎn)換,默認(rèn)使用ISO-8859-1編碼。 * 集合、數(shù)組相關(guān)轉(zhuǎn)換器 ArrayToCollectionConverter:任意數(shù)組到任意集合(List、Set)轉(zhuǎn)換。 CollectionToArrayConverter:任意集合到任意數(shù)組轉(zhuǎn)換。 ArrayToArrayConverter:任意數(shù)組到任意數(shù)組轉(zhuǎn)換。 CollectionToCollectionConverter:集合之間的類型轉(zhuǎn)換。 MapToMapConverter:Map之間的類型轉(zhuǎn)換。 ArrayToStringConverter:任意數(shù)組到String轉(zhuǎn)換。 StringToArrayConverter:字符串到數(shù)組的轉(zhuǎn)換,默認(rèn)通過“,”分隔,且去除字符串的兩邊空格(trim)。 ArrayToObjectConverter:任意數(shù)組到Object的轉(zhuǎn)換,如果目標(biāo)類型和源類型兼容,直接返回源對象;否則返回數(shù)組的第一個元素并進(jìn)行類型轉(zhuǎn)換。 ObjectToArrayConverter:Object到單元素數(shù)組轉(zhuǎn)換。 CollectionToStringConverter:任意集合(List、Set)到String轉(zhuǎn)換。 StringToCollectionConverter:String到集合(List、Set)轉(zhuǎn)換,默認(rèn)通過“,”分隔,且去除字符串的兩邊空格(trim)。 CollectionToObjectConverter:任意集合到任意Object的轉(zhuǎn)換,如果目標(biāo)類型和源類型兼容,直接返回源對象;否則返回集合的第一個元素并進(jìn)行類型轉(zhuǎn)換。 ……
你還可能感興趣
我要評論
|