文档章节

Struts2整合jasperreport缓存处理方法

蒲晓伟
 蒲晓伟
发布于 2015/11/13 12:01
字数 353
阅读 16
收藏 0

很多人遇到过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

本文转载自:http://tiamo.iteye.com/blog/1484170

蒲晓伟
粉丝 1
博文 21
码字总数 1076
作品 0
深圳
技术主管
私信 提问
jasperreport struts2 ie下不显示

整合jasperreport 和struts2,利用struts2插件,发现在火狐下提示下载或在打开,很正常,在ie下就页面空白,很奇怪。不知道问什么,我的format设置的是PDF,请问怎么办...

zheng_pat
2011/02/27
463
1
Java个人技术知识点总结(框架篇)

框架篇 Struts1的运行原理 在启动时通过前端总控制器ActionServlet加载struts-config.xml并进行解析,当用户在jsp页面发送请求被struts1的核心控制器ActionServlet接收,ActionServlet在用户...

java架构
2018/11/08
0
0
S2JH系列分享:基于JasperReport+Applet的“可编辑”(套打)打印报表功能

S2JH项目首页:http://www.oschina.net/p/s2jh,集结最新主流时尚开源技术的面向企业级Web应用的基础开发框架,提供一个J2EE相关主流开源技术架构整合及一些企业应用基础通用功能和组件的设计...

EntDIY
2014/05/21
2.7K
10
Result Type(Struts.xml配置)

<result-type name="chain"class="com.opensymphony.xwork2.ActionChainResult"/><result-type name="dispatcher"class="org.apache.struts2.dispatcher.ServletDispatcherResult"default="t......

MLeo
2012/11/05
89
0
icec 1.3 发布,springboot 整合 jasperreport (ireport)

很多项目都有导出pdf,word,打印等需求,本次更新给大家带来jasperreport整合模块。 翻阅网上资料关于springboot整合jasperreport的比较少,很多都是过时的以及重复的文章,很费力。 本次更...

xxjin
2018/10/18
2.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
38分钟前
2
0
redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
昨天
4
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
昨天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
昨天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部