struts2+jasperreport开发报表程序关键代码

今天, 就在这一时刻,9:59分,终于把html红**的问题给解决了。这个东东困扰了我好几天....
struts2在我这个项目中只起到了一个转向的作用,真正配置什么的,到是没有用到.....这是问题1,
问题2:就是生成html页面的时候,红**的问题,因为struts2默认的会有拦截,px,以至得不到图片,所以我把px文件名称改成了px.px ,在引用的时候写px.
这样在附上下面这句代码,就解决了图片**问题:
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "/test/images/px.");




下面附上3种方式生成报表,都为struts2中execute方法代码,代码为部分核心:
------------------------------------------------------------------------------------------------------------pdf-----------------------------------------------------------------------------------------------------------------:

sSQL = String.format(sSQL, sWhere);
		Connection con = null;
		String strMessage="";
		ResultSet rs=null;
		//String path1=request.getContextPath();
		//String path2="E:\\workspace\\IreportDemo\\WebRoot\\report\\SecondDemo.jasper";
		String path= request.getRealPath("/reports/jb7.jasper");
		System.out.println(path);
		File reportFile = new File(path);
		byte[] bytes=new byte[200];
					try {
						con = DBConnection.currentConnection();
						Statement stat = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
								ResultSet.CONCUR_READ_ONLY);
//						ResultSet rs=DBConnection.getConnection();
						 rs=stat.executeQuery(sSQL);
					} catch (SQLException e2) {
						// TODO Auto-generated catch block
						e2.printStackTrace();
					}
					JRResultSetDataSource ds = new JRResultSetDataSource(rs);
					
					System.out.println("-------------------------------------------------------------");
					try {
						System.out.println(ds.next());
					} catch (JRException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
					System.out.println("-------------------------------------------------------------");
					try {
						//生成pdf文件
						bytes = JasperRunManager.runReportToPdf(reportFile.getPath(),null, ds);
					} catch (JRException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					//pdf设置
				    response.setContentType("application/pdf");
					 response.setContentLength(bytes.length);
				    ServletOutputStream ouputStream;
					try {
						ouputStream = response.getOutputStream();
						ouputStream.write(bytes, 0, bytes.length);
						ouputStream.write(0);
					    ouputStream.flush();
					    ouputStream.close();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
		return null;	





------------------------------------------------------------------------------------------------------------html-----------------------------------------------------------------------------------------------------------------:


sSQL = String.format(sSQL, sWhere);
			Connection con = null;
			String strMessage="";
			ResultSet rs=null;
			response.setCharacterEncoding("UTF-8");
			File reportFile = new File(request.getRealPath("/reports/jb7.jasper"));
		    if (!reportFile.exists())
				throw new JRRuntimeException("File WebappReport.jasper not found. The report design must be compiled first.");

			JasperReport jasperReport = null;
			try {
				jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
				
			} catch (JRException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			
			Map parameters = new HashMap();
			parameters.put("ReportTitle", "Address Report");
			parameters.put("BaseDir", reportFile.getParentFile());
				try
				{
					
					con = DBConnection.currentConnection();
					Statement stat = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
						ResultSet.CONCUR_READ_ONLY);
					rs=stat.executeQuery(sSQL);
					System.out.println(rs.next());
					JRResultSetDataSource jrds = new JRResultSetDataSource(rs);
				System.out.println("--------------------------------------------------");
				System.out.println(jrds.next());
			
				JasperPrint jasperPrint = 
				JasperFillManager.fillReport(
					jasperReport, 
					parameters, 
					jrds
					);		
			response.setContentType("text/html");  
			JRHtmlExporter exporter = new JRHtmlExporter();
			PrintWriter out=response.getWriter();
			request.setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
			exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
			exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
			exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "/test/images/px.");
			exporter.exportReport();
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			
			
		

		return null;



------------------------------------------------------------------------------------------------------------excel-----------------------------------------------------------------------------------------------------------------:
sSQL = String.format(sSQL, sWhere);
				 path= request.getRealPath("/reports/jb7.jasper");
				System.out.println(path);
				 reportFile = new File(path);
				try {
					con = DBConnection.currentConnection();
					Statement stat = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
						ResultSet.CONCUR_READ_ONLY);
					rs=stat.executeQuery(sSQL);
				} catch (SQLException e1) {
				
			}
				JRDataSource dataSource=new JRResultSetDataSource(rs);
				//生成EXCEL
				try {
					//这里注意参数传递,dataSource为数据源
					 jasperPrint = JasperFillManager.fillReport(reportFile.getPath(),null,dataSource);
				    JRXlsExporter exporter = new JRXlsExporter(); 
				    ByteArrayOutputStream   baos   =   new   ByteArrayOutputStream();   
				    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
				    exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE); // 删除记录最下面的空行
				    exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.FALSE);// 删除多余的ColumnHeader
				    exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE);// 显示边框   
				    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,baos);
				    exporter.exportReport(); 
				    //这里需要设置,数据没有填充进去,,待续........................
				    response.setContentType("application/vnd.ms-excel;charset=GB2312");
				    
				    bytes   =   baos.toByteArray();  
				    if   (bytes   !=   null   &&   bytes.length   >   0){   
					      response.setCharacterEncoding("utf-8");
					      response.setContentLength(bytes.length);   
					         ouputStream   =   response.getOutputStream();   
					      ouputStream.write(bytes,   0,   bytes.length);   
					      ouputStream.flush();   
					      ouputStream.close();   
					     }
				} catch (Exception e) {
				}
	return null;
    
	
	
	

 

资源下载链接为: https://pan.quark.cn/s/6b3e936ec683 在英语学习过程中,一款优秀的词典工具至关重要。Vocabulary.com Dictionary 和欧陆词典(EuroDict)作为两款备受推崇的在线词汇资源,各具特色且能够相互补充,为用户打造全面的词汇学习体验。 Vocabulary.com Dictionary 不仅提供单词的标准释义,还特别注重词汇的实际运用。它涵盖了丰富的例句、短语和习语,帮助用户掌握词汇在不同语境中的使用方式。此外,Vocabulary.com 设有互动学习功能,通过游戏和挑战的形式,让学习者在趣味中巩固新词汇。其“智能学习计划”能够根据用户的学习进度和能力定制个性化学习路径,是提升词汇量的有效工具。 与之配合的欧陆词典则以多语言支持和深度词汇解析闻名。它不仅提供英文词汇的解释,还涵盖多种语言对照,非常适合多语种学习者。欧陆词典还提供同义词、反义词、派生词等扩展信息,以及丰富的短语和习语,帮助用户全面理解词汇的多维度含义。 在实际使用时,学习者可以先通过 Vocabulary.com Dictionary 查找单词的基本信息和应用场景,再借助欧陆词典拓展对词汇的多语言理解,尤其是对比不同语言中词汇的对应关系。Vocabulary.com 的互动学习模式适合日常学习,而欧陆词典则更适合深度研究和词汇拓展。 压缩包中的文件可能包括“Vocabulary.com Dictionary.jpg”,这可能是词典的截图或封面,用于视觉介绍;“Vocabulary.com Dictionary.mdd”和“.mdx”文件则是欧陆词典的数据文件,用于存储索引和数据,方便离线查询。将这些文件下载到本地,即使在无网络的情况下,也能使用部分功能。 Vocabulary.com Dictionary 和欧陆词典的结合使用,能为学习者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值