后端——框架——视图层框架——spring_mvc——《官网》阅读笔记——第一章节21(核心对象,视图解析器,XML)

1、概念

表示返回的内容为XML,它依赖于J2XB技术,这是标准的Java API,自带的。

Controller的Handler方法返回值不是viewName,而是MarshallingView对象实例。

2、使用

2.1     MarshallingView

当返回值MarshallingView对象时,使用的步骤如下:

  1. 第一步,编写实体类,添加J2XB相关的注解
  2. 第二步,在hanlder方法中建立Jaxb2Marshaller与实体对象之间的关系
  3. 第三步,在handler方法中建立Jaxb2Marshaller与MarshallingView之间的关系。

2.2     配置

与JSON的配置类似,,它的使用步骤如下:

  1. 第一步,配置响应内容类型,调用configureContentNegotiation。
  2. 第二步,配置HttpMessageConverter。需要引入jackson-dataformat-xml架包
  3. 第三步,验证,返回任意的实体对象。

3、示例

  直接向responseBody写Xml字符串的示例省略。

  通过配置方式将实体对象转换为xml的示例省略,与Json的唯一区别是HttpMessageConverter的实现类不同

  下述是handler方法返回MarshallingView对象的示例

  1、第一步,编写实体类,添加J2XB相关的注解

@XmlRootElement
@Getter
@Setter
public class User {
	// 姓名
	private String name;
	// 年龄
	private int age;
}

  2、第二步,编写handler方法,建立MarshallingView,Jaxb2Marshaller,实体类之间的关系。它的返回值为MarshallingView

@GetMapping("/xml")
public MarshallingView getUserByXml(@ModelAttribute User user) {
	Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
	marshaller.setClassesToBeBound(User.class);

	MarshallingView view = new MarshallingView();
	view.setMarshaller(marshaller);
	return view;
}

  MarshallingView设置marshaller属性的值为Jaxb2Marshaller,Jaxb2Marshaller用于解析实体对象。

  3、验证,发现返回结果为解析实体对象的结果。

<ResponseEntity>
	<code>200</code>
	<message>some message</message>
	<data>
		<name>Jack</name>
		<age>10</age>
	</data>
</ResponseEntity>
原文地址:https://www.cnblogs.com/rain144576/p/12903007.html