sprintboot-learn(三)

全局異常處理

太簡單,沒有保存示例工程web

方式1:spring

啓動,測試結果:瀏覽器

Value表示捕捉那些異常,是一個異常組,若是有多個異常,能夠用{}括起來。建議都用exception,而後用instenceof判斷,或者自定義一個異常,全部controller都拋出這個異常,而後直接捕獲該自定義異常。springboot

方式2:服務器

其餘不變,把exceptionHandler刪掉,或者註釋掉。在Testcontroller中添加以上exceptionHandler方法(能夠把該方法放進一個父類中,讓全部須要捕獲異常的子類去繼承,因爲子類添加了Controller註解,因此若是寫成父類的話,父類能夠不用加@Controller註解,加了也不會報錯)。mvc

啓動,執行結果:app

這個時候,即便ExceptionHandler沒有註釋掉,也會返回這個,繼承的優先級應該要高些。webapp

總結:兩種方式都使用了@ExceptionHandler註解,一種是使用繼承的方式,優先級高,父類不須要任何註解。第二種是全局,須要在自定義全局異常處理類上加註解@ControllerAdvice。看第二種方法返回的code並非服務器的code,只要請求成功了,服務器狀態碼都是200(已用postman驗證),這裏的400僅僅是咱們返回的一條數據而已。註解@ResponseStatus也沒有起做用。jsp

Jsp支持

示例工程:springboot-jspide

首先添加依賴:

新建文件夾src/main/webapp,webapp必定要放在src/main下面。

第一種(不推薦):

直接返回一張頁面:

第二種:

application.properties配置(至關於springMVC的前綴後綴的那種配置):

Controller:

第三種:

直接返回頁面路徑(註釋掉先後綴的配置)

項目能運行:可是打成jar以後訪問不到jsp了,此問題還未解決。

我的認爲,jsp和使用模板的效果差很少,頁面輸出流程也同樣,都是從服務器端渲染,而後輸出到瀏覽器。

校驗

示例工程:springboot_validate

校驗和springmvc同樣。

不過這裏若是要配置屬性文件的話,mvc是配置的xml文件:以下

可是在springboot中這個配置要換成@Bean的方式配置。

這個配置裏面配置了默認編碼方式爲UTF-8。

固然也能夠像xml裏面同樣配置fileEncodings,可是這個配置是properties屬性,咱們不能像xml同樣直接傳遞一個utf-8的字符串給他。

看圖,能夠知道咱們設置了p.put(key,value),其中key爲setBasename函數的參數,也就是咱們制定的配置文件的名字,這是由於源碼在取的時候是使用的filename爲key來取的。而這個filename必須跟setNasename時候傳入的值如出一轍。這種方式能夠指定每個資源文件的分別用什麼編碼去讀取,若是沒設置就用默認編碼(defaltEncoding)。

這個編碼不能控制spring讀取application.properties文件的編碼,也就是所咱們這個文件的編碼是utf-8讀取的,可是spring本身讀取application.properties資源文件的時候指定編碼方式還得從新spring.messages.encoding=UTF-8使用指定。

application.properties: app.name.null

validateSource.properties: name.null

這個讀取跟spring讀取是兩個東西,能夠看出來咱們讀取的是validateSource.application文件和spring讀取的application.ptoperties,而spring讀取的app.name.null的值,

而校驗的時候輸出的{name.null}是正常的:

至於這個配置文件寫錯誤緣由的,能夠直接使用unicode編碼,idea也支持,並且springboot支持得也很好。

 

over~~~

相關文章
相關標籤/搜索