`
qq38450529
  • 浏览: 27948 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts2整合jasperreport缓存处理方法

阅读更多

很多人遇到过jasperReport生成的图片会在IE下缓存,多个报表都成了同一个图片.

网上有很多是从jasperReport的编译方式入手,也可以解决.但是我这里要说的是跟Struts2整合后的解决办法,一种更简单的办法

原来我们在做报表的时候:

			<result name="success" type="result">
				<param name="location">/jasper/regUseLine.jasper</param>
				<param name="format">HTML</param>
				<param name="reportParameters">reportParameter</param>
				<param name="dataSource">chardatabean</param>
				<param name="imageServletUrl">/servlets/image?image=</param>
			</result>

struts.xml中给Action配置一个result,其中有个属性叫imageServletUrl,解决办法就是给这个请求路径加一个时间戳.

第一步,先写一个Struts2的Result,可以继承JasperReportsResult,然后覆盖里面的属性值,加一个时间戳参数.如此就解决IE下的缓存了.

package report.common.result;

import java.util.Date;

import org.apache.struts2.views.jasperreports.JasperReportsResult;

import com.opensymphony.xwork2.ActionInvocation;

@SuppressWarnings("serial")
public class JsperReportResult extends JasperReportsResult {

	@Override
	public String getImageServletUrl(){
		String[] url = this.imageServletUrl.split("\\?");
		StringBuffer t = new StringBuffer("");
		t.append(url[0]+("?_t="+(new Date()).getTime())).append("&"+url[1]);
		return t.toString();
	}
	@Override
	protected void doExecute(String finalLocation, ActionInvocation invocation)
			throws Exception {
		this.imageServletUrl = this.getImageServletUrl();
		super.doExecute(finalLocation, invocation);
	}
	
}

 第二部,修改你的struts.xml,

<package name="jasperReport" extends="struts-default,jasperreports-default">
		<result-types>
			<result-type name="jasperResult" class="report.common.result.JsperReportResult"></result-type>
		</result-types>
		<action name="HTML" class="report.actions.jsperreport.ChardataAction">
			<result name="success" type="jasperResult">
				<param name="location">/jasper/regUseLine.jasper</param>
				<param name="format">HTML</param>
				<param name="reportParameters">reportParameter</param>
				<param name="dataSource">chardatabean</param>
				<param name="imageServletUrl">/servlets/image?image=</param>
			</result>
		</action>
</package>

 注意,将你的返回类型改为你配置的result-type,我这里名字叫jasperResult

分享到:
评论
3 楼 bankly 2013-12-12  
能给个例子吗
2 楼 qq38450529 2012-06-23  
yuchensuifeng 写道
您好,非常感谢您的这篇文章,可以问个问题么?<param name="imageServletUrl">/servlets/image?image=</param> 
这样是把图片当成什么资源来访问的?网上都是这样的写法,可是我试过,图片访问不到,
我到struts2的插件源码看,默认的是"/images/",所以,我这样写<param name="imageServletUrl">/images/</param>  ,这样在网页可以访问到图片,但是,我的缓存问题没有解决,求解,谢谢.

我的手机号是15959912925,邮箱,yuchensuifeng@hotmail.com,感谢您的回答.

/images/和/servlets/image?image=的区别是你在web.xml中配置的jasperReport的servlet路径,跟缓存没有关系的.
1 楼 yuchensuifeng 2012-05-15  
您好,非常感谢您的这篇文章,可以问个问题么?<param name="imageServletUrl">/servlets/image?image=</param> 
这样是把图片当成什么资源来访问的?网上都是这样的写法,可是我试过,图片访问不到,
我到struts2的插件源码看,默认的是"/images/",所以,我这样写<param name="imageServletUrl">/images/</param>  ,这样在网页可以访问到图片,但是,我的缓存问题没有解决,求解,谢谢.

我的手机号是15959912925,邮箱,yuchensuifeng@hotmail.com,感谢您的回答.

相关推荐

    struts2整合jasperreport

    在本文中,我们将深入探讨如何整合Struts2框架与JasperReport3来创建动态报表,并利用iReport工具进行报表设计。Struts2是一个流行的Java Web应用程序框架,它提供了MVC(模型-视图-控制器)架构,而JasperReport则...

    Struts2整合JasperReport所需要的jar包

    在整合Struts2和JasperReport时,我们需要一些特定的jar包来确保两者能正确通信和协同工作。这些jar包通常包含了Struts2的核心组件、JasperReport库以及它们的依赖。下面,我们将详细讨论整合过程中可能用到的关键...

    Struts2+JasperReport报表应用

    Struts2和JasperReport的整合是Web应用程序中创建动态报表的一种常见方法。JasperReport是一个功能强大的开源报表引擎,允许开发人员通过iReports这样的设计工具以可视化的形式创建复杂的报表模板。Struts2,作为一...

    整合Struts2.1+jasperreport

    Struts2.1和JasperReport的整合是Java Web开发中的一个重要话题,它涉及到Web应用程序的MVC(模型-视图-控制器)架构和数据报告的生成。Struts2.1是一个强大的MVC框架,而JasperReport则是一个用于创建复杂报表的...

    Struts2_JasperReport整合的例子

    Struts2和JasperReport是Java开发中两个重要的框架,它们在企业级应用开发中扮演着关键角色。Struts2是一个强大的MVC框架,用于构建动态、...通过掌握这种整合方法,开发者可以提高工作效率,提升应用程序的用户体验。

    ssh三大框架简单整合,struts2整合JasperReport报表,图表

    ssh三大框架简单整合,struts2整合JasperReport报表,解决HTML显示图片不出来,PDF中文不显示的问题 网上找答案,乱七八糟的!我研究了几天,终于彻底搞明白了!代码里有些注释,有凝问的可以留言。。。。。。 ...

    Struts2与Jasperreport报表结合

    2. 配置Struts2:在struts.xml中定义Action,指定处理报表请求的方法。 3. 实现Action:在Action中,加载数据源,执行SQL,将结果集转换为JRDataSource。 4. 填充报表:使用JasperFillManager填充报表并导出为所需的...

    struts2+Ireport+Jasperreport实现报表导出

    总结来说,这个项目通过Struts2作为控制器处理用户请求,iReport用于设计报表模板,JasperReport负责生成报表,而Highcharts Export Server则提供了额外的图表导出能力。这种组合提供了一套完整的报表系统,可以满足...

    整合Struts2+JasperReport Web报表应用示例

    Struts2 和 JasperReport 的整合是为了解决在 Web 应用中生成复杂报表的需求。JasperReport 是一个强大的开源报表引擎,它允许开发者通过设计模板来生成各种类型的报表,如 PDF、HTML、Excel 等。而 Struts2 是一个...

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

    在将Struts2与JasperReport整合时,首先需要在Struts2项目中添加JasperReport的依赖库,这通常包括jasperreports、jcommon、jfreechart等。接下来,我们需要创建一个Action类,该类将负责处理报表生成的请求,并调用...

    Struts2与jasperReport简单示例

    4. **整合Struts2**:创建一个Struts2 Action,这个Action负责生成报表。在Action中调用上述步骤生成报表实例,然后将其设置为Action的一个属性,以便传递到视图。 5. **配置结果类型**:在struts.xml中,为这个...

    maven struts2 jasperreport ireport亲测通过整合多家资源

    在这个场景下,`Maven`、`Struts2`、`JasperReport` 和 `iReport` 是四个关键的技术组件,它们共同作用于创建一个强大的、数据驱动的Web应用程序。下面将详细介绍这些技术及其整合过程。 首先,`Maven` 是一个项目...

    struts2+jasperReport+ireport做报表总结

    解决方法是在`struts.xml`中添加 `&lt;constant name="struts.action.extension" value="action" /&gt;`,以确保Struts2能正确解析请求。此外,可以将px文件从ireport安装目录复制到项目相应的目录,或者通过在iReport中...

    Struts2集成jasperreport3.7.1所需的Jar包

    Struts2是一个流行的Java Web应用程序框架,用于构建...总的来说,这些库文件构成了Struts2集成JasperReport的基础,使得开发者可以在Web应用中轻松地创建和展现丰富的报表,同时利用Struts2的强大功能进行交互和控制。

    struts2-jasperreport-plugin-2.1.6.1

    官方发布的 struts2-jasperreport-plugin-2.1.6存在以下问题: 1、普通报表HTML、Excel格式浏览存在px图片无法显示; 2、解决问题:图形报表一次请求返回多张时存在报表覆盖异常现象; 3、支持数据源单一(改造后支持...

    struts2利用jasperreport导出excel

    Struts2是一个强大的MVC(模型-视图-控制器)框架,它被广泛应用于Java Web开发中,提供了灵活的控制层来处理用户请求并管理业务逻辑。而JasperReport则是一个开源的报告生成库,能够生成PDF、Excel、HTML等多种格式...

    struts2 jasperreport

    struts2 jasperreport

Global site tag (gtag.js) - Google Analytics