深入淺出 SpringMVC - 2 提升篇

來源:互聯網
上載者:User

標籤:9.png   出錯   logs   自訂   targe   自訂異常   而不是   提升   資料   

前言:

  本篇筆記是繼 深入淺出 SpringMVC - 1 後的續篇,主要介紹了 SpringMVC 的實際小應用,包括 SpringMVC 的資料格式化、使用 JSR 303 驗證標準 在 SpringMVC 中進行資料的校正、SpringMVC 結合 Ajax 在要求處理常式中返回 JSON、SpringMVC 的國際化及國際化錯誤訊息的顯示、使用 SpringMVC 的進行檔案的上傳與下載、在 SpringMVC 中自訂攔截器、SpringMVC 中的異常處理、Spring 整合 SpringMVC 進行了詳細的介紹。

  筆記中提供了大量的程式碼範例,需要說明的是,大部分程式碼範例都是以圖片的形式展示的,所有的圖片都是來自本人所敲代碼的,不足之處,請大家指正~

  若有疑惑或者需要本系列分享中的資料工具,敬請聯絡 [email protected]

十二、資料的格式化

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 目錄下的(此目錄是LZ為了方便自訂的目錄~~,大家只需注意一下的 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!

 

深入淺出 SpringMVC - 2 提升篇

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.