• Spring mvc中返回类型 pdf,json,xml等


    先是一个简单的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: 

    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>

    spring.xml核心配置

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

     最后,通过rest风格的地址,比如http://localhost/view/view.json,返回json; 
    http://localhost/view/view.pdf,则导出到pdf,http://localhost/view/view.xml, 
    返回前端就xml了

  • 相关阅读:
    范式理论
    事务
    触发器练一练
    Javascript模块化编程(三):require.js的用法
    Javascript模块化编程(二):AMD规范
    Javascript模块化编程(一):模块的写法
    什么是比特币?这可能是最通俗易懂的答案了
    Apache服务器的Options 的 Indexes FollowSymLinks详解
    机器学习进阶-图像金字塔与轮廓检测-图像金字塔(拉普拉斯金字塔)
    机器学习进阶-图像金字塔与轮廓检测-图像金字塔-(**高斯金字塔) 1.cv2.pyrDown(对图片做向下采样) 2.cv2.pyrUp(对图片做向上采样)
  • 原文地址:https://www.cnblogs.com/javaMan/p/jackyrong2.html
Copyright © 2020-2023  润新知