<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    e代劍客——溫柔一刀

    生活就像海洋,只有意志堅強的人,才能到達彼岸

       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      76 隨筆 :: 7 文章 :: 215 評論 :: 0 Trackbacks
    HTML頁面并不總是向用戶顯示數據輸出的最好方式,有時候需要生成不可改變的文件打印,PDF可能是種不錯的選擇。

    Spring支持從數據動態生成PDF或Excel文件

    下面這個簡單實現的例子實現了spring輸出PDF和Excel文件,為了使用Excel電子表格,你需要在你的classpath中加入poi-2.5.1.jar庫文件,而對PDF文件,則需要iText.jar文件。它們都包含在Spring的主發布包中。

    下面是測試項目代碼:


    1、控制器配置代碼
    <?xml?version="1.0"?encoding="UTF-8"?>
    <!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd">

    <beans>
    ????
    <bean?id="beanNameViewResolver"
    ????????class
    ="org.springframework.web.servlet.view.BeanNameViewResolver"?/>

    ????
    <bean?id="viewController"?class="com.zhupan.spring.ViewController"?/>
    ????
    <bean?id="urlMapping"
    ????????class
    ="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    ????????
    <property?name="mappings">
    ????????????
    <props>
    ????????????????
    <prop?key="/view*.shtml">viewController</prop>
    ????????????
    </props>
    ????????
    </property>
    ????
    </bean>
    </beans>

    ?3、用于Excel視圖的視圖子類化
    為了在生成輸出文檔的過程中實現定制的行為,我們將繼承合適的抽象類。對于Excel,這包括提供一個 org.springframework.web.servlet.view.document.AbstractExcelView的子類,并實現 buildExcelDocument方法。
    package?com.zhupan.view;

    import?java.util.Date;
    import?java.util.Map;
    import?javax.servlet.http.HttpServletRequest;
    import?javax.servlet.http.HttpServletResponse;

    import?org.apache.poi.hssf.usermodel.HSSFCell;
    import?org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import?org.apache.poi.hssf.usermodel.HSSFDataFormat;
    import?org.apache.poi.hssf.usermodel.HSSFRow;
    import?org.apache.poi.hssf.usermodel.HSSFSheet;
    import?org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import?org.springframework.web.servlet.view.document.AbstractExcelView;


    public?class?ViewExcel?extends?AbstractExcelView?{

    ??
    public?void?buildExcelDocument(
    ?????????????Map?model,?HSSFWorkbook?workbook,
    ?????????????HttpServletRequest?request,?HttpServletResponse?response)
    ????
    throws?Exception?{
    ??
    ???????HSSFSheet?sheet?
    =?workbook.createSheet("list");
    ???????sheet.setDefaultColumnWidth((
    short)?12);
    ???????
    ???????
    ???????HSSFCell?cell?
    =?getCell(sheet,?0,?0);
    ???????setText(cell,?
    "Spring?Excel?test");
    ??
    ???????HSSFCellStyle?dateStyle?
    =?workbook.createCellStyle();
    ???????dateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(
    "m/d/yy"));
    ???????cell?
    =?getCell(sheet,?1,?0);
    ???????cell.setCellValue(
    new?Date());
    ???????cell.setCellStyle(dateStyle);
    ???????getCell(sheet,?
    2,?0).setCellValue(458);
    ??
    ???????HSSFRow?sheetRow?
    =?sheet.createRow(3);
    ???????
    for?(short?i?=?0;?i?<?10;?i++)?{
    ?????????????sheetRow.createCell(i).setCellValue(i?
    *?10);
    ???????}


    ??}

    ??
    }


    4、用于PDF視圖的視圖子類化
    需要象下面一樣繼承org.springframework.web.servlet.view.document.AbstractPdfView,并實現buildPdfDocument()方法。
    package?com.zhupan.view;

    import?java.util.List;
    import?java.util.Map;

    import?javax.servlet.http.HttpServletRequest;
    import?javax.servlet.http.HttpServletResponse;

    import?org.springframework.web.servlet.view.document.AbstractPdfView;

    import?com.lowagie.text.Document;
    import?com.lowagie.text.Paragraph;
    import?com.lowagie.text.pdf.PdfWriter;

    public?class?ViewPDF?extends?AbstractPdfView?{
    ????
    public?void?buildPdfDocument(Map?model,?Document?document,
    ????????????PdfWriter?writer,?HttpServletRequest?request,
    ????????????HttpServletResponse?response)?
    throws?Exception?{

    ????????List?list?
    =?(List)?model.get("list");

    ????????
    for?(int?i?=?0;?i?<?list.size();?i++)
    ????????????document.add(
    new?Paragraph((String)?list.get(i)));
    ????}


    }

    5、其他文件
    1)控制器ViewController
    package?com.zhupan.spring;

    import?java.util.ArrayList;
    import?java.util.HashMap;
    import?java.util.List;
    import?java.util.Map;

    import?javax.servlet.http.HttpServletRequest;
    import?javax.servlet.http.HttpServletResponse;

    import?org.springframework.web.servlet.ModelAndView;
    import?org.springframework.web.servlet.mvc.multiaction.MultiActionController;

    import?com.zhupan.view.ViewExcel;
    import?com.zhupan.view.ViewPDF;


    public?class?ViewController?extends?MultiActionController{
    ?????
    ?????
    public?ModelAndView?viewPDF(HttpServletRequest?request,?HttpServletResponse?response)?throws?Exception?{
    ???????List?list?
    =?new?ArrayList();
    ???????Map?model
    =new?HashMap();
    ???????list.add(
    "test1");
    ???????list.add(
    "test2");
    ???????model.put(
    "list",list);
    ???????ViewPDF?viewPDF
    =new?ViewPDF();
    ???????
    return?new?ModelAndView(viewPDF,model);
    ??}

    ?????
    ??????
    public?ModelAndView?viewExcel(HttpServletRequest?request,?HttpServletResponse?response)?throws?Exception?{
    ????????????List?list?
    =?new?ArrayList();
    ????????Map?model
    =new?HashMap();
    ????????list.add(
    "test1");
    ????????list.add(
    "test2");
    ????????model.put(
    "list",list);
    ????????ViewExcel?viewExcel
    =new?ViewExcel();
    ????????
    return?new?ModelAndView(viewExcel,model);
    ??????}

    }
    2)web.xml
    <?xml?version="1.0"?encoding="UTF-8"?>
    <web-app?version="2.4"?xmlns="http://java.sun.com/xml/ns/j2ee"
    ????xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
    ????xsi:schemaLocation
    ="http://java.sun.com/xml/ns/j2ee?
    ????http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    >

    ????
    <display-name>springPDFTest</display-name>
    ????
    <servlet>
    ????????
    <servlet-name>springPDFTest</servlet-name>
    ????????
    <servlet-class>
    ????????????org.springframework.web.servlet.DispatcherServlet
    ????????
    </servlet-class>
    ????????
    <load-on-startup>1</load-on-startup>
    ????
    </servlet>

    ????
    <servlet-mapping>
    ????????
    <servlet-name>springPDFTest</servlet-name>
    ????????
    <url-pattern>*.shtml</url-pattern>
    ????
    </servlet-mapping>

    ????
    <welcome-file-list>
    ????????
    <welcome-file>index.jsp</welcome-file>
    ????
    </welcome-file-list>

    </web-app>

    3)index.jsp
    <%@?page?contentType="text/html;?charset=gb2312"%>

    <a?href="viewPDF.shtml">PDF視圖打開?</a>
    <br>
    <a?href="viewExcel.shtml">Excel視圖打開</a>
    posted on 2006-10-04 12:11 溫柔一刀 閱讀(7316) 評論(7)  編輯  收藏 所屬分類: 開源框架

    評論

    # re: spring 生成Excel和PDF文件 2006-10-15 17:06 曲靜波
    有個問題,如果不用spring的controller或改成struts的action或servlet可以使用viewPdf 和 viewExcel嗎?  回復  更多評論
      

    # re: spring 生成Excel和PDF文件 2006-10-16 08:52 溫柔一刀
    @曲靜波
    直接是不可以的
    因為它們都extends AbstractPdfView
    而AbstractPdfView是spring提供的
    org.springframework.web.servlet.view.document.AbstractExcelView
    如果要用的話就得把spring的包導入項目  回復  更多評論
      

    # re: spring 生成Excel和PDF文件 2007-04-04 15:12 yangaries
    我把它部署在Eclipse中,為什么單擊“Excel視圖打開”后提示“Servlet springPDFTest is not available”呢?
      回復  更多評論
      

    # re: spring 生成Excel和PDF文件 2007-04-04 16:40 yangaries
    解決了,jar包放錯地方了,呵呵。
    能解釋一下在位置文件中控制是怎樣傳遞的么?  回復  更多評論
      

    # re: spring 生成Excel和PDF文件[未登錄] 2008-10-21 17:55 michael
    請問樓上的,我也遇到同樣的問題了,你能不能告訴我詳細點的解決方案呢  回復  更多評論
      

    # re: spring 生成Excel和PDF文件[未登錄] 2008-10-21 17:59 michael
    17:05:32,125 INFO [STDOUT] 2008-10-21 17:05:32,109 [main] ERROR org.springframe
    work.web.servlet.DispatcherServlet - Context initialization failed
    org.springframework.beans.factory.BeanDefinitionStoreException: IOException pars
    ing XML document from ServletContext resource [/WEB-INF/springPDFTest-servlet.xm
    l]; nested exception is java.io.FileNotFoundException: Could not open ServletCon
    text resource [/WEB-INF/springPDFTest-servlet.xml]
    Caused by:
    java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/
    springPDFTest-servlet.xml]
    ------------------------------
    這個是JBOSS的錯誤信息  回復  更多評論
      

    # re: spring 生成Excel和PDF文件 2010-03-10 16:07 XT
    在 使用 Excel視圖打開 的時候有中文亂碼問題,
    搞了半天都沒解決 ,樓主,再麻煩一下  回復  更多評論
      

    聯系偶 zhupanjava@gmail.com 溫柔一刀
    主站蜘蛛池模板: 亚洲高清一区二区三区电影| 亚洲高清在线视频| 亚洲AV成人无码久久WWW| www.999精品视频观看免费| 亚洲成人一级电影| 日本免费网址大全在线观看| 亚洲欧洲自拍拍偷综合| 美女视频黄的全免费视频| 亚洲免费在线视频播放| 成人免费无码视频在线网站| 亚洲最大天堂无码精品区| 国内一级一级毛片a免费| 在线观看亚洲免费| 久久亚洲中文字幕精品一区四| 一级毛片成人免费看a| 亚洲中文久久精品无码| 中文字字幕在线高清免费电影| 亚洲人成网站在线观看播放| 免费成人在线电影| 亚洲中文无码av永久| 天天干在线免费视频| 激情吃奶吻胸免费视频xxxx| 国产精品V亚洲精品V日韩精品| 成人自慰女黄网站免费大全| 亚洲人成在线影院| 成人免费淫片在线费观看| 日韩精品无码永久免费网站| 亚洲色欲久久久综合网东京热| 日韩精品无码一区二区三区免费 | 免费观看亚洲人成网站| 羞羞漫画在线成人漫画阅读免费| 亚洲精品高清在线| 久久久久免费看成人影片| 亚洲精品人成网在线播放影院| 国产又黄又爽又刺激的免费网址 | 亚洲国产精品一区二区第一页免| 精品乱子伦一区二区三区高清免费播放| 亚洲AV无码乱码在线观看富二代 | 亚洲视频免费观看| 精品在线观看免费| 亚洲网站在线观看|