springMVC之请求参数,请求头,Cookie

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

使用@RequestParParam来处理请求参数

在这里插入图片描述

	@RequestMapping("testRequestParam")
	public String testRequestParam(@RequestParam("username") String username, @RequestParam("age") int age) {
		System.out.println("username=" + username + "-------age=" + age);
		return SUCCESS;
	}

在这里插入图片描述
当我们改变请求参数时出现报错:
在这里插入图片描述
修改代码

	@RequestMapping("testRequestParam")
	public String testRequestParam(@RequestParam("username") String username, @RequestParam(value="age",required=false) int age) {
		System.out.println("username=" + username + "-------age=" + age);
		return SUCCESS;
	}

required=false 让 age参数不是必须的,但是又出现了如下错误
java.lang.IllegalStateException: Optional int parameter ‘age’ is not present but cannot be translated into a null value due to being declared as a primitive type. Consider declaring it as object wrapper for the corresponding primitive type.
继续修改代码(类型)


	@RequestMapping("testRequestParam")
	public String testRequestParam(@RequestParam("username") String username, @RequestParam(value="age",required=false) Integer age) {
		System.out.println("username=" + username + "-------age=" + age);
		return SUCCESS;
	}

成功了,在这里插入图片描述

但是如果我想要类型就是int 类型呢。
可以通过defaultValue 来设置默认值。

	@RequestMapping("testRequestParam")
	public String testRequestParam(@RequestParam("username") String username, @RequestParam(value="age",required=false,defaultValue="0") int age) {
		System.out.println("username=" + username + "-------age=" + age);
		return SUCCESS;
	}

通过上例子可以得到:
value 值即请求参数名
required 设置参数是否必须, 默认true
defaultValue 请求参数默认值。

@RequestHeader 请求头注解

	/**
	 * 了解: 映射请求头信息 用法同 @RequestParam
	 */
	@RequestMapping("/testRequestHeader")
	public String testRequestHeader(
			@RequestHeader(value = "Accept-Language") String al) {
		System.out.println("testRequestHeader, Accept-Language: " + al);
		return SUCCESS;
	}

@CookieValue: 映射一个 Cookie 值

	/**
	 * 了解:
	 * 
	 * @CookieValue: 映射一个 Cookie 值. 属性同 @RequestParam
	 */
	@RequestMapping("/testCookieValue")
	public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) {
		System.out.println("testCookieValue: sessionId: " + sessionId);
		return SUCCESS;
	}

SpringMVC_使用POJO作为参数

Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。支持级联属性

	/**
	 * Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配, 自动为该对象填充属性值。支持级联属性。
	 * 如:dept.deptId、dept.address.tel 等
	 */
	@RequestMapping("/testPojo")
	public String testPojo(User user) {
		System.out.println("testPojo: " + user);
		return SUCCESS;
	}

SpringMVC_使用Servlet原生API作为参数

/**
	 * 可以使用 Serlvet 原生的 API 作为目标方法的参数 具体支持以下类型
	 * 
	 * HttpServletRequest 
	 * HttpServletResponse 
	 * HttpSession
	 * java.security.Principal 
	 * Locale InputStream 
	 * OutputStream 
	 * Reader 
	 * Writer
	 * @throws IOException 
	 */
	@RequestMapping("/testServletAPI")
	public void testServletAPI(HttpServletRequest request,
			HttpServletResponse response, Writer out) throws IOException {
		System.out.println("testServletAPI, " + request + ", " + response);
		out.write("hello springmvc");
//		return SUCCESS;
	}

	/**
	 * Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配, 自动为该对象填充属性值。支持级联属性。
	 * 如:dept.deptId、dept.address.tel 等
	 */
	@RequestMapping("/testPojo")
	public String testPojo(User user) {
		System.out.println("testPojo: " + user);
		return SUCCESS;
	}

猜你喜欢

转载自blog.csdn.net/qq_36570464/article/details/87978300