1、SpringMVC 中整合JSONXML视图一SpringMVC 中整合JSON、XML视图一SpringMVC中整合了JSON、XML的视图,可以通过这些视图完成Java对象到XML、JSON的转换。转换XML提供了MarshallingView,开发者只需用注入相应的marshaller、和属性配置,即可自动完成Java的Model对象中的数据到XML的编组。Email:hoojo_Blog:一、准备工作1、 本次程序会涉及到Jackson、xStream、Jibx、Jaxb2、castor等技术,如果你对这些技术还不是很了解。建议阅读:这篇文章中涉及到的内容应该对你有不少帮助。2、 ja
2、r包下载spring各版本jar下载地址:相关的依赖包也可以在这里找到:3、 至少需要以下jar包4、 当前工程的web.xml配置web-app version=2.4 xmlns= xmlns:xsi=http:/www.w3.org/2001/XMLSchema-instance xsi:schemaLocation= dispatcher org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/dispatcher.xml 1 dispatcher *.do characterEn
3、codingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 characterEncodingFilter /* index.jsp 5、 WEB-INF中的dispatcher.xml配置 启动后,可以看到index.jsp 没有出现异常或错误。那么当前SpringMVC的配置就成功了。二、利用Jaxb2编组XML1、 Jaxb2可以完成XML和Java的相互转换,在WebService中用得较多。前面也介绍过Jaxb2 的用法。在线博文:For cnblogs:For csdn:2、
4、首先在dispatcher.xml中配置Jaxb2的marshaller的视图,配置如下: com.hoo.entity.User com.hoo.entity.AccountBean com.hoo.entity.MapBean com.hoo.entity.ListBean Jaxb2的jar在jdk中已经包含,所以不需要添加额外的jar包。详细信息你可以参考1中的博文。上面的jaxb2MarshallingView视图的class是MarshallingView,它有一个构造器需要传递一个Marshaller。Marshaller主要完成编组,即将Java对象转换成XML的这么一个东东。
5、我们在这个构造器中注入了Jaxb2Marshaller这个类,这个bean有一个classesToBeBound属性,这个属性是一个数组。需要将即将转换成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.sprin
6、gframework.stereotype.Controller;import org.springframework.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.Mo
7、reBean;import com.hoo.entity.User;/* * function:Jaxb2MarshallingView 视图,利用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 */ControllerRequestMa
8、pping(/jaxb2/view)public class Jaxb2MarshallingViewController /* * MarshallingView Jaxb2Marshaller 需要配置转换成xml的java对象的Annotation */ RequestMapping(/doXMLJaxb2) public ModelAndView doXMLJaxb2View() System.out.println(#ViewController doXMLJaxb2View#); ModelAndView mav = new ModelAndView(jaxb2Marshallin
9、gView); AccountBean bean = new AccountBean(); bean.setAddress(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这个视图,就表示结果集会通过
10、这个视图进行编组后显示。上面需要转换的AccountBean和Birthday对象,这些对象需要配置annotation,前面已经讲到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
11、; private String name; private String email; private String address; private Brithday brithday; XmlElement public Brithday getBrithday() return brithday; public void setBrithday(Brithday brithday) this.brithday = brithday; XmlElement public int getId() return id; public void setId(int id) this.id =
12、id; XmlElement public String getName() return name; public void setName(String name) this.name = name; XmlElement public String getEmail() return email; public void setEmail(String email) this.email = email; XmlElement public String getAddress() return address; public void setAddress(String address)
13、 this.address = address; Override public String toString() return this.name + # + this.id + # + this.address + # + this.brithday + # + this.email; 在getter方法都有部分注解,如果你想了解更多的jaxb2的相关技术,参考:Brithdaypackage com.hoo.entity;public class Brithday private String brithday; public Brithday() public Brithday(St
14、ring brithday) this.brithday = brithday; public String getBrithday() return brithday; public void setBrithday(String brithday) this.brithday = brithday; Brithday是AccountBean中的一个属性,在AccountBean中已经注解过。这里就不需要进行注解配置。通过浏览器请求:http:/localhost:8080/SpringMVC4View/jaxb2/view/doXMLJaxb2.do结果如下:address2010-11-
15、22email1haha4、 转换带List属性的JavaEntity/* * function:转换带有List属性的JavaBean * author hoojo * createDate 2011-4-27 下午05:32:22 * return */RequestMapping(/doListXMLJaxb2)public ModelAndView doListXMLJaxb2View() System.out.println(#ViewController doListXMLJaxb2View#); ModelAndView mav = new ModelAndView(jaxb2M
16、arshallingView); List beans = new ArrayList(); for (int i = 0; i 3; i+) AccountBean bean = new 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.setBr
17、ithday(day); beans.add(bean); User user = new User(); user.setAddress(china GuangZhou# + i); user.setAge(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); r
18、eturn mav;ListBean注解过的代码package com.hoo.entity;import java.util.List;import javax.xml.bind.annotation.XmlElement;import javax.xml.bind.annotation.XmlElements;import javax.xml.bind.annotation.XmlRootElement;SuppressWarnings(unchecked)XmlRootElementpublic class ListBean private String name; private Li
19、st list; XmlElements( XmlElement(name = user, type = User.class), XmlElement(name = account, type = AccountBean.class), ) 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/SpringMVC4View/jaxb2/view/doListXMLJaxb2.do结果如下:addre
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1