spring mvc就是好,特别是rest风格的话,一个
org.springframework.web.servlet.view.ContentNegotiatingViewResolver就可以根据不同的场景返回不同的view了,比如返回json,xml,pdf等.马上看代码实现

先是一个简单的pojo

  1. package com.hmkcode.vo;
  2. import javax.xml.bind.annotation.XmlRootElement;
  3. @XmlRootElement(name = "person")
  4. public class Person {
  5. private int id;
  6. private String name;
  7. public int getId() {
  8. return id;
  9. }
  10. public void setId(int id) {
  11. this.id = id;
  12. }
  13. public String getName() {
  14. return name;
  15. }
  16. public void setName(String name) {
  17. this.name = name;
  18. }
  19. public String toString(){
  20. return "ID: "+id+" - Name: "+name;
  21. }
  22. }

注意使用@XmlRootElement标签之。

然后是controller:

  1. @Controller
  2. public class MyController {
  3. @RequestMapping("/view")
  4. public Person getPerson(Model model){
  5. Person person = new Person();
  6. person.setId(1);
  7. person.setName("test");
  8. model.addAttribute("person",person);
  9. return person;
  10. }

然后分别假设要导出为PDF的view,引入著名的itext了;

  1. public class PdfView extends AbstractPdfView {
  2. protected void buildPdfDocument(
  3. Map model,
  4. Document doc,
  5. PdfWriter writer,
  6. HttpServletRequest req,
  7. HttpServletResponse resp)
  8. throws Exception {
  9. Person person = (Person) model.get("person");
  10. doc.add( new Paragraph(person.toString()));
  11. }

这里演示简单往itext中写入一个输出而已;

然后是web.xml:

  1. <servlet>
  2. <servlet-name>springmvc</servlet-name>
  3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4. <load-on-startup>1</load-on-startup>
  5. </servlet>
  6. <servlet-mapping>
  7. <servlet-name>springmvc</servlet-name>
  8. <url-pattern>/rest/*</url-pattern>
  9. </servlet-mapping>

最核心的配置来了:

  1. <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
  2. <property name="order" value="1" />
  3. <property name="mediaTypes">
  4. <map>
  5. <entry key="json" value="application/json" />
  6. <entry key="xml" value="application/xml" />
  7. <entry key="pdf" value="application/pdf" />
  8. </map>
  9. </property>
  10. <property name="defaultViews">
  11. <list>
  12. <!-- JSON View -->
  13. <bean
  14. class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
  15. </bean>
  16. <!--  XML view -->
  17. <bean class="org.springframework.web.servlet.view.xml.MarshallingView">
  18. <constructor-arg>
  19. <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
  20. <property name="classesToBeBound">
  21. <list>
  22. <value>com.test.Person</value>
  23. </list>
  24. </property>
  25. </bean>
  26. </constructor-arg>
  27. </bean>
  28. <!--  PDF view -->
  29. <bean class="com.test.PdfView">
  30. </bean>
  31. </list>
  32. </property>
  33. <property name="ignoreAcceptHeader" value="true" />
  34. t;/bean>

可以看到,其中使用的是:

org.springframework.web.servlet.view.ContentNegotiatingViewResolver,对其pdf,xml.json进行分别的view设置,JSON用的是著名的jackyson去解析了;

最后,通过rest风格的地址,比如http://localhost/view/view.json,返回json;

http://localhost/view/view.pdf,则导出到pdf,http://localhost/view/view.xml,

返回前端就xml了,真的十分方便呀

工作的时候用到spring返回xml view查到此文章亲测可用的更多相关文章

  1. spring 返回xml数据

    要将对象以xml数据形式返回:参考:https://blog.csdn.net/Pnoter/article/details/52218363 1:创建对象时应该填上xml注解,这样才能将对象转换为x ...

  2. spring mybatis 3.2调用mysql存储过程返回多结果集(完整、亲测、可用)

    最近,有个开发提了个需求,希望中间件支持调用mysql存储过程时支持多结果集返回,因为某些原因我们使用了不少的存储过程,很多复杂的逻辑目前来看交互非常的多,所以从当前的现状来说,这个需求还是蛮合理的. ...

  3. spring boot 日志文件配置(logback-spring.xml)亲测可用!

    问题描述:如何配置springboot项目,通过日志配置,使之输出自定义日志. 详细文章:https://blog.csdn.net/gebitan505/article/details/701421 ...

  4. app微信支付宝支付后台的插件模式+回调通过spring广播处理后续业务(已亲测可用)

    写在前面的话:每当我们做一个项目,基本上都会涉及到支付的业务,最常用的莫过于微信和支付宝的支付了,项目有bug,有问题,都不叫问题,可一旦钱出了问题,那就是大问题了,所以在支付业务上我们必须慎之又慎! ...

  5. maven pox.xml文件报错解决办法 亲测可以

    问题1 由于maven下载依赖包失败导致一些文件没完全下载下来,形成了lastUpdated结尾的文件存放在本地仓库中(我是默认地址:C:\Users\Administrator\.m2\reposi ...

  6. 1. Spring基于xml加载和读取properties文件配置

    在src目录下,新建test.properties配置文件,内容如下 name=root password=123456 logArchiveCron=0/5 * * * * ? 一种是使用sprin ...

  7. Spring 通过XML配置文件以及通过注解形式来AOP 来实现前置,环绕,异常通知,返回后通知,后通知

    本节主要内容: 一.Spring 通过XML配置文件形式来AOP 来实现前置,环绕,异常通知     1. Spring AOP  前置通知 XML配置使用案例     2. Spring AOP   ...

  8. Spring Boot 返回 XML 数据,一分钟搞定!

    Spring Boot 返回 XML 数据,前提必须已经搭建了 Spring Boot 项目,所以这一块代码就不贴了,可以点击查看之前分享的 Spring Boot 返回 JSON 数据,一分钟搞定! ...

  9. Spring MVC 返回 xml json pdf 数据的配置方法

    <!-- Spring MVC 返回 xml 数据的配置方法 -->     <bean class="org.springframework.web.servlet.vi ...

随机推荐

  1. The 2016 ACM-ICPC Asia Dalian Regional Contest

    一共a了6题 A:找二分图,判断有没有冲突或者孤立的店 题解:直接dfs即可 #include<map> #include<set> #include<cmath> ...

  2. nginx安装目录

    1.rpm -ql nginx看看通过yum安装到哪里了 2./etc/logrotate.d/nginx    配置 nginx日志轮转 用于logrotate服务的日志切割 3./etc/ngin ...

  3. 面试题42:翻转单词顺序VS左旋转字符串

    题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理. 例如输入字符串“I am a student.",则输出"stud ...

  4. 网络编程基础----并发编程 ---守护进程----同步锁 lock-----IPC机制----生产者消费者模型

    1  守护进程: 主进程 创建 守护进程   辅助主进程的运行 设置进程的 daemon属性 p1.daemon=True 1 守护进程会在主进程代码执行结束后就终止: 2 守护进程内无法再开启子进程 ...

  5. Apache POI实现excel导出

    链接:http://poi.apache.org/ Excel数据导出步骤: 使用poi 完成账户数据的导出功能 导入poi  jar包并添加到classpath中 1.查询数据 2.定义导出头 St ...

  6. web.xml & web-fragment.xml (Servlet 2.3, 2.4, 2.5 + 3.0)模板

    转自:http://jlcon.iteye.com/blog/890964 web.xml v2.3 <?xml version="1.0" encoding="I ...

  7. swing之gridlayout

    package gui1; import java.awt.FlowLayout; import java.awt.GridLayout; import javax.swing.JButton; im ...

  8. ShadowGun 图形技术分析

    https://zhuanlan.zhihu.com/p/27966138 ShadowGun虽然是2011年的移动平台的游戏demo,但是里面的很多优化技巧到现在来看都是很值得学习的,毕竟是上过西瓜 ...

  9. [转] AS3地图拼接与战争迷雾的实现

    在开发游戏的过程中,特别是地图编辑器中,需要利用最少的资源,实现最丰富的地形地貌.虽然现在众多的RPG开始使用整图,但是我们偶尔还是需要能够让玩家自己编辑地图,或者其他需要自动进行地图构建的功能.另外 ...

  10. arm linux 下移植busybox 的tftp

    (1)进入busybox目录,make menuconfig ,然后在networking中勾选tftp项跟tftpd项. (2)配置/etc/inetd.conf 中关于tftp的选项(此部未验证, ...