`
starscream
  • 浏览: 286063 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring MVC 学习笔记 十三 xml格式输入输出

阅读更多
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 数据输入输出的效果。
分享到:
评论
1 楼 xuguiyi1000 2013-09-10  
有这个是工程实例的吗?

相关推荐

    spring MVC学习笔记

    spring mvc的学习笔记,主要讲解了基于xml的配置,和如何增加spring mvc拦截器,如何返回json报文

    spring mvc 入门demo

    难得最后走通了,就自我记录备案,权当我的学习笔记了。除了弄一个mvc xml配置,后面还会弄一个纯java配置的mvc。下面是操作指南: https://blog.csdn.net/jujueduoluo/article/details/88888122

    java unix sping ajax struts hibernate 学习笔记

    Unix 学习笔记 ...XML 学习笔记 Oracle 学习笔记 JDBC 学习笔记 Hibernate 学习笔记 HTML&JavaScript 学习笔记 Servlet 学习笔记 JSP 学习笔记 Struts 学习笔记. Ajax 学习笔记 EJB 学习笔记 Spring 学习笔记

    springboot学习思维笔记.xmind

    springboot学习笔记 spring基础 Spring概述 Spring的简史 xml配置 注解配置 java配置 Spring概述 Spring的模块 核心容器CoreContainer Spring-Core Spring-Beans ...

    xmljava系统源码-spring-cloud-kuang:狂神springcloud笔记+源码+config

    SpringCloud笔记 1、前言 1.1、回顾 回顾之前的知识 JavaSE 数据库 前端 Servlet Http Mybatis Spring SpringMVC SpringBoot Dubbo、Zookeeper、分布式基础 Maven、Git Ajax、Json ... 串一下自己会的东西 数据库 ...

    Java/JavaEE 学习笔记

    XML学习笔记...............106 XML前言...............106 第一章 XML Overview....................107 第二章 DTD...........109 第三章 XML Namespaces................111 第四章 XML Schema.....................

    J2EE学习笔记(J2ee初学者必备手册)

    XML学习笔记...............106 XML前言...............106 JavaEE@xuxiang 2 Java/JavaEE学习笔记Jonny xuxiang5612@sina.com 第一章 XML Overview....................107 第二章 DTD...........109 第三章 XML ...

    holemar学习笔记(2011-12-21)

    这是本人多年积累的学习笔记,记录详细、内容宽广,对新手高手都会有所帮助 作者: 冯万里(Holemar) 邮箱: daillow@gmail.com QQ: 292598441 MSN: daillo@live.cn 更新日期: 2011-12-21 文档都可以用文本编辑器...

    整理后java开发全套达内学习笔记(含练习)

    格式化输出 Formatter;格式化输入 Scanner;正则表达式 输出格式控制: 转义符: \ddd 1到3位8进制数指定Unicode字符输出(ddd) \uxxxx 1到4位16进制数指定Unicode字符输出(xxxx) \\ \ \' ' \" ...

    Java学习笔记-个人整理的

    {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....

    百度地图毕业设计源码-MyStudyNote:我的学习历程笔记

    运用MVC分层设计思想,使用Hibernate+Spring+SpringMVC来搭建环境,设计实体类(entity)、数据库访问类(dao)、服务类(service)、控制层类(web/controller)配置web.xml、spring.xml、spring-hi

    asp.net知识库

    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...

Global site tag (gtag.js) - Google Analytics