`

Spring 3 mvc中返回pdf,json,xml等不同的view

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

先是一个简单的pojo

package com.hmkcode.vo;
 
import javax.xml.bind.annotation.XmlRootElement;
 
@XmlRootElement(name = "person")
public class Person {
 
    private int id;
    private String name;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String toString(){
        return "ID: "+id+" - Name: "+name;
    }
 
}


   注意使用@XmlRootElement标签之。

然后是controller:
  
@Controller
public class MyController {
 
    @RequestMapping("/view")
    public Person getPerson(Model model){
        Person person = new Person();
        person.setId(1);
        person.setName("test");
        model.addAttribute("person",person);
        return person;
    }



  然后分别假设要导出为PDF的view,引入著名的itext了;
public class PdfView extends AbstractPdfView {
 
    protected void buildPdfDocument(
        Map model,
        Document doc,
        PdfWriter writer,
        HttpServletRequest req,
        HttpServletResponse resp)
        throws Exception {
 
     
        Person person = (Person) model.get("person");
        doc.add( new Paragraph(person.toString()));
 
    }


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

然后是web.xml:

<servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
 
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>


  最核心的配置来了:

         <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
      <property name="order" value="1" />
      <property name="mediaTypes">
        <map>
           <entry key="json" value="application/json" />
           <entry key="xml" value="application/xml" />
           <entry key="pdf" value="application/pdf" />
 
        </map>
      </property>
 
      <property name="defaultViews">
        <list>
          <!-- JSON View -->
          <bean
            class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
          </bean>
          <!--  XML view -->
            <bean class="org.springframework.web.servlet.view.xml.MarshallingView">
            <constructor-arg>
                <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
                   <property name="classesToBeBound">
                    <list>
                       <value>com.test.Person</value>
                    </list>
                   </property>
                </bean>
            </constructor-arg>
          </bean>
          <!--  PDF view -->
          <bean class="com.test.PdfView">
 
            </bean>
         </list>
      </property>
      <property name="ignoreAcceptHeader" value="true" />
 
    </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了,真的十分方便呀
4
2
分享到:
评论
2 楼 great_yellow 2015-08-24  
更通用的pdf视图渲染方案呢,例如根据模板来渲染
1 楼 dcbjavaeye 2014-05-04  

相关推荐

    spring mvc生成xml或json

    spring mvc生成xml或json

    spring Mvc配置xml使ResponseBody返回Json的方法示例

    主要给大家介绍了关于spring Mvc配置xml使ResponseBody返回Json的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

    sprjson,spring mvc的json和xml视图,dwr及静态资源等不同种类url整合

    spring mvc的json和xml视图,dwr及静态资源等不同种类url整合,对应博客教程地址: http://blog.csdn.net/qgmzzn1/article/details/8465969

    Spring @MVC REST 实例以及 (同一资源,多种展现:xml,json,html)

    该实例展示了 spring3 REST 的使用方法,以及同一种内容,多种不同方式展示的实现,例如同一 User 信息,可以展示为:xml,json,html三种不同的格式。可以参考这篇文章:http://badqiu.javaeye.com/blog/552806

    Spring+Spring mvc+Hibernate+Bootstrap、企业级员工信息管理系统

    Spring mvc 返回数据格式采用统一的对象(JSONReturn)进行封装 09. 通过自定义处理器 ExceptionIntercept 实现 Spring mvc的全局异常捕获 10. 系统中包含了企业中采用的开发工具类的集合 11. AbstractDao 父类...

    Spring3MVC注解教程.ppt

    《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及...

    spring mvc restful service

    spring mvc restful service,支持string, json, xml, maven工程,可以直接运行

    spring_MVC源码

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...

    spring mvc 3.2 参考文档

    并分发请求到处理程序(handler),Spring MVC支持可配置的处理程序映射(handler mapping),视图解析(view resolution)、 区域设置(locale)和主题解析(theme resolution),以及文件上传等特性。默认handler基于 @...

    spring MVC学习笔记

    spring mvc的学习笔记,主要讲解了基于xml的配置,和如何增加spring mvc拦截器,如何返回json报文

    Springmvc如何返回xml及json格式数据

    主要介绍了Springmvc如何返回xml及json格式数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Spring mvc 接收json对象

    本文通过代码实例介绍spring mvc 接收json数据的方法,具体详情如下所示: 接收JSON 使用 @RequestBody 注解前台只需要向 Controller 提交一段符合格式的 JSON,Spring 会自动将其拼装成 bean。 1)在上面的项目中...

    Spring MVC 3.0实战指南.ppt

    《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及解析器 7...

    spring-boot-reference.pdf

    Auto-configured Spring REST Docs Tests with Mock MVC Auto-configured Spring REST Docs Tests with REST Assured 43.3.20. User Configuration and Slicing 43.3.21. Using Spock to Test Spring Boot ...

    spring-basic:弹簧基础

    spring-basic spring核心知识学习 弹簧芯 2015-05-18 春天环境搭建 spring xml配置 弹簧配置(xml,注释,java) spring Bean 自动装配(xml) spring Bean 自动装配... 3.Spring MVC 查看JSON | XML | PDF | 卓越

    Ajax-WebStore-Spring-MVC.zip

    Ajax-WebStore-Spring-MVC.zip,webstore是一个在spring mvc中构建的成熟的在线购物系统。它使用jsp进行视图模板化,在数据库端使用mysql。,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、...

    springmvc-rest:使用 Spring MVC 提供 JSON 和 XML 响应的 Restful 服务

    Spring MVC - REST Web 服务 对于相同的域对象,RestController 通过接受 application/json 或 application/xml 生成相应的响应。 设置标题 接受:application/json,或 接受:应用程序/xml 并将 GET 请求发送到

    Ajax-spring-mvc-ex.zip

    Ajax-spring-mvc-ex.zip,SpringMVC___:__,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新加载网页的情况下更改。

    springmvc + jquery + ajax + json 异步传递数据

    springmvc jquery ajax json 异步传递数据 springmvc异步传递请求 已包含全部源代码实现 把jar包放入 然后新建文件 配置xml !!!!! 全部资源

Global site tag (gtag.js) - Google Analytics