SpringMvc之常用註解及異常註解

常用註解

1.controller
controller註解用於指示spring類的實例是一個控制器

@Controller用於標記一個類,使用它標記的類就是Spring MVC Controller的對象,即一個控制器。

爲了保證Spring能找到控制器,需要完成兩件事:
①:在Spring MVC的配置文件中引入 spring-context
②:使用<context:component-scan class="指定掃描的包"/>元素,作用爲掃描指定位置的包

2.RequestMapping 

@RequestMapping註解可以用來註釋一個控制器類

除了可以修飾類還可以修飾方法

@RequestMappping註解支持的屬性
①value:用於將指定請求的實例地址映射到方法上
②name:給映射地址一個指定的別名
③method:映射指定的方法類型(post,get)
④consumes:指定請求提交內容的類型
⑤produces:指定返回內容的類型,返回的內容必須是request請求中包含的內容
⑥params:指定request中必須包含的數值
⑦headers:指定必須包含給定的數值時,方法才被執行
⑧path:在方法層上支持相對路徑

RequestMapping-PathVariable註解

@PathVariable 映射 URL 綁定的佔位符
jsp

<a href="springmvc/testPathVariable/1">Test PathVariable</a>


java code

/*** @PathVariable 可以來映射 URL 中的佔位符到目標方法的參數中.* @param id* @return*/
@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable("id") Integer id) 
{
  System.out.println("testPathVariable: " + id);
  return SUCCESS;
}

3.RequestParam

@RequestParam來映射請求參數

value:值即請求參數的參數名
required 該參數是否爲必須,默認爲true
defaultValue: 請求參數的默認值

4.RequestHeader

@RequestHeader映射請求頭(用的機會較少)

5.CookieValue

@CookieValue 映射一個Cookie值(用的機會較少)

6.RequestAttribute

@RequstAttribute 該註解用於訪問由請求處理方法、過濾器或者攔截器創建的、預先存在於Request作用域中的屬性。

7.SessionAttribute

@SessionAttribute 該註解用於訪問由請求處理方法、過濾器或者攔截器創建的、預先存在於Session作用域中的屬性。

8.SessionAttributes

@SessionAttributes 該註解允許我們有選擇的指定Model中的那些屬性轉存到HttpSession對象中

該註解只能放在類的上面,而不能修飾方法

value:可以通過屬性名指定需要放到會話屬性

tapes:也可以通過模型屬性的對象類型指定哪些模型屬性需要放到會話中

9.ModelAttribute(重要)

@ModelAttribute與@RequestAttribute 同時註解不同的方法時,@ModelAttribute要優先被調用

① @ModellAttribute(value=XX"")註釋返回具體類的方法
value的默認值XX,用來指定model屬性名稱,而model屬性值就是@ModellAttribute註釋方法的返回值。

② @ModelAttribute 註釋void返回值的方法(要在方法中加入一個Model類型參數)

將@RequstParam中的參數添加到Model類型中,,便可以通過requestScope.XX的方式獲取屬性值。

③ @ModelAttribute 註解返回具體類的方法
 
將return 的類型存放入Model類型中

④@ModelAttribute與@RequestMapping同時註釋一個方法

@RequestMapping註釋的方法,返回值就不是一個視圖名稱,而是Model的屬性值
Model的屬性值則由@ModelAttribute的value的值指定。

⑤@ModelAttribute註釋一個方法的參數(最常用)
一個對象被@ModelAttribute註解時,前臺控制的值會自動入參道此對象的同名屬性中。

異常註解

爲什麼要用異常註解?

異常會直接拋到瀏覽器中,頁面顯示一大堆錯誤堆棧信息。用戶看到這些錯誤的堆棧信息,往往會一頭霧水,而且錯誤的堆棧信息由於暴露了後臺調用的關係,會存在很大的風險。

1.@ExcepitionHandler
    
一個方法使用了@ExcepitionHandler註解,value=Exception.class表示處理所有的Exception類型異常。當該類拋出異常時,會使用@ExcepitionHandler的方法
去處理異常,不會拋給瀏覽器,被@ExcepitionHandler註解標記的方法,會將捕捉到的異常對象保存在ModelAndView中。在實際開發過程中@ExcepitionHandler註解的功能
最強大。

2.@ControllerAdvice

如果有異常拋出的時候,該異常會先尋找被@ExcepitionHandler標記的方法來處理異常,如果未找到在,則會去尋找被@ControllerAdvice註解修飾的類種尋找@ExcepitionHandler
註解進行處理。這樣的好處就是不用在一個一個的方法中添加@ExcepitionHandler的註解。

3.@ResponseStatus

@ResponseStatus是處理異常最簡單的註解方法,是用時首先得先聲明一個異常類,使用@ResponseStatus註解標記,他有三個屬性值
①code HttpStatus類型 爲http狀態碼
②value String 類型  同code屬性
③reason 描述錯誤信息


4.SimpleMappingExceptionResolver

如果沒有指定的異常註解此時@SimpleMappingExceptionResolver會處理所有的異常,使用SimpleMappingExceptionResolver處理異常需要在SpringMVC的配置文件中配置

    <!-- 配置使用 SimpleMappingExceptionResolver 來映射異常 -->
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionAttribute" value="ex"></property>
        <property name="exceptionMappings">
            <props>
                <prop key="java.lang.ArrayIndexOutOfBoundsException">error</prop>
            </props>
        </property>
    </bean>    


在Jsp頁面中通過${RequstScope.ex.message}來顯示異常。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章