天天看點

springmvc(五) 資料回顯與自定義異常處理器

一、資料回顯技術

      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值,那麼也可以使用第一種方案。

      1.5、資料回顯總結

        一般直接使用預設資料回顯即可,如果需要改變key,使用注解回顯的第一種方式,這裡我們隻是了解一下springmvc回顯的原理,了解為什麼會回顯就夠了。别遇到了看不懂即可。

二、自定義異常處理器

      寫這個自定義異常處理器的目的就是為了發生異常的,我們能夠提供一個更友好的頁面,而不是傳回一個404或者500的錯誤提示頁面給使用者看,是以需要自定義一個異常處理器,等發生異常時,我們能夠捕捉到,并且做一定的事情。

      2.1、自定義異常

        首先自己定義一個異常類,該異常類很簡單,就用來存儲一下異常資訊的。内容如下

        BusinessException.java

      2.2、自定義異常處理器

        該處理器就處理一個業務邏輯:如果捕捉到自定義異常,那麼久把自定義異常的錯誤資訊取出。如果捕捉到運作時異常,那麼就給出一個錯誤資訊“未知錯誤"。        

        BusinessExceptionResolver

      2.3、配置異常處理器

        就是覆寫原先預設的異常處理器,沒配置就是使用預設的,預設的就是系統自帶的。拿到了異常就直接按我們經常顯示404或者500或者别的錯誤資訊的頁面傳回。但是通過我們上面自定義的異常處理器,當有異常時就捕捉到(為什麼能捕捉到呢?是以為了讓其能夠捕捉到,是以我們需要配置我們自定義的異常處理器,這樣有了異常才會交給它來處理),然後進行處理,然後在轉到我們專門顯示錯誤的頁面

      2.4、錯誤頁面

        随便配置一個,用來顯示錯誤資訊即可,要美化等其他的就另說

        error.jsp

      2.5、異常測試

        在controller類中的方法抛出一個自定義異常即可,然後通路該方法,看結果是不是跳轉到了我們期望的錯誤頁面,

        或者抛出一個運作時異常,測試我們編寫的異常處理器是否按我們的理想中狀态進行下去。

三、總結

      資料回顯懂原理即可,自定義異常處理器需要的時候要知道如何配置即可。