java技術(shù)研究

          導(dǎo)航

          <2013年2月>
          272829303112
          3456789
          10111213141516
          17181920212223
          242526272812
          3456789

          隨筆分類

          隨筆檔案

          統(tǒng)計(jì)

          留言簿(3)

          閱讀排行榜

          評(píng)論排行榜

          Struts2 + JasperReport應(yīng)用一:導(dǎo)PDF,Excel,HTML顯示(轉(zhuǎn))

          轉(zhuǎn)自:http://zmx.iteye.com/blog/583482
          Struts2 + JasperReport應(yīng)用一:導(dǎo)PDF,Excel,HTML顯示

          HTMLExcelStrutsServletXML 

          我用的是struts2.1.6,從struts2的自帶的demo當(dāng)中可以看到它的web.xml配置與之前的有點(diǎn)不同,有另外一種配置:

          Xml代碼  收藏代碼
          1. <filter>  
          2.         <filter-name>Struts2</filter-name>  
          3.         <filter-class>  
          4.             org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  
          5.         </filter-class>  
          6.     </filter>  
          7.     <filter-mapping>  
          8.         <filter-name>Struts2</filter-name>  
          9.         <url-pattern>/*</url-pattern>  
          10.     </filter-mapping>  

           

          這樣的配置可以在web.xml配置我們的serlvet,如果寫成以前的寫法你配置上serlvet會(huì)報(bào)錯(cuò)。

           

          將我們?cè)O(shè)置的報(bào)表文件和編譯文件放到WebRoot下面的jasper下面,添加struts2對(duì)jasperReport的插件。

          構(gòu)造我們的JavaBean如下(get,set方法省略了):

          Java代碼  收藏代碼
          1. public class Person {  
          2.     private String person_Id;  
          3.   
          4.     private String person_name;  
          5.   
          6.     private String person_age;  
          7.   
          8.     private String person_address;  
          9. }  

           構(gòu)造我們的service:

          Java代碼  收藏代碼
          1. public class PersonService {  
          2.     public List<Person> getAllPerson() {  
          3.         List<Person> perList = new ArrayList<Person>();  
          4.         perList.add(new Person("101", "小博", "22", "湖北"));  
          5.         perList.add(new Person("102", "張三", "21", "湖南"));  
          6.         perList.add(new Person("103", "李四", "23", "江蘇"));  
          7.         perList.add(new Person("104", "王五", "22", "上海"));  
          8.         return perList;  
          9.     }  
          10. }  

           構(gòu)造action:

          Java代碼  收藏代碼
          1. public class PersonAction extends ActionSupport {  
          2.   
          3.     private List<Person> presonList = null;  
          4.   
          5.     private Map<String, String> reportParameter = null;  
          6.   
          7.     @Override  
          8.     public String execute() throws Exception {  
          9.         presonList = new PersonService().getAllPerson();  
          10.         reportParameter = new HashMap<String, String>();  
          11.         reportParameter.put("year", "2009");  
          12.         reportParameter.put("unit_mc", "武漢XX科技有限公司");  
          13.         return SUCCESS;  
          14.     }  
          15.       
          16.     public String htmlView(){  
          17.         return SUCCESS;  
          18.     }  
          19.       
          20.     public List<Person> getPresonList() {  
          21.         return presonList;  
          22.     }  
          23.   
          24.     public void setPresonList(List<Person> presonList) {  
          25.         this.presonList = presonList;  
          26.     }  
          27.   
          28.     public Map<String, String> getReportParameter() {  
          29.         return reportParameter;  
          30.     }  
          31.   
          32.     public void setReportParameter(Map<String, String> reportParameter) {  
          33.         this.reportParameter = reportParameter;  
          34.     }  
          35. }  

           struts配置如下:

          Xml代碼  收藏代碼
          1. <!DOCTYPE struts PUBLIC  
          2.         "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
          3.         "http://struts.apache.org/dtds/struts-2.0.dtd">  
          4. <struts>  
          5.     <constant name="struts.action.extension" value="action" />  
          6.   
          7.     <package name="jasperReport"  
          8.         extends="struts-default,jasperreports-default">  
          9.         <action name="PDF" class="com.mengya.action.PersonAction">  
          10.             <result name="success" type="jasper">  
          11.                 <param name="location">/jasper/preson.jasper</param>  
          12.                 <param name="dataSource">presonList</param>  
          13.                 <param name="reportParameters">reportParameter</param>  
          14.                 <param name="format">PDF</param>  
          15.             </result>  
          16.         </action>  
          17.   
          18.         <action name="XLS" class="com.mengya.action.PersonAction">  
          19.             <result name="success" type="jasper">  
          20.                 <param name="location">/jasper/preson.jasper</param>  
          21.                 <param name="dataSource">presonList</param>  
          22.                 <param name="reportParameters">reportParameter</param>  
          23.                 <param name="format">XLS</param>  
          24.             </result>  
          25.         </action>  
          26.         <action name="XML" class="com.mengya.action.PersonAction">  
          27.             <result name="success" type="jasper">  
          28.                 <param name="location">/jasper/preson.jasper</param>  
          29.                 <param name="dataSource">presonList</param>  
          30.                 <param name="reportParameters">reportParameter</param>  
          31.                 <param name="format">XML</param>  
          32.             </result>  
          33.         </action>  
          34.         <action name="CSV" class="com.mengya.action.PersonAction">  
          35.             <result name="success" type="jasper">  
          36.                 <param name="location">/jasper/preson.jasper</param>  
          37.                 <param name="dataSource">presonList</param>  
          38.                 <param name="reportParameters">reportParameter</param>  
          39.                 <param name="format">CSV</param>  
          40.             </result>  
          41.         </action>  
          42.         <!--   
          43.             location:是指我們剛才用iReport編譯生成的jasper文件  
          44.             dataSource:是指我們執(zhí)行的數(shù)據(jù)庫(kù)查詢結(jié)果,在testAction類里把這個(gè)結(jié)果查詢出來(lái),這個(gè)參數(shù)必須要有  
          45.             format:是指需要輸出的類型,默認(rèn)是PDF,其他的輸出類型有:XML、HTML、XLS、CSV、RTF ,注意這里一定要大寫  
          46.             reportParameters:jasperreport中的Parameters  
          47.             除了這幾個(gè)參數(shù),還有下列參數(shù):  
          48.             delimiter:是指如果輸出類型為CSV的話,指定分割符,默認(rèn)為“,”  
          49.             parse:是指是否解析location參數(shù)中的EL表達(dá)式,默認(rèn)為 true  
          50.             contentDisposition:指定disposition,默認(rèn)為“inline”,如果設(shè)為“attachment”就是強(qiáng)制下載  
          51.             documentName:輸出的文件名  
          52.             imageServletUrl:生成圖形的路徑  
          53.         -->  
          54.     </package>  
          55. </struts>  

           頁(yè)面調(diào)用:

          Html代碼  收藏代碼
          1. <a href="PDF.action">PDF</a>  
          2.        <a href="XLS.action">XLS</a>  
          3.        <a href="XML.action">XML</a>  
          4.        <a href="CSV.action">CSV</a>  

           如果要想以HTML形式顯示報(bào)表內(nèi)容則還需要在web.xml配置jasperReport自帶的一個(gè)servlet如下:

          Xml代碼  收藏代碼
          1. <!-- JasperReport包中自帶的Servlet,用來(lái)做為HTML形式顯示報(bào)表的時(shí)候報(bào)表的圖片,要在這里配置上,圖片在jasperReport包中 -->  
          2.     <servlet>  
          3.         <servlet-name>JasperReportImageServlet</servlet-name>  
          4.         <servlet-class>  
          5.             net.sf.jasperreports.j2ee.servlets.ImageServlet  
          6.         </servlet-class>  
          7.     </servlet>  
          8.   
          9.     <servlet-mapping>  
          10.         <servlet-name>JasperReportImageServlet</servlet-name>  
          11.         <url-pattern>/image</url-pattern>  
          12.     </servlet-mapping>  

           

          action中不需要修改,只需在struts.xml里添加一個(gè)HTML不配置如下:

          Xml代碼  收藏代碼
          1. <action name="HTML" class="com.mengya.action.PersonAction">  
          2.             <result name="success" type="jasper">  
          3.                 <param name="location">/jasper/preson.jasper</param>  
          4.                 <param name="dataSource">presonList</param>  
          5.                 <param name="reportParameters">reportParameter</param>  
          6.                 <param name="format">HTML</param>  
          7.                 <param name="imageServletUrl">  
          8.                     <![CDATA[/image?image=]]>  
          9.                 </param>  
          10.             </result>  
          11.         </action>  

           imageServletUrl的值就是上面的serlvet的路徑,該servlet就是生成了一個(gè)圖形,如果不配置該serlvet則頁(yè)面上有圖片沒(méi)顯示的樣子。

          頁(yè)面調(diào)用如:

          Html代碼  收藏代碼
          1. <a href="HTML.action">HTML</a>  

          posted on 2013-02-21 15:21 小秦 閱讀(924) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 建宁县| 永仁县| 皋兰县| 涡阳县| 南澳县| 苏尼特右旗| 昌吉市| 铜鼓县| 永福县| 乌鲁木齐县| 锦州市| 万载县| 巴东县| 定边县| 瓮安县| 永德县| 兴文县| 武鸣县| 鹤壁市| 正蓝旗| 呼伦贝尔市| 芦溪县| 玉环县| 梅河口市| 台北县| 怀化市| 朝阳区| 习水县| 凌海市| 雅江县| 文水县| 田林县| 麦盖提县| 义马市| 丰都县| 大兴区| 康平县| 白城市| 漳浦县| 当涂县| 揭西县|