请求数据传入
Spring MVC框架会将HTTP请求的信息绑定到相应的方法入参中,并根据方法的返回值类型做出相应的后续处理。
RequsetParam注解
- 在处理方法入参处使用@RequestParam可以把请求参数传递给请求方法
- value:参数名
- required:是否必须。默认为true,表示请求参数中必须包含对应的参数,若不存在,将抛出异常。
- defaultValue:默认值,当没有传递参数时使用该值
代码演示:
<a href="book?age=10">Book</a>
@RequestMapping(value = "/book",method = RequestMethod.GET)
public String book(@RequestParam(value = "username", required = true,defaultValue = "name") String name,@RequestParam(value = "age") Integer age){
System.out.println(name+":"+age);
return "success";
}
@RequestHeader注解
- 使用@RequestHeader绑定请求头的属性值
- 请求头包含了若干个属性,服务器可以根据此获知客户端的信息,通过@RequestHeader即可将请求头中的属性值绑定到处理方法的入参中
代码演示:
<a href="springmvc/testRequestHeader">testRequestHeader</a>
@RequestMapping(value="/testRequestHeader")
public String testRequestHeader(@RequestHeader(value="Accept-Language") String al){
System.out.println("testRequestHeader - Accept-Language:"+al);
return "success";
}
@CookieValue 注解
- 使用CookieValue绑定请求中的Cookie值
代码演示:
<a href="springmvc/testCookieValue">testCookieValue</a>
@RequestMapping("/testCookieValue")
public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) {
System.out.println("testCookieValue: sessionId: " + sessionId);
return "success";
}
使用POJO作为参数
- SpringMVC会按照请求参数名和POJO属性名进行自动匹配,自动为该对象填充属性值。支持级联属性。
代码演示:
<!-- 测试 POJO 对象传参,支持级联属性 -->
<form action=" testPOJO" method="POST">
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>
city: <input type="text" name="address.city"/><br>
province: <input type="text" name="address.province"/>
<input type="submit" value="Submit"/>
</form>
@RequestMapping("/testPOJO")
public String testPojo(User user) {
System.out.println("testPojo: " + user);
return "success";
}
乱码问题
如果中文有乱码,需要配置字符编码过滤器,且配置在配置其他过滤器之前。
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>