从教程一,我们对于springMVC的用法已经有了初步的了解,本篇我们将讲解SpringMVC的请求方式,请求参数,请求头以及其他的一些知识。本节代码在教程一的基础上添加。
@RequestMapping
@RequestMapping除了可以使用请求url,还可以使用请求方法、请求参数和请求头映射请求,
value、method、params及heads分别代表url,请求方法和请求头,他们之间是与的关系,联合使用多个条件可让请求映射更加精确化。
- 请求方式
/*
* 使用method属性来指定请求方式
* */
@RequestMapping(value ="testMethod",method = RequestMethod.POST)
public String testMethod(){
System.out.print("testMethod");
return "success";
}
html:
<form action="/springmvc/testMethod" method="post">
<button value="submit">submit</button>
</form>
- 请求头和请求参数
/*
* 可以使用params和heads来更加精确的映射请求。params和headers支持简单的表达式。
* */
@RequestMapping(value = "testParamsAndHeaders",params = {"username","age!=10"},headers = {"Accept-Language: zh-CN,zh;q=0.9"})
public String testParamsAndHeaders(){
System.out.print("testParamsAndHeaders");
return "success";
}
上面age 不能为10,username 不能缺失,headers如果与网页要求的不同,则会出错。
html
<a href="/springmvc/testParamsAndHeaders?username=chengdu&age=10">testParamsAndHeaders</a>
@PathVariable
带占位符的URL是spring3.0新增的功能,该功能是SpringMVC向rest目标挺进。
通过@PathVariable可以将URL中占位符参数绑定到控制器处理方法的入参中
/*
* @PathVariable 可以映射URL 中的占位符到目标方法的参数中
* */
@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable("id") Integer id){
System.out.println("testPathVariable:"+id);
return "success";
}
html
<a href="/springmvc/testPathVariable/1">testPathVariable</a>
HiddenHttpMethodFilter过滤器
将post请求转换为delete请求和post请求。
用法:
web.xml
<!--配置org.springframework.web.filter.HiddenHttpMethodFilter,作用将post请求转换为delete请求和post请求-->
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
controller:
@RequestMapping(value = "/testRest/{id}",method = RequestMethod.GET)
public String testRest(@PathVariable Integer id){
System.out.println("testRest GET:" +id);
return "success";
}
@RequestMapping(value = "/testRest",method = RequestMethod.POST)
public String testRest(){
System.out.println("testRest POST:");
return "success";
}
@RequestMapping(value = "/testRest/{id}",method = RequestMethod.DELETE)
@ResponseBody
public String testRestDelete(@PathVariable Integer id){
System.out.println("testRest DELETE:" +id);
return "success";
}
@RequestMapping(value = "/testRest/{id}",method = RequestMethod.PUT)
@ResponseBody
public String testRestPut(@PathVariable Integer id){
System.out.println("testRest PUT:" +id);
return "success";
}
html页面:
<a href="/springmvc/testRest/1">Test Rest Get</a>
<br><br>
<form action="/springmvc/testRest" method="post">
<input type="submit" value="TestRest POST">
</form>
<br><br>
<form action="/springmvc/testRest/1" method="post">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="TestRest DELETE">
</form>
<br><br>
<form action="/springmvc/testRest/1" method="post">
<input type="hidden" name="_method" value="PUT">
<input type="submit" value="TestRest PUT">
</form>
- github 地址
https://github.com/chuanleixu/SpringMVC_Tutorials