SpringMVC映射请求参数的方式(参数绑定方式)

   SpringMVC通过分析处理方法的签名,可以将HTTP请求信息绑定到处理方法的相应参数中。

使用@RequestParam绑定请求参数值

  在处理方法参数处使用@RequestParam可以把请求参数传递给请求方法,其中:
– value:请求参数的参数名
– required:该参数是否必须,默认为true,
– defaultValue:请求参数的默认值,表示请求参数中必须包含对应的参数,若不存在,将抛出异常。

例如:

jsp:

<form action="springmvc/test?userName=Jack" method="post">
        <input type="submit" value="submit">
    </form>

控制器:

@Controller
@RequestMapping("/springmvc")
public class SpringMVCTest {

    private static final String SUCCESS = "success";  

    @RequestMapping("/test")
    public String testRequestParam(@RequestParam(value="userName") String username) {
        System.out.println(username);
        return SUCCESS;
    }
}

  控制器中的方法也可写为:

    @RequestMapping("/test")
    public String testRequestParam(String userName) {
        System.out.println(userName);
        return SUCCESS;
    }

  此时方法的参数名必须与页面传来的参数名一致(都为userName),否则会获取不到。
  

使用@RequestHeader绑定请求报头的属性值,使用@CookieValue绑定请求中的Cookie值(不常用,了解即可)

    //使用@RequestHeader绑定请求报头的属性值
    @RequestMapping("/testRequestHeader")  
    public String testRequestHeader(  
            @RequestHeader(value = "Accept-Language") String al) {  
        System.out.println("testRequestHeader, Accept-Language: " + al);  
        return SUCCESS;  
    }  

    //使用@CookieValue绑定请求中的Cookie值
     @RequestMapping("/testCookieValue")  
    public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) {  
        System.out.println("testCookieValue: sessionId: " + sessionId);  
        return SUCCESS;  
    } 

使用POJO对象绑定请求参数值(用于传递对象)

  SpringMVC会按请求参数名和POJO属性名进行自动匹配,自动为该对象填充属性值。支持级联属性。如:dept.deptId、dept.address.tel等,例如:
  
POJO:

public class User {  
    private String userName;  
    private int age;  
    private Address address;  
    //get,set,toString方法略
    }

public class Address{  
    private String province;  
    private String city;  
    //get,set,toString方法略
    } 

控制器:

@Controller  
@RequestMapping("springmvc")  
public class SpringMVCTest {  

    private static final String SUCCESS = "success";  
    @RequestMapping("/testPOJO")  
    public String testPOJO(User user){  
        System.out.println(user);  
        return SUCCESS;  
    }}  

jsp:

<form action="springmvc/testPOJO" method="post">  
        username:<input type="text" name="userName"><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>  

  注意,jsp中form表单数据的name值需要与POJO的字段值一致。

使用ServletAPI作为参数

  MVC 的Handler 方法可以接受如下ServletAPI类型的参数:
  
   • HttpServletRequest
   • HttpServletResponse
   • HttpSession
   • Java.security.Principal•Locale
   • InputStream
   • OutputStream
   • Reader
   • Writer
  
  例如:
  
jsp:

<a href="springmvc/testServletAPI">Test ServletAPI</a>  

控制器:

    @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; 
    }  
}  

点击jsp页面的Test ServletAPI:

SpringMVC映射请求参数的方式(参数绑定方式)_第1张图片

并在控制台输出:

testServletAPI, org.apache.catalina.connector.RequestFacade@3277a570, org.apache.catalina.connector.ResponseFacade@4d0e75f2

你可能感兴趣的:(spring,mvc,映射请求参数,参数绑定方式)