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

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

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

先是一个简单的pojo
Java代码  
 
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;   
    }   
    
}  


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:
   Java代码  
@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;   
    }  

@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了;
Java代码  
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()));   
    
    }  

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:

Java代码  
<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>  

<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>


  最核心的配置来了:

Java代码  
   <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" />   
 
t;/bean>  

         <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了,真的十分方便呀

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统根据B/S,即所谓的电脑浏览器/网络服务器方式,运用Java技术性,挑选MySQL作为后台系统。系统主要包含对客服聊天管理、字典表管理、公告信息管理、金融工具管理、金融工具收藏管理、金融工具银行卡管理、借款管理、理财产品管理、理财产品收藏管理、理财产品银行卡管理、理财银行卡信息管理、银行卡管理、存款管理、银行卡记录管理、取款管理、转账管理、用户管理、员工管理等功能模块。 文重点介绍了银行管理的专业技术发展背景和发展状况,随后遵照软件传统式研发流程,最先挑选适用思维和语言软件开发平台,依据需求分析报告模块和设计数据库结构,再根据系统功能模块的设计制作系统功能模块图、流程表和E-R图。随后设计架构以及编写代码,并实现系统能模块。最终基本完成系统检测和功能测试。结果显示,该系统能够实现所需要的作用,工作状态没有明显缺陷。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。进入银行卡列表,管理员可以进行查看列表、模糊搜索以及相关维护等操作。用户进入系统可以查看公告和模糊搜索公告信息、也可以进行公告维护操作。理财产品管理页面,管理员可以进行查看列表、模糊搜索以及相关维护等操作。产品类型管理页面,此页面提供给管理员的功能有:新增产品类型,修改产品类型,删除产品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值