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. EF4 Model 代码生成EFPowerTools,Vs2015不支持,自己封装一个

    Vs2013上面有个插件EFPowerTools,用来生产entity实体代码的.目前官方只支持到Vs2013,虽然经过网上网友的方法,修改支持版本号,可以在Vs2015上安装.安装后连接远程数据库还 ...

  2. [转载]java操作word(一)

    一. 需求背景 在做项目的过程中,经常会遇到要把数据库数据导出到Word文件中的需求,因为很多情况下,我们需要将数据导出到WORD中进行打印.此需求可以通过用程序填充数据到word模板中来实现.所谓模 ...

  3. 22 Python 模块与包

    一 模块 1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编 ...

  4. java学习笔记 --- IO流小结

    IO流  |--字节流    |--字节输入流     InputStream      int read():一次读取一个字节      int read(byte[] bys):一次读取一个字节数 ...

  5. MBA 工商管理课程-风险型决策方法

    (二)风险型决策方法      适用的条件                未来情况不止一种,管理者不知道到底哪种情况会发生,但知道每种情况发生的概率       常用方法:              ...

  6. GCD多线程的使用

    转载自http://blog.csdn.net/nono_love_lilith/article/details/7829557 写得非常好 1.下面来看下如何使用gcd编程的异步 dispatch_ ...

  7. uva1636 - Headshot(条件概率)

    简单的条件概率题,直接再来一枪没子弹的概率是所有子串”00“的数目除以‘0’的数目,随机转一下再打没子弹的概率是‘0’的数目除以总数目. #include<iostream> #inclu ...

  8. 利用HTML5开发Android笔记(上篇)

    资源来自于www.mhtml5.com 杨丰盛老师成都场的PPT分享 一个很简明的demo 可以作为入门基础 学习的过程中做了点笔记 整理如下 虽然内容比较简单 但是数量还是比较多的 所以分了3篇 ( ...

  9. PHP数据结构之实现栈

    接着前面PHP数据结构来学习,今天写的是实现栈. <?php class stack //定义一个栈的类 { private $size; //栈的空间大小 private $top; // 栈 ...

  10. LeetCode 336. Palindrome Pairs

    原题链接在这里:https://leetcode.com/problems/palindrome-pairs/ 题目: Given a list of unique words, find all p ...