java技术研究

统计

留言簿(3)

阅读排行榜

评论排行榜

Struts2 + JasperReport应用一:导PDF,Excel,HTML显示(转)

转自:http://zmx.iteye.com/blog/583482
Struts2 + JasperReport应用一:导PDF,Excel,HTML显示

HTMLExcelStrutsServletXML 

我用的是struts2.1.6,从struts2的自带的demo当中可以看到它的web.xml配置与之前的有点不同,有另外一种配置:

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会报错。

 

将我们设置的报表文件和编译文件放到WebRoot下面的jasper下面,添加struts2对jasperReport的插件。

构造我们的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. }  

 构造我们的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. }  

 构造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:是指我们执行的数据库查询结果,在testAction类里把这个结果查询出来,这个参数必须要有  
  45.             format:是指需要输出的类型,默认是PDF,其他的输出类型有:XML、HTML、XLS、CSV、RTF ,注意这里一定要大写  
  46.             reportParameters:jasperreport中的Parameters  
  47.             除了这几个参数,还有下列参数:  
  48.             delimiter:是指如果输出类型为CSV的话,指定分割符,默认为“,”  
  49.             parse:是指是否解析location参数中的EL表达式,默认为 true  
  50.             contentDisposition:指定disposition,默认为“inline”,如果设为“attachment”就是强制下载  
  51.             documentName:输出的文件名  
  52.             imageServletUrl:生成图形的路径  
  53.         -->  
  54.     </package>  
  55. </struts>  

 页面调用:

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形式显示报表内容则还需要在web.xml配置jasperReport自带的一个servlet如下:

Xml代码  收藏代码
  1. <!-- JasperReport包中自带的Servlet,用来做为HTML形式显示报表的时候报表的图片,要在这里配置上,图片在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里添加一个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就是生成了一个图形,如果不配置该serlvet则页面上有图片没显示的样子。

页面调用如:

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

posted on 2013-02-21 15:21 小秦 阅读(918) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: