SpringMVC系列--請求映射

其他網址

另見:《跟我學SpringMVC》=> 6.5 請求映射

@RequestMapping簡介

@RequestMapping(value="/testRequestMapping", 
                method={RequestMethod.POST},
                params = {"username=jack"}, 
                headers = {"Accept"})

value和path的作用都是指定請求路徑,當有註解後面只有一個參數的時候可以直接寫路徑
params指定請求參數中必須包含username的屬性,且值必須爲jack
headers用於指定請求的信息中必須包含的請求頭信息

RequestMapping註解可以用在類上或者方法上。

url映射配置方法

(1)映射單個URL
@RequestMapping("") 或 @RequestMapping(value="")

(2)映射多個URL
@RequestMapping({"",""}) 或 @RequestMapping(value={"",""})
路徑開頭是否加斜槓/均可,建議加上,如:@RequestMapping("/hello")

特殊配置

@RequestMapping("")與@RequestMapping("/")效果一樣,都是根路徑。

五種映射方式

參考網址:@RequestMapping使用須知_Java_zalan01408980的博客-CSDN博客

@RequestMapping 一共有五種映射方式

映射方式

說明

示例

標準映射

標準URL 映射是最簡單的一種映射

@RequestMapping("/hello")

@RequestMapping({"/hello","/world/test"})

Ant風格

Ant 通配符有三種:

?:匹配任何單字符

*:匹配任意數量的字符(含 0 個)

**:匹配任意數量的目錄(含 0 個)

(1)@RequestMapping("/?/hello/")

(2)@RequestMapping("/*/hello")

(3)@RequestMapping("/**/hello")

佔位符

可以通過一個或多個 {} 佔位符映射。

若 URL 中的 userId 是純數字,那麼使用 @PathVariable 做綁定時,可以根據自己的需求將方法參數類型設置爲 Long、 Integer、String等。

@PathVariable("") 不能簡寫爲 @PathVariable

 

@RequestMapping("/user/{userId}/show")

public ModelAndView show(@PathVariable("userId") Long userId) {

    // 創建 ModelAndView 對象,並設置視圖名稱

    ModelAndView mv = new ModelAndView("show");

    // 添加模型數據

    mv.addObject("msg", "User ID:" + userId);

    return mv;

}

限制請求方法

HTTP 請求中最常用的請求方法是 GET、POST,還有其他的一些方法,如:DELET、PUT、HEAD 等

@RequestMapping(value="/hello", method=RequestMethod.POST)

如需限制多個請求方法,以大括號包圍,逗號隔開即可,例如:

method={RequestMethod.GET,RequestMethod.POST}

限制請求參數

請求中必須帶有userId 參數

參數的限制規則如下:

(1)params="userId" 請求參數中必須包含 userId

(2)params="!userId" 請求參數中不能包含 userId

(3)params="userId!=1" 請求參數中必須包含 userId,但不能爲 1

(4)params={"userId","userName"} 必須包含 userId 和 userName 參數

(5)params={"userId=1","userName!=2"}必須包含 userId 和 userName 參數,且userId值必須爲1,userName值必須不爲2。

@RequestMapping(value="/user/show",params="userId")

public ModelAndView show(@RequestParam("userId") Long userId) {

    // 創建 ModelAndView 對象,並設置視圖名稱

    ModelAndView mv = new ModelAndView("show");

    // 添加模型數據

    mv.addObject("msg", "User ID:" + userId);

    return mv;

}

參數的依賴注入

@RequestMapping註解的方法的參數會自動注入,示例如下。

<a href="param/testParam?username=hehe&password=123"></a>

public class User {
    private String name;
    private String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
   //請求參數綁定
   @RequestMapping("/testParam")
   public String testParam(String username,String password, User user){
       System.out.println("執行了...");
       System.out.println("用戶名:"+username);
       System.out.println("密碼:"+password);
       User.name = username;
       User.password = password;
       System.out.println("User");
       System.out.println("  " + User.name);
       System.out.println("  " + User.password);
       return "success";
   }

運行結果   

執行了...
用戶名:hehe
密碼:123
User
  hehe
  123

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