Xml格式输入
Spring mvc中缺省提供了SourceHttpMessageConverter 和 Jaxb2RootElementHttpMessageConverter,可用来解析request body中输入的xml string。
其中 SourceHttpMessageConverter 将输入的xmlString 转换成xml的Source对象(如DomSource,SaxSource等),再在handlerMethod对输入的Source对象进行后续解析。
例如
@RequestMapping("/xml2.xml")
public BeanJaxbA testXML2(@RequestBody DOMSource a){
try {
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.transform(a, result);
System.out.println(writer.toString()) ;
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerFactoryConfigurationError e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
而Jaxb2RootElementHttpMessageConverter则通过JAXBinger机制将输入的xmlString直接转换成POJO对象。
例如
先定义带JAXB annotation的pojo bean
@XmlRootElement(name="xmlStrA")
public class BeanJaxbA {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
private String name;
private String password;
private long id;
}
在定义handler method如下
@RequestMapping("/xml.xml")
public BeanJaxbA testXML1(@RequestBody BeanJaxbA a){
BeanJaxbA a1 = new BeanJaxbA();
a1.setId(2000);
a1.setName("winzip");
a1.setPassword("password");
return a1;
}
这里spring mvc直接将输入的xml string 转换成为 BeanJaxA这个bean对象。
Xml格式输出
对于xml输出,Spring mvc提供了MarshallingView来提供对xml输出的支持。例如,在servlet context xml配置文件中增加如下配置。
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" /> <!-- SPR-7504 -->
</map>
</property>
<property name="defaultViews">
<list>
<bean class="net.zhepu.json.MappingJacksonJsonView" />
<bean name="jaxb2MarshallingView"
class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller" ref="jaxbMarshall"></property>
</bean>
</list>
</property>
<property name="ignoreAcceptHeader" value="true" />
</bean>
<oxm:jaxb2-marshaller id="jaxbMarshall">
<oxm:class-to-be-bound name="net.zhepu.web.xmlModel.BeanJaxbA" />
</oxm:jaxb2-marshaller>
以上定义使用jaxbMarshall来将java bean 转换为xml string并利用ContentNegotiatingViewResolver来提供输出。
可访问测试工程中http://localhost:8080/springmvc/中新增的
“xml input jaxb test” 和 “xml input domsource test2”两个按钮来查看xml 数据输入输出的效果。
分享到:
相关推荐
spring mvc的学习笔记,主要讲解了基于xml的配置,和如何增加spring mvc拦截器,如何返回json报文
难得最后走通了,就自我记录备案,权当我的学习笔记了。除了弄一个mvc xml配置,后面还会弄一个纯java配置的mvc。下面是操作指南: https://blog.csdn.net/jujueduoluo/article/details/88888122
Unix 学习笔记 ...XML 学习笔记 Oracle 学习笔记 JDBC 学习笔记 Hibernate 学习笔记 HTML&JavaScript 学习笔记 Servlet 学习笔记 JSP 学习笔记 Struts 学习笔记. Ajax 学习笔记 EJB 学习笔记 Spring 学习笔记
springboot学习笔记 spring基础 Spring概述 Spring的简史 xml配置 注解配置 java配置 Spring概述 Spring的模块 核心容器CoreContainer Spring-Core Spring-Beans ...
SpringCloud笔记 1、前言 1.1、回顾 回顾之前的知识 JavaSE 数据库 前端 Servlet Http Mybatis Spring SpringMVC SpringBoot Dubbo、Zookeeper、分布式基础 Maven、Git Ajax、Json ... 串一下自己会的东西 数据库 ...
XML学习笔记...............106 XML前言...............106 第一章 XML Overview....................107 第二章 DTD...........109 第三章 XML Namespaces................111 第四章 XML Schema.....................
XML学习笔记...............106 XML前言...............106 JavaEE@xuxiang 2 Java/JavaEE学习笔记Jonny xuxiang5612@sina.com 第一章 XML Overview....................107 第二章 DTD...........109 第三章 XML ...
这是本人多年积累的学习笔记,记录详细、内容宽广,对新手高手都会有所帮助 作者: 冯万里(Holemar) 邮箱: daillow@gmail.com QQ: 292598441 MSN: daillo@live.cn 更新日期: 2011-12-21 文档都可以用文本编辑器...
格式化输出 Formatter;格式化输入 Scanner;正则表达式 输出格式控制: 转义符: \ddd 1到3位8进制数指定Unicode字符输出(ddd) \uxxxx 1到4位16进制数指定Unicode字符输出(xxxx) \\ \ \' ' \" ...
{5}格式化输入输出}{94}{chapter.5} {5.1}时间与日期}{94}{section.5.1} {5.1.1}各类时间日期转换}{94}{subsection.5.1.1} {5.1.2}时间的输入与输出}{97}{subsection.5.1.2} {5.2}数字的输入输出}{97}{section....
运用MVC分层设计思想,使用Hibernate+Spring+SpringMVC来搭建环境,设计实体类(entity)、数据库访问类(dao)、服务类(service)、控制层类(web/controller)配置web.xml、spring.xml、spring-hi
VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step 深度解析Asp.Net2.0中的Callback机制 使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf...