、jackson、xStream、castor、jibx、jaxb2.docx

上传人:小飞机 文档编号:1665435 上传时间:2022-12-13 格式:DOCX 页数:52 大小:100.58KB
返回 下载 相关 举报
、jackson、xStream、castor、jibx、jaxb2.docx_第1页
第1页 / 共52页
、jackson、xStream、castor、jibx、jaxb2.docx_第2页
第2页 / 共52页
、jackson、xStream、castor、jibx、jaxb2.docx_第3页
第3页 / 共52页
、jackson、xStream、castor、jibx、jaxb2.docx_第4页
第4页 / 共52页
、jackson、xStream、castor、jibx、jaxb2.docx_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《、jackson、xStream、castor、jibx、jaxb2.docx》由会员分享,可在线阅读,更多相关《、jackson、xStream、castor、jibx、jaxb2.docx(52页珍藏版)》请在三一办公上搜索。

1、SpringMVC 利用XML、JSON视图SpringMVC中整合了JSON、XML的视图,可以通过这些视图完成Java对象到XML、JSON的转换。转换XML提供了MarshallingView,开发者只需用注入相应的marshaller、和属性配置,即可自动完成Java的Model对象中的数据到XML的编组。Blog:一、 准备工作1、 本次程序会涉及到Jackson、xStream、Jibx、Jaxb2、castor等技术,如果你对这些技术还不是很了解。建议阅读:这篇文章中涉及到的内容应该对你有不少帮助。2、 jar包下载spring各版本jar下载地址:相关的依赖包也可以在这里找到:

2、3、 至少需要以下jar包4、 当前工程的web.xml配置web-app version=2.4 xmlns= xmlns:xsi=http:/www.w3.org/2001/XMLSchema-instance xsi:schemaLocation= dispatcherorg.springframework.web.servlet.DispatcherServletcontextConfigLocation/WEB-INF/dispatcher.xml1dispatcher*.docharacterEncodingFilterorg.springframework.web.filter.

3、CharacterEncodingFilterencodingUTF-8characterEncodingFilter/* index.jsp5、 WEB-INF中的dispatcher.xml配置6、 启动后,可以看到index.jsp 没有出现异常或错误。那么当前SpringMVC的配置就成功了。二、 利用Jaxb2编组XML1、 Jaxb2可以完成XML和Java的相互转换,在WebService中用得较多。前面也介绍过Jaxb2 的用法。在线博文:For cnblogs:For csdn:2、 首先在dispatcher.xml中配置Jaxb2的marshaller的视图,配置如下:c

4、om.hoo.entity.Usercom.hoo.entity.AccountBeancom.hoo.entity.MapBeancom.hoo.entity.ListBeanJaxb2的jar在jdk中已经包含,所以不需要添加额外的jar包。详细信息你可以参考1中的博文。上面的jaxb2MarshallingView视图的class是MarshallingView,它有一个构造器需要传递一个Marshaller。Marshaller主要完成编组,即将Java对象转换成XML的这么一个东东。我们在这个构造器中注入了Jaxb2Marshaller这个类,这个bean有一个classesToBe

5、Bound属性,这个属性是一个数组。需要将即将转换成XML的Java对象配置在这里。而且这些对象需要进行Annotation注解。3、 创建Jaxb2MarshallingViewController,完成Java对象到XML的转换单个JavaBean的转换,代码如下:package com.hoo.controller;import java.util.ArrayList;import java.util.Date;import java.util.List;import org.springframework.stereotype.Controller;import org.springf

6、ramework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import com.hoo.entity.AccountBean;import com.hoo.entity.Brithday;import com.hoo.entity.DifferBean;import com.hoo.entity.ListBean;import com.hoo.entity.MoreBean;import com.hoo.entity.User;/* * function:Jax

7、b2MarshallingView 视图,利用Jaxb2进行Java对象到XML的转换技术 * author hoojo * createDate 2011-4-27 下午03:20:23 * file Jaxb2MarshallingViewController.java * package com.hoo.controller * project SpringMVC4View * blog * email hoojo_ * version 1.0 */ControllerRequestMapping(/jaxb2/view)public class Jaxb2MarshallingView

