SpringMVC——(3)请求参数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shaohe18362202126/article/details/83280458

一、@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。

扫描二维码关注公众号,回复: 4121210 查看本文章
@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;
}

猜你喜欢

转载自blog.csdn.net/shaohe18362202126/article/details/83280458