`

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 对 ResponseBody返回json数据进行脱敏处理

    在Spring MVC框架中,开发Web应用时经常需要将对象转换为JSON格式的数据并返回给客户端。然而,在处理敏感数据时,我们可能希望对这些数据进行脱敏,即隐藏或替换某些字段,以保护用户隐私或者确保数据安全性。本文...

    spring mvc(整合了json)

    Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,主要用于构建 MVC(Model-View-Controller)模式的 Web 应用程序。在现代 Web 开发中,JSON(JavaScript Object Notation)作为一种...

    spring mvc生成xml或json

    在Spring MVC框架中,开发人员经常需要处理不同的数据交换格式,如XML和JSON,以便与客户端进行交互。这两种格式在Web应用中广泛用于传输数据,因为它们轻量级且易于解析。下面我们将深入探讨如何在Spring MVC中生成...

    Spring3 MVC Ajax with JSON

    **Spring3 MVC与Ajax结合使用JSON** 在现代Web开发中,Spring框架的MVC模块与Ajax和JSON的集成是创建动态、响应式用户界面的关键技术。这个"Spring3 MVC Ajax with JSON"项目提供了一个Eclipse工程,包含了实现这一...

    spring-mvc-jsonview源代码

    本篇文章将通过解析“spring-mvc-jsonview”源代码,深入探讨Spring MVC如何支持AJAX请求,并提供一个实际的使用教程。 一、JSON视图解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人...

    Spring.MVC学习指南.pdf

    这份“Spring.MVC学习指南.pdf”很可能是为了帮助开发者深入理解和掌握Spring MVC的核心概念、工作原理以及实践技巧。下面将详细阐述Spring MVC的相关知识点。 1. **核心组件**: - **DispatcherServlet**:Spring...

    spring3-miniweb.rar_spring json_spring3_spring3 mvc

    在这个名为"spring3-miniweb.rar"的压缩包中,我们关注的是如何在Spring 3中处理JSON数据,这在现代Web应用中非常常见,因为JSON是数据交换的首选格式。下面将详细解释Spring MVC中处理JSON的基本概念和实现步骤。 ...

    spring-mvc-官方中文文档

    12. **消息转换**:Spring MVC 提供了 HttpMessageConverter 接口,用于将 HTTP 请求和响应体与 Java 对象之间进行转换,支持 JSON、XML 等格式。 13. **RESTful 风格**:Spring MVC 可以很方便地支持 RESTful 风格...

    spring—mvc -json

    在实际开发中,还可以利用Spring Data REST自动创建RESTful服务,或者使用`@JsonInclude`和`@JsonView`等注解控制JSON序列化的细节。通过深入理解和掌握这些知识点,开发者能够更高效地构建和维护JSON接口。

    spring4 mvc json配置jar包

    在Spring4 MVC的配置中,通常需要在`web.xml`或Spring的配置文件中添加MVC的JSON处理器,比如`Jackson2HttpMessageConverter`,以便让Spring MVC能够自动处理JSON请求和响应。同时,需要在`pom.xml`或构建文件中引入...

    Spring3MVC和jQuery的集成

    配置Spring3 MVC通常涉及web.xml的设置、DispatcherServlet的配置以及Spring的上下文配置(如beans.xml)。 接下来,让我们转向jQuery。jQuery简化了JavaScript编程,提供了一套简洁的API来处理DOM操作,如元素选择...

    Spring MVC 学习笔记 十二 PDF/Excel格式输出

    在实际开发中,Spring MVC还与其他Spring模块,如Spring AOP(面向切面编程)、Spring Security(安全)、Spring Data(数据访问)等深度集成,以提供更全面的解决方案。 对于PDF和Excel格式的输出,Spring MVC可以...

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

    本篇文章将详细介绍如何在Spring MVC的XML配置中设置,以便让`@ResponseBody`自动将Java对象转换为JSON。 首先,`@ResponseBody`的作用是在方法返回的对象不是HTML片段而是其他格式数据(例如JSON或XML)时使用的。...

    spring-mvc-showcase

    此外,该项目还展示了如何配置 Spring MVC,例如在 web.xml 中配置 DispatcherServlet,以及在 Spring 配置文件中定义 HandlerMapping 和 HandlerAdapter 等。这有助于理解 Spring MVC 的工作流程。 "spring-mvc-...

    RESTful_Spring3MVC

    2. 表述(Representation):资源的状态可以通过不同的格式(如JSON或XML)进行表述。 3. 状态转移(State Transfer):客户端通过HTTP方法(GET、POST、PUT、DELETE等)来改变服务器上的资源状态。 在Spring 3 MVC...

    spring3MVC.pdf

    Spring MVC允许在控制器中使用`@ExceptionHandler`注解来处理特定类型的异常,提供统一的错误页面或JSON响应。此外,Spring提供了测试工具,如`MockMvc`,使得编写单元测试和集成测试变得更加容易。 综上所述,...

    精通spring mvc 4 看透springmvc pdf 高清完全版

    书中详细介绍了如何定义RESTful资源,使用HTTP动词(GET、POST、PUT、DELETE等)处理操作,以及如何处理JSON和XML数据格式。 在实战部分,本书提供了丰富的案例和示例代码,让读者能够在实践中学习和应用所学知识。...

    Spring MVC返回JSON数据 用到的jar包

    在Spring MVC中,为了将Java对象转换成JSON格式并返回给客户端,我们需要依赖于JSON库。在提供的信息中,提到了`jackson-all-1.9.x.jar`系列的包,这是Jackson库的一个早期版本。Jackson是一个非常流行的JSON处理库...

    Spring+Servlet读取数据库返回JSON数据(源码).zip

    在Spring MVC中,我们可以使用Jackson库或者Gson库将Java对象转换为JSON字符串,或者将JSON字符串反序列化为Java对象。 在这个示例项目中,"dbtest"可能是一个包含数据库连接和查询的Java类或者包。Spring框架提供...

    spring mvc + spring + mybatis+json整合

    Spring MVC是Spring框架的一部分,专用于构建Web应用程序的Model-View-Controller(MVC)架构。MyBatis则是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。JSON(JavaScript Object Notation)是一...

Global site tag (gtag.js) - Google Analytics