applet+jasperreport+sturts2 Javaweb客户端打印

function printList(){
	//sessionId
	var sessionId=$('#sessionId').val();
	//查询条件
	var jsonWhere=$('#jsonWhere').val();
	//查询类型,设置为由分页引起的查询,使用pager.jsonWhere作为查询条件,而非Search
	var sreachType=$('#sreachType').val();
	//页数,设为-1,表示打印所有的页
	var pageSize=-1;
	//拼接所有的请求参数,需要进行编码转换(escape),因为jsonWhere里面包含一些特殊的字符,有些情况会导致数据丢失,如:"sendBanks":["10045437"]
	var paramerter="?pager.jsonWhere="+escape(jsonWhere)+"&pager.sreachType="+escape(sreachType)+"&pager.pageSize="+escape(pageSize);
	//Applet请求的url 
	var strUrl=$('#printAction').val()+paramerter; 
	var parentUrl=$('#pagerAction').val(); 
	
	//向页面追加输出Applet程序,有更好的用户体验(不要使用document.write(),具体原因自己去查)
	var appletStr='<applet code="com.ylink.cnaps2.countreport.base.PrinterApplet.class" codebase="../applet" archive="print.jar" width="0" height="0" >';
	appletStr+='<PARAM NAME = "PRINT_URL" VALUE ='+strUrl+'>';
	appletStr+='<PARAM NAME = "PARENT_URL" VALUE ='+parentUrl+'>';
	appletStr+='</applet>';
	document.body.innerHTML+=appletStr;

}
以上是javascript中调用Applet程序的js源码。


Applet源码以及Action源码我提供一个参考博客:http://blog.csdn.net/defonds/article/details/4440697





之前在网上找了好几篇关于JavaWeb项目 Applet+jasperreport浏览器(客户端)打印的技术文章,它们写的还不错,对我的帮助也很大,但是在实际的使用过程中,还是发现了一些具体实现的技术细节问题,这个主要是跟具体的项目有关,总体的技术思路还是正确的,下面我就我所在的项目在处理这个打印所遇到的问题做一个阐述,供大家参考。

一、项目说明

项目采用struts2+spring+hibernate(SSH,开发全部采用注解方式)框架,服务器填充报表所使用的框架是jasperreport5.0.0.jar+ireport(绘制报表的工具),浏览器端用Applet小程序+jasperreport-Applet-3.2.0.jar(浏览器需要安装JRE支持Applet运行)。

二、所遇到的问题

1.刚刚开始时,我所写的Applet程序一直是在eclipse下进行调试,请求url(使用的是Action请求),一直发现报错,错误大致就是Java I/O异常,也就是inputstream无效,在博客上发现有一个人跟我是遇到了同样的问题,他一直以为请求servlet和请求Action会导致response,request一样,以至于使用response.getoutputstream和response.getinputstream会有区别,再次纠正,这是一个误解!!!刚刚开始我也受他的影响被带入误区了,因为凡是采用了struts2框架的就不能这么做,只能请求servlet才有效,而且我当时还特意新建了一个Servlet项目,发现请求Servlet确实行得通,再次声明这个是误解!!!不管你采用什么框架技术  response 和request还是属于 Servlet-API里面的对象,这个是不会改变的。之所以会出现这个问题,在我的项目本身是因为,你在eclipse下调试Applet程序,所有的请求都被拦截器给拦截了,因为需要验证用户,导致url请求没有执行,所以你必须在浏览器中调试该Applet程序,这样才会有(session)。出现该问题博客地址是:http://www.iteye.com/problems/15444


2.传参数问题:你使用Action请求,用了ModelDriver(模型驱动传参)也还是可以用URL问号传递参数,这个也是和上面同样的道理,要坚信可以行的通!


3.关于如何打包Applet以及签名,可以提供一个博客来参考,这个博客写的很详尽,我也是参考的他的。http://blog.csdn.net/defonds/article/details/4440697


如若有疑问,加我QQ:416551477。技术支持。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值