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. windows live writer 设置默认字体

      下载 Text Template 插件 设置默认字体添加模版. <p style="padding-bottom: 0px; line-height: 130%; margin-t ...

  2. 动态加载CSS,JS文件

    var Head = document.getElementsByTagName('head')[0],style = document.createElement('style'); //文件全部加 ...

  3. vue项目组件的全局注册

    在vue-cli项目中,我们经常会封装自己的组件,并且要在多个界面中引用它,这个时候就需要全局注册组件. 首先我们会封装自己的组件,比如twoDimensionTable文件夹下的index.vue: ...

  4. 单链表输出倒数第k个结点值(栈实现)

    思路1:定义两个指针变量p和q,初始时均指向头节点的下一个节点(链表的第一个节点),p指针沿链表移动: 当p指针移动到第k个节点时,q指针开始与p指针同步移动, 当p指针移动到最后一个节点时,q指针所 ...

  5. Codeforces Round #276 (Div. 2)A. Factory(数论)

    这道题可以暴力的一直按要求的方法去做,做1000000次还不能整除m就认为永远不能整除m了(m不超过100000,循环1000000次比较安全了已经).这种方法可以AC. 下面深入的分析一下到底循环多 ...

  6. 掌握sudo的使用

    “sudo”是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他 特许用户才能完成的任务,比如:运行一些像mount,h ...

  7. DataTable:数据库到程序的桥梁

    DataTable:是一个临时保存数据的网格虚拟表(表示内存中数据的一个表.).DataTable是ADO dot net 库中的核心对象,它无须代码就可以简单的绑定数据库,它具有微软风格的用户界面. ...

  8. 转:django关于csrf防止跨站的ajax请求403处理

    http://blog.csdn.net/wjy397/article/details/49078099

  9. 在asp.net中使JQuery的Ajax用总结

    自从有了JQuery,Ajax的使用变的越来越方便了,但是使用中还是会或多或少的出现一些让人短时间内痛苦的问题.本文暂时总结一些在使用JQuery Ajax中应该注意的问题,如有不恰当或者不完善的地方 ...

  10. Mesos问题汇总

    1.Mesos的IP配置 我在虚拟机里面搭载了一个mesos,但是外主机无法通过http://ip:5050 我在虚拟机内部测试发现wget localhost:5050可以正常访问:但是wget i ...