一丙唧、SpringMVC 注解
1宇挫、RequestMapping
RequestMapping 注解可標注在控制器的類定義及方法定義處 :
@RequestMapping("/springmvc")
@Controller
public class SpringMVCTest {
@RequestMapping("testRequestMapping")
public String testRequestMapping() {
System.out.println("testRequestMapping");
return "success";
}
}
@RequestMapping 除了可以使用請求 URL 映射請求外灌旧, 還可以使用請求方法昭卓、請求參數及請求頭映射請求 ;
-
@RequestMapping 的 value愿险、method旺拉、params 及 headers 分別表示請求 URL、請求方法撑蒜、請求參數及請求頭的映射條件 ;
params 和 headers 支持簡單的表達式:
- param1: 表示請求必須包含名為 param1 的請求參數 ;
- !param1: 表示請求不能包含名為 param1 的請求參數 ;
- param1 != value1: 表示請求包含名為 param1 的請求參數歹啼,但其值不能為 value1
- {“param1=value1”, “param2”}: 請求必須包含名為 param1 和param2 的兩個請求參數,且 param1 參數的值必須為 value1 ;
@RequestMapping(value="testParamsAndHeaders",params={"userName","age!=10"})
public String testParamsAndHeaders(){
System.out.println("testParamsAndHeaders");
return "success";
}
@RequestMapping 還支持 Ant 風格 URL, 3 種匹配符如下:
- ?:匹配文件名中的一個字符
- *:匹配文件名中的任意字符
- : 匹配多層路徑
#匹配 testAntPath/aaa/abc testAntPath/bbb/abc 等
@RequestMapping("/testAntPath/*/abc")
public String testAntPath(){
System.out.println("testAntPath");
return "success";
}
2座菠、PathVariable
@PathVariable 映射 URL 綁定的占位符;通過 @PathVariable 可以將 URL 中占位符參數綁定到控 制器處理方法的入參中:URL 中的 {xxx} 占位符可以通過 @PathVariable("xxx") 綁定到操作方法的入參中狸眼。
@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable("id") Integer id){
System.out.println("testPathVariable : " + id);
return "success";
}
3、RequestParam
處理方法入參處使用 @RequestParam 可以把請求參數傳遞給請求方法
- value:參數名
- required:是否必須浴滴。默認為 true, 表示請求參數中必須包含對應 的參數拓萌,若不存在,將拋出異常
@RequestMapping(value="/testRequestParam")
public String testRequestParam(@RequestParam(value = "username") String un,
@RequestParam(value = "age", required = false, defaultValue = "0") int age){
System.out.println("testRequestParam,username : " + un + " , age : " +age );
return SUCCESS;
}
4升略、RequestHeader
@RequestHeader 即可將請求頭中的屬性值綁 定到處理方法的入參中
@RequestMapping(value="/testRequestHeader")
public String testRequestHeader(@RequestHeader("Accept-Language") String al){
System.out.println("testRequestHeader,Accept-Language : " + al );
return SUCCESS;
}
5微王、CookieValue
@CookieValue 可讓處理方法入參綁定某個 Cookie 值
@RequestMapping("testCookieValue")
public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) {
System.out.println("testCookieValue : "+sessionId);
return SUCCESS;
}
6、使用 POJO 對象綁定請求參數值
Spring MVC 會按請求參數名和 POJO 屬性名進行自動匹 配品嚣,自動為該對象填充屬性值骂远。支持級聯(lián)屬性(如:dept.deptId、dept.address.tel 等)
@RequestMapping(value="/testPojo")
public String testPojo(User user) {
System.out.println("testPojo: " + user);
return SUCCESS;
}
/testPojo/username=axon&dept.deptId=1&dept.address.tel=137
使用 Servlet API 作為入參
7腰根、MVC 的 Handler 方法可以接受以下 ServletAPI 類型的請求參數:
HttpServletRequest
HttpServletResponse
HttpSession
java.security.Principal
Locale
InputStream
OutputStream
Reader
Writer
8、返回的字符串中帶 forward: 或 redirect: 前綴
@RequestMapping("/testRedirect")
public String testRedirect(){
System.out.println("testRedirect");
return "redirect:/index.jsp";
}