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. jsp: jstl标签库 uri标签

    与 URL 相关的标签主要是用来将其他文件包含进来,或者提供页面之间的重定位以及 URL 地址的生成.参数的输出等等.一般包括如下几个标签<c:import>标签:与传统 JSP 页面中的 ...

  2. 解决Navicat连接mysql报错:1862 - Your password has expired. To log in you must change it using a client that supports expired passwords.

    今天尝试用Navicat连接mysql时,发现一个1862的报错问题: 后来参照这篇文章https://blog.csdn.net/u010513756/article/details/5073501 ...

  3. Uninstall Office 2016 for Mac

    官方原文:https://support.office.com/en-us/article/Uninstall-Office-2016-for-Mac-eefa1199-5b58-43af-8a3d- ...

  4. 理解AOP思想(面向切面编程)

    AOP:面向切面编程,相信很多刚接触这个词的同行都不是很明白什么,百度一下看到下面这几句话: 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预 ...

  5. LSTM与Highway-LSTM算法实现的研究概述

    LSTM与Highway-LSTM算法实现的研究概述 zoerywzhou@gmail.com http://www.cnblogs.com/swje/ 作者:Zhouwan  2015-12-22 ...

  6. explicit修饰构造函数

    问题描述:对于单参数的构造函数C++允许隐含的类型转换,容易破坏代码可读性,并导致难以发现的错误,通过关键字explicit修饰构造函数可以禁止单参数构造函数创建隐式临时变量.

  7. Struts2(1)

    一.struts概述 1.struts2框架应用在javaee三层结构中web层框架 2.struts2框架在struts1和webwork基础之上发展全新的框架 二.struts2环境搭建 1.导包 ...

  8. MyISAM引擎的特点及优化方法

    1.什么是MyISAM引擎?MyISAM引擎是MySQL关系数据库管理系统的默认存储引擎(MySQL5.5.5以前),这种MySQL的表存储结构从旧的ISAM代码扩展出许多有用的功能.在存储的时候,每 ...

  9. UVA - 11107 Life Forms (广义后缀自动机)

    题意:给你n个字符串,求出在超过一半的字符串中出现的所有子串中最长的子串,按字典序输出. 对这n个字符串建广义后缀自动机,建完后每个字符串在自动机上跑一遍,沿fail树向上更新所有子串结点的出现次数( ...

  10. C# partial 说明(转)

    http://www.cnblogs.com/Echo_saq/archive/2012/11/19/2777058.html 1. 什么是局部类型? C# 2.0 引入了局部类型的概念.局部类型允许 ...