javascript
深入浅出 SpringMVC - 2 提升篇
原創播客,如需轉載請注明出處。原文地址:http://www.cnblogs.com/crawl/p/7697738.html?
前言:
本篇筆記是繼?深入淺出 SpringMVC - 1?后的續篇,主要介紹了 SpringMVC 的實際小應用,包括?SpringMVC 的數據格式化、使用 JSR 303 驗證標準?在?SpringMVC 中進行數據的校驗、SpringMVC 結合 Ajax 在請求處理器中返回 JSON、SpringMVC 的國際化及國際化錯誤消息的顯示、使用 SpringMVC 的進行文件的上傳與下載、在 SpringMVC 中自定義攔截器、SpringMVC 中的異常處理、Spring 整合 SpringMVC?進行了詳細的介紹。
筆記中提供了大量的代碼示例,需要說明的是,大部分代碼示例都是以圖片的形式展示的,所有的圖片都是來自本人所敲代碼的截圖,不足之處,請大家指正~
若有疑惑或者需要本系列分享中的資料工具,敬請聯系 qingqing_crawl@163.com
十二、數據的格式化
1. 時間日期格式化???時間日期的字符串 ---> Date 類型
1)在 SpringMVC 的配置文件中配置:<mvc:annotation-driven />?
2)在 JavaBean 的對應 Date 類型的屬性上添加?@DateTimeFormat(pattern="yyyy-MM-dd")?注解
2. 數值的格式化
1)在 SpringMVC 的配置文件中配置:<mvc:annotation-driven>?
2)在 JavaBean 的對應數值類型的屬性上添加?@NumberFormat(pattern="#,###,###.#")?#代表數字
3. 獲取數據格式化出錯信息:使用?BindingResult
十三、使用?JSR 303 驗證標準?在 SpringMVC 中進行數據的校驗
1. 加入 Hibernate Validate 的 jar 包:hibernate-validator-5.0.0.CR2\dist 路徑下
加入hibernate-validator-5.0.0.CR2\dist\lib\required 目錄下的的出去 el 的另 3 個 jar 包
2. 在 SpringMVC 的配置文件中配置?<mvc:annotation-driven />
3.在 JavaBean 對應的屬性中添加所需的注解
4. 在?請求控制器對應的方法中為 JavaBean 添加?@Valid 注解
5.出錯之后頁面的去向
6.在 jsp 頁面顯示錯誤信息
7. 定制和國際化錯誤信息
1)創建國際化資源文件?i18n.properties
?
2) 在 SpringMVC 的配置文件中配合國際化資源文件
十四、SpringMVC 的請求處理器中返回 JSON
1. 導入 3 個 jar 包:\jackson\SpringMVC_JSON 目錄下的(此目錄是樓主為了方便自定義的目錄~~,大家只需注意一下的 jar 包)
?
2. jsp 頁面創建測試連接,發送 Ajax
3.?請求處理器類的目標方法 直接返回所需要的數組或集合,并為目標方法添加?@ResponseBody?注解:
?
補:HttpMessageConverter?的使用:
1.?@RequestBody?修飾入參?????@ResponseBody?修飾方法??二者不必同時使用
1)模擬文件上傳操作:
① 表單準備:
② 目標方法
2.?HttpEntity<T>?修飾入參?和?ResponseEntity<T>?修飾返回值
1)使用?ResponseEntity<T>?模擬文件下載操作
十五、SpringMVC 的國際化
進行國際化首先要配置?3 個國際化資源文件
?
然后在 SpringMVC 的配置文件中配置國際化資源文件
?
1. 在頁面上能夠根據瀏覽器語言設置的情況對文本(不是內容), 時間, 數值進行本地化處理 解決:?使用 JSTL 的 fmt 標簽
1)i18n.jsp 中
2.如何在請求處理器類的目標方法中獲取國際化資源文件 Locale 對應的消息?解決:在請求處理器類中注入?ResourceBundleMessageSource?的實例, 使用其對應的 getMessage 方法即可
3.通過超鏈接切換 Locale, 而不再依賴于瀏覽器的語言設置情況
1)jsp 頁面配置超鏈接
?
2)SpringMVC 的配置文件中配置?SessionLocaleResolver?和?LocaleChangeInterceptor?攔截器
?
十六、SpringMVC 的文件上傳與下載
1.SpringMVC 中的文件上傳依賴 apache-commons-fileupload 組件,所以要導入 jar 包 apache-commons\commons-fileupload-1.2.1\lib 下的第一個 jar 包
2.apache-commons-fileupload?依賴于 commons-io?,所以導入 apache-commons\commons-io-2.0 下的 io 包
3.SpringMVC?的配置文件中配置 MultipartResolver
4.準備文件上傳的表單
?
5.請求處理器中編寫目標方法
?
補:文件的下載見 十五 節 補充中的第 2 小節
十七、自定義攔截器
1. 如何定義?
1)創建一個攔截器類實現?HandlerInterceptor?接口,實現其中的方法
2)在 SpringMVC 配置文件中進行配置
2. 自定義攔截器中的三個方法
3.攔截器的進一步配置
十八、SpringMVC 中的異常處理
1.在 SpringMVC 的配置文件中配置?<mvc:annotation-driven />
2.模擬異常
3.@ExceptionHandler?注解標注方法進行異常的處理
4.?@ControllerAdvice?注解用來標注異常處理類
5.?@ResponseStatus?既可以用來標注自定義異常類,也可以標注方法
1)自定義異常類
3)@ResponseStatus?修飾方法
6. 在 SpringMVC 中使用?SimpleMappingExceptionResolver?來映射異常
1)模擬數組下標越界異常
2)在 SpringMVC 的配置文件中進行映射異常
十九、Spring 整合 SpringMVC
1.是否需要整合?
1)需要: 通常情況下, 類似于數據源, 事務, 整合其他框架都是放在 Spring 的配置文件中(而不是放在 SpringMVC 的配置文件中).實際上放入 Spring 配置文件對應的 IOC 容器中的還有 Service 和 Dao.
?2) 不需要: 都放在 SpringMVC 的配置文件中. 也可以分多個 Spring 的配置文件, 然后使用 import 節點導入其他的配置文件
2.整合時常見問題及解決辦法
問題:若 Spring 的 IOC 容器和 SpringMVC 的 IOC 容器掃描的包有重合的部分, 就會導致有的 bean 會被創建 2 次.
解決:
1) 使 Spring 的 IOC 容器掃描的包和 SpringMVC 的 IOC 容器掃描的包沒有重合的部分. (不方便實現)
2.)可以使用?exclude-filter 和 include-filter?子節點來規定只能掃描的注解?
3.SpringIOC 容器和 SpringMVC IOC 容器的關系
SpringMVC?的 IOC 容器中的 bean 可以來引用 Spring IOC 容器中的 bean.反之則不行. Spring IOC 容器中的 bean 卻不能來引用 SpringMVC IOC 容器中的 bean!
?
轉載于:https://www.cnblogs.com/crawl/p/7697738.html
總結
以上是生活随笔為你收集整理的深入浅出 SpringMVC - 2 提升篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django REST Framewor
- 下一篇: android studio gradl