1. HttpMessageConverter消息转换器
概念:
将请求信息----》消息转换器-----》对象
对象--------》消息转换器-----》响应信息体
消息转换器它只针对
@RequestBody/@ResponseBody注解或HttpEntity/ResponseEntity类
SpringMVC默认提供很多消息转换器
比如RequestMappingHandlerAdapter默认加载转换器:
ByteArrayHttpMessageConverter: 负责读取二进制格式的数据和写出二进制格式的数据;
StringHttpMessageConverter: 负责读取字符串格式的数据和写出二进制格式的数据;
ResourceHttpMessageConverter:负责读取资源文件和写出资源文件数据;
F
ormHttpMessageConverter: 负责读取form提交的数据(能读取的数据格式为 application/x-www-form-urlencoded,不能读取multipart/form-data格式数据);负责写入application/x-www-from-urlencoded和multipart/form-data格式的数据;
MappingJacksonHttpMessageConverter: 负责读取和写入json格式的数据;
SouceHttpMessageConverter: 负责读取和写入 xml 中javax.xml.transform.Source定义的数据;
Jaxb2RootElementHttpMessageConverter:负责读取和写入xml 标签格式的数据;
AtomFeedHttpMessageConverter: 负责读取和写入Atom格式的数据;
RssChannelHttpMessageConverter: 负责读取和写入RSS格式的数据;
2. 如何使用消息转换器
1、注册MappingJacksonHttpMessageConverter
3. json数据格式:
数据 key:value
value:字符串、基本数据类型、对象、数组
[]:数组 [value,value]
{}:对象 {数据,数据,数据}
3.1 通过ajax提交json数据到对象
save1.jsp
UserController.java
@RequestMapping("/saveUser1.do")
public String saveUser(@RequestBody User user) {
System.out.println("user="+user);
return "success";
}
3.2 通过ajax提交json数据到集合
save2.jsp
UserController.java
@RequestMapping("/saveUser2.do")
public String saveUser2(@RequestBody List users) {
for (User user : users) {
System.out.println("user="+user);
}
return "success";
}
3.3 通过ajax提交表单数据到对象
save3.jsp
……
UserController.java
@RequestMapping("/saveUser3.do")
public String saveUser3(User user) {
System.out.println("user="+user);
return "success";
}
4. 如何获取json数据
1、通过ajax获取响应json数据
userlist.jsp
UserController.java
@RequestMapping("/userlist.do")
@ResponseBody
public List userlist() {
List list = new ArrayList();
list.add(new User("张三", "111"));
list.add(new User("张四", "222"));
list.add(new User("张五", "333"));
list.add(new User("张六", "444"));
return list;
}
5. 简化SpringMVC的配置文件
1、
(1) 名称:使能注解驱动,相当于配置了RequestMappingHandlerMapping和RequestMappingHandlerAdapter等;
(2) 默认加载的转换器:
ByteArrayHttpMessageConverter: 负责读取二进制格式的数据和写出二进制格式的数据;
StringHttpMessageConverter:负责读取字符串格式的数据和写出二进制格式的数据;
ResourceHttpMessageConverter:负责读取资源文件和写出资源文件数据;
FormHttpMessageConverter:负责读取form提交的数据(能读取的数据格式为 application/x-www-form- urlencoded,不能读取multipart/form-data格式数据);负责写入application/x-www-from-urlencoded和 multipart/form-data格式的数据;
MappingJacksonHttpMessageConverter: 负责读取和写入json格式的数据;
SouceHttpMessageConverter: 负责读取和写入 xml 中javax.xml.transform.Source定义的数据;
Jaxb2RootElementHttpMessageConverter: 负责读取和写入xml 标签格式的数据;
AtomFeedHttpMessageConverter: 负责读取和写入Atom格式的数据;
RssChannelHttpMessageConverter: 负责读取和写入RSS格式的数据;
(3) 另外还默认加载
数据转换
2、
作用:用/配置前端控制器时,可 以访问静态资源(js,图片等)
6. SpringMVC中的参数绑定
1、能支持Servlet的api
HttpServletRequest对象
HttpServletResponse对象
HttpSession对象
OutputStream对象
2、简单类型的绑定
3、pojo类型的绑定
4、包装的pojo类型
5、数组的绑定
6、List的绑定:
批量添加数据
7、Map的绑定
注意问题:
List和Map不能作为参数存在,否则表单无法提交数据,只能以pojo类的某个属性存在。