8、Controller /* * MarshallingView Jaxb2Marshaller 需要配置转换成xml的java对象的Annotation */RequestMapping(/doXMLJaxb2)public ModelAndView doXMLJaxb2View() System.out.println(#ViewController doXMLJaxb2View#);ModelAndView mav = new ModelAndView(jaxb2MarshallingView);AccountBean bean = new AccountBean();bean.setAd

9、dress(address);bean.setEmail(email);bean.setId(1);bean.setName(haha);Brithday day = new Brithday();day.setBrithday(2010-11-22);bean.setBrithday(day);mav.addObject(bean);return mav;上面的代码的ModelAndView配置了jaxb2MarshallingView这个视图,就表示结果集会通过这个视图进行编组后显示。上面需要转换的AccountBean和Birthday对象,这些对象需要配置annotation,前面已经

10、讲到annotation对JavaBean转换XML的作用。我们来看看AccountBean对象代码:package com.hoo.entity;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlRootElement;XmlRootElement(name = account)public class AccountBean private int id;private String name;private String email;private String address;

11、private Brithday brithday;XmlElementpublic Brithday getBrithday() return brithday;public void setBrithday(Brithday brithday) this.brithday = brithday;XmlElementpublic int getId() return id;public void setId(int id) this.id = id;XmlElementpublic String getName() return name;public void setName(String

12、 name) this.name = name;XmlElementpublic String getEmail() return email;public void setEmail(String email) this.email = email;XmlElementpublic String getAddress() return address;public void setAddress(String address) this.address = address;Overridepublic String toString() return this.name + # + this

13、.id + # + this.address + # + this.brithday + # + this.email;在getter方法都有部分注解,如果你想了解更多的jaxb2的相关技术,参考:Brithdaypackage com.hoo.entity;public class Brithday private String brithday;public Brithday() public Brithday(String brithday) this.brithday = brithday;public String getBrithday() return brithday;publ

14、ic void setBrithday(String brithday) this.brithday = brithday;Brithday是AccountBean中的一个属性,在AccountBean中已经注解过。这里就不需要进行注解配置。通过浏览器请求:http:/localhost:8080/SpringMVC4View/jaxb2/view/doXMLJaxb2.do结果如下:address2010-11-22email1haha4、 转换带List属性的JavaEntity/* * function:转换带有List属性的JavaBean * author hoojo * creat

15、eDate 2011-4-27 下午05:32:22 * return */RequestMapping(/doListXMLJaxb2)public ModelAndView doListXMLJaxb2View() System.out.println(#ViewController doListXMLJaxb2View#);ModelAndView mav = new ModelAndView(jaxb2MarshallingView);List beans = new ArrayList(); for (int i = 0; i 3; i+) AccountBean bean = ne

16、w AccountBean();bean.setAddress(address# + i);bean.setEmail(email + i + 12 + i + .com);bean.setId(1 + i);bean.setName(haha# + i);Brithday day = new Brithday();day.setBrithday(2010-11-2 + i);bean.setBrithday(day);beans.add(bean);User user = new User();user.setAddress(china GuangZhou# + i);user.setAge

17、(23 + i);user.setBrithday(new Date();user.setName(jack# + i);user.setSex(Boolean.parseBoolean(i + );beans.add(user);ListBean list = new ListBean();list.setList(beans);mav.addObject(list);return mav;ListBean注解过的代码package com.hoo.entity;import java.util.List;import javax.xml.bind.annotation.XmlElement

18、;import javax.xml.bind.annotation.XmlElements;import javax.xml.bind.annotation.XmlRootElement;SuppressWarnings(unchecked)XmlRootElementpublic class ListBean private String name;private List list;XmlElements(XmlElement(name = user, type = User.class),XmlElement(name = account, type = AccountBean.clas

19、s),)public List getList() return list;public void setList(List list) this.list = list;public String getName() return name;public void setName(String name) this.name = name;通过上面的注解可以看出List中只能存储User、AccountBean对象,关于User对象的代码和AccountBean对象的是一样的,只是类名不同而已。读者可以自己添加。在WebBrowser中请求:http:/localhost:8080/Spri

20、ngMVC4View/jaxb2/view/doListXMLJaxb2.do结果如下:address#02010-11-20email01haha#0china GuangZhou# 0232011-04-27T17:02:38.028+08:00jack#0falseaddress#12010-11-21email12haha#1china GuangZhou# 1242011-04-27T17:02:38.028+08:00jack#1falseaddress#22010-11-22email23haha#2china GuangZhou# 2252011-04-27T17:02:38.

21、028+08:00jack#2false5、 转换带有Map属性的JavaBean,Jaxb2转换Map有点复杂,先看看代码:/* * function:转换带有Map属性的JavaBean * author hoojo * createDate 2011-4-27 下午05:32:42 * return */RequestMapping(/doMapXMLJaxb2)public ModelAndView doMapXMLJaxb2View() System.out.println(#ViewController doMapXMLJaxb2View#);ModelAndView mav =

22、new ModelAndView(jaxb2MarshallingView);MapBean mapBean = new MapBean();HashMap map = new HashMap();AccountBean bean = new AccountBean();bean.setAddress(北京);bean.setEmail(email);bean.setId(1);bean.setName(jack);Brithday day = new Brithday();day.setBrithday(2010-11-22);bean.setBrithday(day);map.put(NO

23、1, bean);bean = new AccountBean();bean.setAddress(china);bean.setEmail(tom);bean.setId(2);bean.setName(tom);day = new Brithday(2011-11-22);bean.setBrithday(day);map.put(NO2, bean);mapBean.setMap(map);mav.addObject(mapBean);return mav;首先看看MapBean的代码,代码很简单就一个Map的属性。package com.hoo.entity;import java.u

24、til.HashMap;import javax.xml.bind.annotation.XmlRootElement;import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;import com.hoo.util.MapAdapter;XmlRootElementpublic class MapBean private HashMap map;XmlJavaTypeAdapter(MapAdapter.class)public HashMap getMap() return map;public void setMap(Has

25、hMap map) this.map = map;上面的代码的getMap方法设置了XmlJavaTypeAdapter这个注解,注解里面的MapAdapter是我们自己实现的,而且还要构建一个MapElements数组元素。主要是继承XmlAdapter重写里面的几个方法完成的。MapAdapter代码package com.hoo.util;import java.util.HashMap;import java.util.Map;import javax.xml.bind.annotation.adapters.XmlAdapter;import com.hoo.entity.Accou

26、ntBean;/* * function:AccountBean 编组、解组的XmlAdapter * author hoojo * createDate 2011-4-25 下午05:03:18 * file MyAdetper.java * package com.hoo.util * project WebHttpUtils * blog * email hoojo_ * version 1.0 */public class MapAdapter extends XmlAdapterMapElements, Map public MapElements marshal(Map arg0)

27、 throws Exception MapElements mapElements = new MapElementsarg0.size();int i = 0;for (Map.Entry entry : arg0.entrySet()mapElementsi+ = new MapElements(entry.getKey(), entry.getValue();return mapElements;public Map unmarshal(MapElements arg0) throws Exception Map r = new HashMap();for (MapElements ma

28、pelement : arg0)r.put(mapelement.key, mapelement.value);return r;MapElements代码package com.hoo.util;import javax.xml.bind.annotation.XmlElement;import com.hoo.entity.AccountBean;/* * function: MapElements * author hoojo * createDate 2011-4-25 下午05:04:04 * file MyElements.java * package com.hoo.util *

29、 project WebHttpUtils * blog * email hoojo_ * version 1.0 */public class MapElements XmlElementpublic String key;XmlElementpublic AccountBean value;SuppressWarnings(unused)private MapElements() / Required by JAXBpublic MapElements(String key, AccountBean value) this.key = key;this.value = value;在浏览器中请求:http:/localhost:8080/SpringMVC4View/jaxb2/view/doMapXMLJaxb2.do结果如下:NO2china2011-11-22tom2tomNO1北京2010-11-22email1jack总结,如果你想将一些Java的基本类型转换成XML。那么你得创建一个带

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号