zoukankan      html  css  js  c++  java
  • 工作的时候用到spring返回xml view查到此文章亲测可用

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

    先是一个简单的pojo

    Java代码  收藏代码
    1. package com.hmkcode.vo;  
    2.    
    3. import javax.xml.bind.annotation.XmlRootElement;  
    4.    
    5. @XmlRootElement(name = "person")  
    6. public class Person {  
    7.    
    8.     private int id;  
    9.     private String name;  
    10.     public int getId() {  
    11.         return id;  
    12.     }  
    13.     public void setId(int id) {  
    14.         this.id = id;  
    15.     }  
    16.     public String getName() {  
    17.         return name;  
    18.     }  
    19.     public void setName(String name) {  
    20.         this.name = name;  
    21.     }  
    22.     public String toString(){  
    23.         return "ID: "+id+" - Name: "+name;  
    24.     }  
    25.    
    26. }  


       注意使用@XmlRootElement标签之。

    然后是controller:
      

    Java代码  收藏代码
    1. @Controller  
    2. public class MyController {  
    3.    
    4.     @RequestMapping("/view")  
    5.     public Person getPerson(Model model){  
    6.         Person person = new Person();  
    7.         person.setId(1);  
    8.         person.setName("test");  
    9.         model.addAttribute("person",person);  
    10.         return person;  
    11.     }  



      然后分别假设要导出为PDF的view,引入著名的itext了;

    Java代码  收藏代码
    1. public class PdfView extends AbstractPdfView {  
    2.    
    3.     protected void buildPdfDocument(  
    4.         Map model,  
    5.         Document doc,  
    6.         PdfWriter writer,  
    7.         HttpServletRequest req,  
    8.         HttpServletResponse resp)  
    9.         throws Exception {  
    10.    
    11.        
    12.         Person person = (Person) model.get("person");  
    13.         doc.add( new Paragraph(person.toString()));  
    14.    
    15.     }  


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

    然后是web.xml:

    Java代码  收藏代码
    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.    
    7.     <servlet-mapping>  
    8.         <servlet-name>springmvc</servlet-name>  
    9.         <url-pattern>/rest/*</url-pattern>  
    10.     </servlet-mapping>  


      最核心的配置来了:

    Java代码  收藏代码
    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.   
    9.   </map>  
    10. </property>  
    11.   
    12. <property name="defaultViews">  
    13.   <list>  
    14.     <!-- JSON View -->  
    15.     <bean  
    16.       class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">  
    17.     </bean>  
    18.     <!--  XML view -->  
    19.       <bean class="org.springframework.web.servlet.view.xml.MarshallingView">  
    20.       <constructor-arg>  
    21.           <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">  
    22.              <property name="classesToBeBound">  
    23.               <list>  
    24.                  <value>com.test.Person</value>  
    25.               </list>  
    26.              </property>  
    27.           </bean>  
    28.       </constructor-arg>  
    29.     </bean>  
    30.     <!--  PDF view -->  
    31.     <bean class="com.test.PdfView">  
    32.   
    33.       </bean>  
    34.    </list>  
    35. </property>  
    36. <property name="ignoreAcceptHeader" value="true" />  
    37.   
    38. 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了,真的十分方便呀

  • 相关阅读:
    CodeForces 19D Points (线段树+set)
    FZU 2105 Digits Count
    HDU 5618 Jam's problem again(三维偏序,CDQ分治,树状数组,线段树)
    HDU 5634 Rikka with Phi (线段树)
    Java实现 蓝桥杯 算法提高 转圈游戏(暴力快速幂)
    Java实现 蓝桥杯 算法提高 转圈游戏(暴力快速幂)
    Java实现 蓝桥杯 算法提高 转圈游戏(暴力快速幂)
    Java实现 蓝桥杯 算法提高VIP Substrings(暴力)
    Java实现 蓝桥杯 算法提高VIP Substrings(暴力)
    Java实现 蓝桥杯 算法提高VIP Substrings(暴力)
  • 原文地址:https://www.cnblogs.com/mrcharles/p/5035653.html
Copyright © 2011-2022 走看看