SpringMVC消息转换器

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类的某个属性存在。

你可能感兴趣的:(SpringMVC)