一、@PathVariable
通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中。URL中的{xxx} 占位符可以通过@PathVariable("xxx") 绑定到操作方法的入参中。
详情:https://blog.csdn.net/shaohe18362202126/article/details/82989887
二、@RequestParam
在处理方法入参处使用@RequestParam 可以把请求参 数传递给请求方法。属性:value:参数名 ;required:是否必须。默认为 true, 表示请求参数中必须包含对应 的参数,若不存在,将抛出异常。
/**
* 测试@RequestParam 来映射请求参数.<br>
* value 值即请求参数的参数名,方法参数名可以和value值不同 <br>
* required 该参数是否必须. 默认为 true <br>
* defaultValue 请求参数的默认值,如果没有设置默认值,参数类型最好为包装类
*/
@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;
}
<a href="SpringMVC/testRequestParam?username=atguigu&age=11">Test RequestParam</a>
三、@RequestHeader
使用 @RequestHeader 绑定请求报头的属性值,请求头包含了若干个属性,服务器可据此获知客户端的信 息,通过 @RequestHeader 即可将请求头中的属性值绑 定到处理方法的入参中。
/**
* 映射请求头信息 用法同 @RequestParam
*/
@RequestMapping("/testRequestHeader")
public String testRequestHeader(@RequestHeader(value = "Accept-Language") String al) {
System.out.println("testRequestHeader, Accept-Language: " + al);
return SUCCESS;
}
<a href="SpringMVC/testRequestHeader">Test RequestHeader</a>
四、@CookieValue
@CookieValue 可让处理方法入参绑定某个 Cookie 值.
/**
* @CookieValue: 映射一个 Cookie 值. 属性同 @RequestParam
*/
@RequestMapping("/testCookieValue")
public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) {
System.out.println("testCookieValue: sessionId: " + sessionId);
return SUCCESS;
}
<a href="SpringMVC/testCookieValue">Test CookieValue</a>
五、使用POJO对象绑定请求参数
Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。支持级联属性。如:dept.deptId、dept.address.tel 等
1、POJO对象(getter/setter省略):
public class User extends BaseEntity {
private static final long serialVersionUID = -5491793647029658682L;
private String username;
private String password;
private String email;
private Integer age;
private BigDecimal money;
private Date birthDay;
private Address address;
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + ", email=" + email + ", age=" + age
+ ", money=" + money + ", birthDay=" + birthDay + ", address=" + address + "]";
}
}
public class Address extends BaseEntity {
private static final long serialVersionUID = 7678367262215108082L;
private String province;
private String city;
@Override
public String toString() {
return "Address [province=" + province + ", city=" + city + "]";
}
}
2、Controller
/**
* Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配, 自动为该对象填充属性值。支持级联属性。
* 如:dept.deptId、dept.address.tel 等
*/
@RequestMapping("/testPojo")
public String testPojo(User user) {
System.out.println("testPojo: " + user);
System.out.println(user.getId() + "," + user.getAddress().getId());
return SUCCESS;
}
3、页面
<form action="SpringMVC/testPojo" method="post">
<input type="hidden" name="id" value="1">
username: <input type="text" name="username"/>
<br>
password: <input type="password" name="password"/>
<br>
email: <input type="text" name="email"/>
<br>
age: <input type="text" name="age"/>
<br>
money:<input type="text" name="money"/>
<br>
birthDay:<input type="date" name="birthDay"/>(yyyy-MM-dd)
<br>
city: <input type="text" name="address.city"/>
<br>
province: <input type="text" name="address.province"/>
<br>
<input type="hidden" name="address.id" value="2">
<br>
<input type="submit" value="Submit"/>
</form>
4、测试
testPojo: User [username=12, password=2112, email=12asdad, age=23, money=33.322222221, birthDay=Tue Oct 30 00:00:00 CST 2018, address=Address [province=cc, city=dd]]
user.getId() :1, user.getAddress().getId():2
*Date数据类型绑定后期详细介绍
六、使用 Servlet API
在SpringMVC中可以使用 Serlvet原生的 API。
使用API作为参数,具体支持如下类型:HttpServletRequest、HttpServletResponse、 HttpSession、 java.security.Principal、 Locale、 InputStream、 OutputStream、 Reader 、Writer。
@RequestMapping("/testServletAPI")
public String testServletAPI(HttpServletRequest request, HttpServletResponse response) {
// 1、使用API作为参数
// 2、获取请求对象
HttpServletRequest request2 = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
.getRequest();
// 3、使用SpringMVC的web工具类实现session的读写,需要先获取请求对象
HttpServletRequest request3 = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
.getRequest();
WebUtils.setSessionAttribute(request3, "test2", "sessionValue2");
WebUtils.getSessionAttribute(request, "test2");
return SUCCESS;
}