SpringMVC-3 映射请求参数和请求头

  Spring MVC通过分析控制器处理方法的签名,将 HTTP请求信息绑定到处理方法的相应人参中。除@PathVariable注解外,SpringMVC还可使用@RequestParam、@RequestHeader和@CookieValue注解分别映射请求参数、请求头和Cookie值信息到相应处理方法的入参中,并根据方法的返回值类型做出相应的后续处理。
  另外,SpringMVC也支持使用POJO对象绑定请求参数,且也可以使用Servlet原生API作为目标方法的形参
  映射请求参数和请求头信息的具体实现代码下载地址:http://download.csdn.net/download/bingbeichen/9792045。


1. 使用@RequestParam注解映射请求参数信息

// 注:请求可以为springmvc/testRequestParam?username=qiaobc&age=23
/**
 * 使用@RequestParam注解映射请求参数
 *  1). value : 请求参数的参数名
 *  2). required : 该请求参数是否为必须的,默认为true
 *  3). defaultValue : 请求参数的默认值
 */
@RequestMapping("testRequestParam")
public String testRequestParam(@RequestParam("username") String userName, 
    @RequestParam(value="age", required=false, defaultValue="0") int age) {
    System.out.println("testRequestParam: username = " + userName + ", age = " + age);
    return SUCCESS;
}

2. 使用@RequestHeader注解映射请求头信息

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

3. 使用@CookieValue注解映射Cookie值信息

// 注:请求可以为springmvc/testCookieValue
/**
 * 使用@CookieValue注解映射一个Cookie值,用法同@RequestParam注解,了解即可
 */
@RequestMapping("testCookieValue")
public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) {
    System.out.println("testCookieValue : JSESSIONID = " + sessionId);
    return SUCCESS;
}

4. 使用POJO对象绑定请求参数信息


<form action="springmvc/testPojo" method="post">
    username: <input type="text" name="username" />
    <br><br>
    password: <input type="password" name="password" />
    <br><br>
    email: <input type="text" name="email" />
    <br><br>
    age: <input type="text" name="age" />
    <br><br>
    province: <input type="text" name="address.province" />
    <br><br>
    city: <input type="text" name="address.city" />
    <br><br>
    <input type="submit" value="submit" />
form>
/**
 * Spring MVC会按请求参数名和POJO属性名进行自动匹配,自动为该对象填充属性值,且支持级联属性
 * User类中包含username、password、email、age和address属性,而Address类中包含province和city属性
 */
@RequestMapping("testPojo")
public String testPojo(User user) {
    System.out.println(user);
    return SUCCESS;
}

5. 使用Servlet原生API作为目标方法的参数

/**
 * 可以使用Servlet原生的API作为目标方法的参数,具体支持以下类型:
 *      HttpServletRequest、HttpServletResponse、HttpSession
 *      java.security.Principal、Locale
 *      InputStream、OutputStream、Reader、Writer
 * 具体可在ServletHandlerMethodInvoker的resolveStandardArgument()方法中查看
 */
@RequestMapping("testServletAPI")
public String testServletAPI(HttpServletRequest request, HttpServletResponse response) {
    System.out.println("testServletAPI: " + request + ", " + response);
    return SUCCESS;
}

你可能感兴趣的:(SpringMVC-3 映射请求参数和请求头)