SpringMVC通过分析处理方法的签名,可以将HTTP请求信息绑定到处理方法的相应参数中。
在处理方法参数处使用@RequestParam可以把请求参数传递给请求方法,其中:
– value:请求参数的参数名
– required:该参数是否必须,默认为true,
– defaultValue:请求参数的默认值,表示请求参数中必须包含对应的参数,若不存在,将抛出异常。
例如:
jsp:
控制器:
@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绑定请求报头的属性值
@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;
}
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:
注意,jsp中form表单数据的name值需要与POJO的字段值一致。
MVC 的Handler 方法可以接受如下ServletAPI类型的参数:
• HttpServletRequest
• HttpServletResponse
• HttpSession
• Java.security.Principal•Locale
• InputStream
• OutputStream
• Reader
• Writer
例如:
jsp:
<a href="springmvc/testServletAPI">Test ServletAPIa>
控制器:
@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:
并在控制台输出:
testServletAPI, org.apache.catalina.connector.RequestFacade@3277a570, org.apache.catalina.connector.ResponseFacade@4d0e75f2