1. 程式人生 > >SpringMVC中的RequestMapping修飾類註解

SpringMVC中的RequestMapping修飾類註解

@RequestMapping

該註解除了能修飾方法,還能修飾類。

如上一文章中提到的程式碼,修改後得到:

package com.yoni.springmvc.handlers;  
  
import org.springframework.stereotype.Controller;  
import org.springframework.web.bind.annotation.RequestMapping;  
@RequestMapping("/helloworld1") 
@Controller  
public class HelloWorld {  
 
    @RequestMapping("/helloworld2")  
    public String hello(){  
        System.out.println("Hello World!");  
        return "success";  
    }  
      
} 
這時訪問hello()方法的的URL就變為了..../helloworld1/helloworld2



@RequestMapping除了能請求URL對映請求外,還可以使用請求方法、請求引數、請求頭對映請求。

@RequestMapping的value、method、params及heads分別表示請求URL、請求方法、請求引數及請求的印社條件,之間的關係是“與”。

如上一段程式碼的hello()方法,如果將上面的@RequestMapping改為:@RequestMapping(value="/helloworld2",method=RequestMethod.POST)

那麼在頁面直接用<a>標籤訪問..../helloworld1/helloworld2,將會提示405錯誤,無法用GET的方法訪問資料。

這樣就只能用POST方法來訪問該URL地址,比如在頁面建一個表單,新增一個submit按鈕來訪問。

<form action="helloworld1/helloworld2" method="POST">
    <input type="submit" value="submit"/>
</form>
將方法改為POST後,訪問才能成功,該功能比較常用。


引數params請求引數使的用方法,註解改為@RequestMapping(value="/helloworld2",params = {"username","age != 10“} )

表示請求的引數裡必須有username和age兩個引數,且age不能等於10,否則訪問失敗。

引數heads請求表頭的使用方法,註解改為@RequestMapping(value="/helloworld2",heads= {"Accept-Language=zh-cn,zh;q=0.8“} )

則表示在請求的時候,表頭引數Accept-Language一定只能是”zh-cn,zh;q=0.8“,如果不是該屬性,將無法訪問。

以上兩個引數在@RequestMapping註解中使用得比較少,主要是為了更精確的對映請求。


@RequestMapping註解還支援萬用字元,”?“表示一個字元,

如:@RequestMapping("/hellowworld2/?/helloworld3")表示URL地址為..../helloworld1/helloworld2/a/helloworld3,其中a可以是任意字元,但只能是一個字元。

”*“表示任意個字元,但僅僅只能是一層路徑,如/helloworld1/helloworld2/abcde/helloworld3

”**”匹配多層路徑,可以是多層路徑,如/helloworld1/helloworld2/abcde/abcde/abcde/helloworld3。