程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Spring MVC(一) Spring MVC框架簡介以及HTTP請求地址映射,springmvc

Spring MVC(一) Spring MVC框架簡介以及HTTP請求地址映射,springmvc

編輯:JAVA綜合教程

Spring MVC(一) Spring MVC框架簡介以及HTTP請求地址映射,springmvc


Spring MVC框架簡介

package com.baobaotao.web;
...
@Controller                    ①將UserController變成一個Handler
@RequestMapping(“/user”)             ②指定控制器映射的URL
public class UserController {
  @RequestMapping(value = “/register”)     ③處理方法對應的URL,相對於
  ②處的URL
  public String register() {
    return “user/register”;          ④返回邏輯視圖名
  }
}

HTTP請求地址映射

通過URL限定:URL表達式

@RequestMapping不但支持標准的URL,還支持Ant風格(即?、*和**的字符)的和帶{xxx}占位符的URL。以下URL都是合法的:
  /user/*/createUser  匹配/user/aaa/createUser、/user/bbb/createUser等URL。
  /user/**/createUser  匹配/user/createUser、/user/aaa/bbb/createUser等URL。
  /user/createUser??  匹配/user/createUseraa、/user/createUserbb等URL。
  /user/{userId}  匹配user/123、user/abc等URL。
  /user/**/{userId}  匹配user/aaa/bbb/123、user/aaa/456等URL。
  company/{companyId}/user/{userId}/detail  匹配company/123/user/456/detail等的URL。

 

@RequestMapping("/{userId}")
public ModelAndView showDetail(@PathVariable("userId") String userId){ ①URL中的{xxx}占位符可以通過@PathVariable("xxx")綁定到操作方法的入參中。
  ModelAndViewmav= new ModelAndView();
  mav.setViewName("user/showDetail");
  mav.addObject("user", userService.getUserById(userId));
  return mav;
}


@Controller
@RequestMapping("/owners/{ownerId}")  
public class RelativePathUriTemplateController {
  @RequestMapping("/pets/{petId}")
  public void findPet(@PathVariable String ownerId,   ②如果@PathVariable不指定參數名,只有在編譯時打開debug開關(javac -debug=no)時才可行!!(不建議)
    @PathVariable String petId, Model model) { 
    …
  }
}


 通過請求方法限定:請求方法

1、GET,使用GET方法檢索一個表述(representation)——也就是對資源的描述。多次執行同一GET請求,不會對系統造成影響,GET方法具有冪等性[指多個相同請求返回相同的結果]。GET請求可以充分使用客戶端的緩存。

2、POST方法,通常表示“創建一個新資源”,但它既不安全也不具有冪等性(多次操作會產生多個新資源)。
3、DELETE,表示刪除一個資源,你也可以一遍又一遍地操作它,直到得出結果:刪除不存在的東西沒有任何問題
4、PUT冪等性同樣適用於PUT(基本的含義是“更新資源數據,如果資源不存在的話,則根據此URI創建一個新的資源”)

示例1:
@RequestMapping(value=“/delete”)
public String test1(@RequestParam("userId") String userId){
return "user/test1";
}

-->所有URL為<controllerURI>/delete的請求由test1處理(任何請求方法)
示例2:
@RequestMapping(value="/delete",method=RequestMethod.POST)
public String test1(@RequestParam("userId") String userId){
return "user/test1";
}

-->所有URL為<controllerURI>/delete 且請求方法為POST 的請求由test1處理

 

通過請求/請求頭參數限定:示例

通過請求參數限定:

 

@RequestMapping(value="/delete", params="userId")
public String test1(@RequestParam("userId") String userId){
...
}

通過請求頭參數限定:

@RequestMapping(value="/show",headers="content-type=text/*")②
public String test2(@RequestParam("userId") String userId){
...
}

params和headers分別通過請求參數及報文頭屬性進行映射,它們支持簡單的表達式,下面以params表達式為例說明,headers可以參照params進行理解之。
  "param1":表示請求必須包含名為param1的請求參數。
  "!param1":表示請求不能包含名為param1的請求參數。
  "param1!=value1":表示請求包含名為param1的請求參數,但其值不能為value1。
  {"param1=value1","param2"}:請求必須包含名為param1和param2的兩個請求參數,且param1參數的值必須為value1。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved