關(guān)于我們
書單推薦
新書推薦
|
Spring MVC開發(fā)技術(shù)指南
本書以大量的實(shí)例介紹了Spring MVC子框架應(yīng)用的方法和技術(shù), 同時(shí)以大量的工程實(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)換和格式化、文件上傳和下載、國際化、輸入校驗(yàn)、EL與JSTL以及名片管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)等內(nèi)容。
1.本書從Spring MVC基礎(chǔ)開始講解,逐步深入到Spring MVC開發(fā)技術(shù),內(nèi)容由易到難,講解由淺入深。
2.包含大量實(shí)例,包括簡單的代碼演示,較大應(yīng)用程序的實(shí)現(xiàn)步驟,方便閱讀和實(shí)現(xiàn)。 3.每章包含實(shí)踐環(huán)節(jié)與課后習(xí)題,幫助讀者鞏固所學(xué)知識(shí),提高編程能力。 4. 可作為高等院校相關(guān)專業(yè)的教材,也可作為教輔資料,還可作為技術(shù)開發(fā)人員的參考書。 5.本書提供配套電子課件、源代碼以及實(shí)踐環(huán)節(jié)與課后習(xí)題的參考答案,讀者可登錄清華大學(xué)出版社網(wǎng)站下載,也可加入教材交流QQ群(46696527)下載。
目前,盡管市面上有許多與Spring框架有關(guān)的書籍,但單獨(dú)介紹Spring MVC子框架的書籍還寥寥無幾。而且相關(guān)書籍非常注重知識(shí)的系統(tǒng)性,使得知識(shí)體系結(jié)構(gòu)過于全面、龐大。這種知識(shí)體系過于龐大的書籍不太適合作為高校計(jì)算機(jī)相關(guān)專業(yè)的教材。同時(shí),許多教師在教學(xué)過程中,非常希望教材本身能引導(dǎo)學(xué)生盡可能地參與到教學(xué)活動(dòng)中,因此本書的重點(diǎn)不是簡單地介紹Spring MVC子框架的基礎(chǔ)知識(shí),而是大量的實(shí)例與實(shí)踐環(huán)節(jié)。讀者通過本書可以快速地掌握Spring MVC子框架,提高Java Web應(yīng)用的開發(fā)能力。全書共10章,各章的具體內(nèi)容如下:
第1章重點(diǎn)講解MVC的設(shè)計(jì)思想以及Spring MVC開發(fā)環(huán)境的構(gòu)建。 第2章詳細(xì)講解基于注解的控制器、Controller接收請(qǐng)求參數(shù)的方式以及如何編寫請(qǐng)求處理方法,是本書的重點(diǎn)內(nèi)容之一。 第3章介紹類型轉(zhuǎn)換器和格式化轉(zhuǎn)換器,包括內(nèi)置的類型轉(zhuǎn)換器和格式化轉(zhuǎn)換器以及自定義類型轉(zhuǎn)換器和格式化轉(zhuǎn)換器。 第4章講解數(shù)據(jù)綁定和表單標(biāo)簽庫,是本書的重點(diǎn)內(nèi)容之一。 第5章詳細(xì)講解Spring MVC框架的輸入驗(yàn)證體系,包括Spring驗(yàn)證和JSR303驗(yàn)證,是本書的重點(diǎn)內(nèi)容之一。 第6章介紹Spring MVC國際化的實(shí)現(xiàn)方法。 第7章講解如何使用Spring MVC框架進(jìn)行文件的上傳與下載。 第8章詳細(xì)講解如何使用Spring MVC框架進(jìn)行異常的統(tǒng)一處理,是本書的重點(diǎn)內(nèi)容之一。 第9章介紹EL與JSTL的基本用法。 第10章是本書的重點(diǎn)內(nèi)容之一,它將前面章節(jié)的知識(shí)進(jìn)行綜合,詳細(xì)地講解了如何使用Spring MVC框架來開發(fā)一個(gè)Web應(yīng)用(名片管理系統(tǒng))。 本書特別注重引導(dǎo)學(xué)生參與課堂教學(xué)活動(dòng),適合作為大學(xué)計(jì)算機(jī)及相關(guān)專業(yè)的教材或教學(xué)參考書,也適合作為Spring MVC應(yīng)用開發(fā)人員的參考用書。 為便于教學(xué),本書配有教學(xué)課件、源代碼以及實(shí)踐環(huán)節(jié)與課后習(xí)題參考答案,讀者可從清華大學(xué)出版社網(wǎng)站免費(fèi)下載,也可加入教材交流QQ群(46696527)下載。 由于編者水平有限,書中難免會(huì)有不足之處,敬請(qǐng)廣大讀者批評(píng)指正。 編 者 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 第一個(gè)Spring MVC應(yīng)用 12 1.3.1 應(yīng)用首頁 12 1.3.2 實(shí)現(xiàn)Controller 13 1.3.3 配置Controller 14 1.3.4 應(yīng)用的其他頁面 14 1.3.5 發(fā)布并運(yùn)行Spring MVC應(yīng)用 14 1.3.6 實(shí)踐環(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 編寫請(qǐng)求處理方法 20 2.2 Controller接收請(qǐng)求參數(shù)的常見方式 21 2.2.1 通過實(shí)體bean接收請(qǐng)求參數(shù) 21 2.2.2 通過處理方法的形參接收請(qǐng)求參數(shù) 28 2.2.3 通過HttpServletRequest接收請(qǐng)求參數(shù) 29 2.2.4 通過@PathVariable接收URL中的請(qǐng)求參數(shù) 29 2.2.5 通過@RequestParam接收請(qǐng)求參數(shù) 30 2.2.6 通過@ModelAttribute接收請(qǐng)求參數(shù) 31 2.2.7 實(shí)踐環(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 實(shí)踐環(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 實(shí)踐環(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 實(shí)踐環(huán)節(jié) 68 4.5 本章小結(jié) 69 習(xí)題4 69 第5章?數(shù)據(jù)驗(yàn)證 70 5.1 數(shù)據(jù)驗(yàn)證概述 70 5.1.1 客戶端驗(yàn)證 70 5.1.2 服務(wù)器端驗(yàn)證 71 5.2 Spring驗(yàn)證器 71 5.2.1 Validator接口 71 5.2.2 ValidationUtils類 71 5.2.3 驗(yàn)證示例 72 5.2.4 實(shí)踐環(huán)節(jié) 80 5.3 JSR 303驗(yàn)證 81 5.3.1 JSR 303驗(yàn)證配置 81 5.3.2 標(biāo)注類型 82 5.3.3 驗(yàn)證示例 83 5.3.4 實(shí)踐環(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 實(shí)踐環(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 實(shí)踐環(huán)節(jié) 111 7.2 文件下載 111 7.2.1 文件下載的實(shí)現(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隱含對(duì)象 133 9.1.3 實(shí)踐環(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 實(shí)踐環(huán)節(jié) 146 9.3 本章小結(jié) 146 習(xí)題9 146 第10章?名片管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 148 10.1 系統(tǒng)設(shè)計(jì) 148 10.1.1 系統(tǒng)功能需求 148 10.1.2 系統(tǒng)模塊劃分 148 10.2 數(shù)據(jù)庫設(shè)計(jì) 149 10.2.1 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì) 149 10.2.2 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì) 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è)計(jì) 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實(shí)現(xiàn) 164 10.5.2 Service實(shí)現(xiàn) 168 10.5.3 Dao實(shí)現(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實(shí)現(xiàn) 187 10.6.2 Service實(shí)現(xiàn) 189 10.6.3 Dao實(shí)現(xiàn) 190 10.6.4 注冊(cè) 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框架中,需要收集用戶請(qǐng)求參數(shù),并將請(qǐng)求參數(shù)傳遞給應(yīng)用的控制器組件。此時(shí)存在一個(gè)問題,所有的請(qǐng)求參數(shù)類型只能是字符串?dāng)?shù)據(jù)類型,但Java是強(qiáng)類型語言,所以Spring MVC框架必須將這些字符串請(qǐng)求參數(shù)轉(zhuǎn)換成相應(yīng)的數(shù)據(jù)類型。 Spring MVC框架不僅提供了強(qiáng)大的類型轉(zhuǎn)換和格式化機(jī)制,而且開發(fā)者還可以方便地開發(fā)出自己的類型轉(zhuǎn)換器和格式化轉(zhuǎn)換器,完成字符串和各種數(shù)據(jù)類型之間的轉(zhuǎn)換。這正是學(xué)習(xí)本章的目的所在。 3.1 類型轉(zhuǎn)換的意義 本節(jié)通過一個(gè)簡單應(yīng)用(JSP + Servlet)為示例來介紹類型轉(zhuǎn)換的意義。如圖3.1所示地添加商品頁面,該頁面用于收集用戶輸入的商品信息。商品信息包括:商品名稱(字符串類型String)、商品價(jià)格(雙精度浮點(diǎn)類型double)、商品數(shù)量(整數(shù)類型int)。 圖3.1 添加商品信息的收集頁面 addGoods.jsp頁面的代碼如下: 商品名稱: 商品價(jià)格: 商品數(shù)量: 希望頁面收集到的數(shù)據(jù)提交到addGoods的Servlet(AddGoodsServlet類),該Servlet將這些請(qǐng)求信息封裝成一個(gè)Goods類的值對(duì)象。 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值對(duì)象 Goods goods = new Goods(goodsname, newgoodsprice, newgoodsnumber); //將goods值對(duì)象傳遞給數(shù)據(jù)訪問層,進(jìn)行添加操作,代碼省略 … } } 對(duì)于上面這個(gè)應(yīng)用而言,開發(fā)者需要自己在Servlet中進(jìn)行類型轉(zhuǎn)換,并將其封裝成值對(duì)象。這些類型轉(zhuǎn)換操作全部手工完成,非常煩瑣。 對(duì)于Spring MVC框架而言,它必須將請(qǐng)求參數(shù)轉(zhuǎn)換成值對(duì)象類里各屬性對(duì)應(yīng)的數(shù)據(jù)類型——這就是類型轉(zhuǎn)換的意義。 3.2 Converter Spring MVC框架的Converter是一個(gè)可以將一種數(shù)據(jù)類型轉(zhuǎn)換成另一種數(shù)據(jù)類型的接口,這里S表示源類型,T表示目標(biāo)類型。開發(fā)者在實(shí)際應(yīng)用中,使用框架內(nèi)置的類型轉(zhuǎn)換器基本就夠了,但有時(shí)需要編寫具有特定功能的類型轉(zhuǎn)換器。 3.2.1 內(nèi)置的類型轉(zhuǎn)換器 在Spring MVC框架中,對(duì)于常用的數(shù)據(jù)類型,開發(fā)者無須創(chuàng)建自己的類型轉(zhuǎn)換器,因?yàn)镾pring 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)換,取字符串第一個(gè)字符。 NumberToCharacterConverter:數(shù)字子類型到Character轉(zhuǎn)換。 CharacterToNumberFactory:Character到數(shù)字子類型轉(zhuǎn)換。 StringToEnumConverterFactory:String到枚舉類型轉(zhuǎn)換,通過Enum.valueOf將字符串轉(zhuǎn)換為需要的枚舉類型。 EnumToStringConverter:枚舉類型到String轉(zhuǎn)換,返回枚舉對(duì)象的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)類型和源類型兼容,直接返回源對(duì)象;否則返回?cái)?shù)組的第一個(gè)元素并進(jìn)行類型轉(zhuǎn)換。 ObjectToArrayConverter:Object到單元素?cái)?shù)組轉(zhuǎn)換。 CollectionToStringConverter:任意集合(List、Set)到String轉(zhuǎn)換。 StringToCollectionConverter:String到集合(List、Set)轉(zhuǎn)換,默認(rèn)通過“,”分隔,且去除字符串的兩邊空格(trim)。 CollectionToObjectConverter:任意集合到任意Object的轉(zhuǎn)換,如果目標(biāo)類型和源類型兼容,直接返回源對(duì)象;否則返回集合的第一個(gè)元素并進(jìn)行類型轉(zhuǎn)換。 ……
你還可能感興趣
我要評(píng)論
|