這章講解一下springmvc的數據回顯和自定義異常處理器的使用,兩個都很簡單
--WZY
一、數據回顯技術
Springmvc默認支持對pojo類型的數據回顯,默認不支持簡單類型的數據回顯
1.1、什么是數據回顯?
在信息校驗時,如果發生校驗錯誤,那么把校驗的數據信息,依然停留在當前頁面,這就是數據回顯
1.2、pojo的數據回顯
Springmvc會把形參中pojo參數,放到request域中,key為pojo參數的類型首字母小寫,也就是如果pojo參數為 Items items,那么就會將其items放到request域中,相當於request.setAttribute("items",items); key為pojo參數類型首字母小寫的意思就是這
如果想使用pojo的默認回顯,那么jsp中獲取值的key就應該和pojo參數的類型首字母小寫保持一致即可。
1.3、默認回顯案例
controller
jsp頁面
分析:按照1.2的分析過程,就可以理解這里為什么會回顯了,原因springmvc會將形參中的items放入request域中,並且key為items。而jsp中的對應這request作用域中的key值就自然可以獲取到相應的數據了。
1.4、使用注解顯式完成回顯
使用ModelAttribute注解來完成數據回顯,它有兩種用法:暴露形參到request域、暴露返回值到request域
1.4.1、暴露形參到request域
將@ModelAttribute("XXX")注解加在想要回顯的形參的pojo對象前面,如下圖所示
controller方法
@ModelAttribute("item")的意思就是將該對象放入request作用域中,並且key為指定的item,則在跳轉后的頁面中就可以通過${item.xxx}來獲取各種數據了。
jsp頁面
1.4.2、暴露返回值到request域
將ModelAttribute注解加到方法上時,這個方法就會在requestmapping之前被調用,並且將返回的對象放入request作用域中。舉例說明這個
controller
在controller類中,創建一個新的方法itemsType,在其方法上加上 @ModelAttribute("itemsType")就會將其返回的對象放入request域中,並且key為自己設定的itemsType,該方法則會在requestmapping之前被調用,也就是在每個要執行的處理方法之前被調用。這個方法中創建的一個map對象,然后返回放入request作用域,沒有任何實際的意義,目的就是為了說明這個效果,一般我們直接使用默認的數據回顯即可,即使需要改動key值,那么也可以使用第一種方案。
jsp頁面
1.5、數據回顯總結
一般直接使用默認數據回顯即可,如果需要改變key,使用注解回顯的第一種方式,這里我們只是了解一下springmvc回顯的原理,理解為什么會回顯就夠了。別遇到了看不懂即可。
二、自定義異常處理器
寫這個自定義異常處理器的目的就是為了發生異常的,我們能夠提供一個更友好的頁面,而不是返回一個404或者500的錯誤提示頁面給用戶看,所以需要自定義一個異常處理器,等發生異常時,我們能夠捕捉到,並且做一定的事情。
2.1、自定義異常
首先自己定義一個異常類,該異常類很簡單,就用來存儲一下異常信息的。內容如下
BusinessException.java
2.2、自定義異常處理器
該處理器就處理一個業務邏輯:如果捕捉到自定義異常,那么久把自定義異常的錯誤信息取出。如果捕捉到運行時異常,那么就給出一個錯誤信息“未知錯誤"。
BusinessExceptionResolver
2.3、配置異常處理器
就是覆蓋原先默認的異常處理器,沒配置就是使用默認的,默認的就是系統自帶的。拿到了異常就直接按我們經常顯示404或者500或者別的錯誤信息的頁面返回。但是通過我們上面自定義的異常處理器,當有異常時就捕捉到(為什么能捕捉到呢?所以為了讓其能夠捕捉到,所以我們需要配置我們自定義的異常處理器,這樣有了異常才會交給它來處理),然后進行處理,然后在轉到我們專門顯示錯誤的頁面
2.4、錯誤頁面
隨便配置一個,用來顯示錯誤信息即可,要美化等其他的就另說
error.jsp
2.5、異常測試
在controller類中的方法拋出一個自定義異常即可,然后訪問該方法,看結果是不是跳轉到了我們期望的錯誤頁面,
或者拋出一個運行時異常,測試我們編寫的異常處理器是否按我們的理想中狀態進行下去。
三、總結
數據回顯懂原理即可,自定義異常處理器需要的時候要知道如何配置即可。