`

Struts2 + JasperReport应用二:jasperReport Web形式打印

阅读更多

将jasperReport设计文件和编译文件放到webRoot下面的jasper文件夹下面。

public class Person {
	private String person_Id;

	private String person_name;

	private String person_age;

	private String person_address;
}

 

public class PersonService {
	public List<Person> getAllPerson() {
		List<Person> perList = new ArrayList<Person>();
		perList.add(new Person("101", "小博", "22", "湖北"));
		perList.add(new Person("102", "张三", "21", "湖南"));
		perList.add(new Person("103", "李四", "23", "江苏"));
		perList.add(new Person("104", "王五", "22", "上海"));
		return perList;
	}
}

 

构造我们的applet如下:

public class JRPrinterApplet extends javax.swing.JApplet {
	private URL url = null;
	public void init() {
		String strUrl = getParameter("REPORT_URL");
		if (strUrl != null) {
			try {
				url = new URL(getCodeBase(), strUrl);// 从获得html参数中获得报表URL
				// System.out.println("url=" + url.toURI());//要是servlet的路径
			} catch (Exception e) {
				StringWriter swriter = new StringWriter();
				PrintWriter pwriter = new PrintWriter(swriter);
				e.printStackTrace(pwriter);
				JOptionPane.showMessageDialog(this, swriter.toString());
			}
		} else {
			JOptionPane.showMessageDialog(this, "Source URL not specified");
		}
	}
	public void start() {
		if (url != null) {
			try {
				Object obj = JRLoader.loadObject(url);// 发送对象请求,获得JasperPrint对象
				JasperPrintManager.printReport((JasperPrint) obj, true);// 调用方法打印所获得的JasperPrint对象
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}

 构造我们的action如下:

public class JRPrintAction extends ActionSupport {
	@Override
	public String execute() throws Exception {
		File reportFile = new File(ServletActionContext.getRequest()
				.getRealPath("/jasper/preson.jasper"));
		Map<String, String> parameters = new HashMap<String, String>();
		parameters.put("year", "2009");
		parameters.put("unit_mc", "武汉XX科技有限公司");
		List<Person> personList = new PersonService().getAllPerson();
		JasperPrint jasperPrint = null;
		try{
		JasperReport jasperReport = (JasperReport) JRLoader
				.loadObject(reportFile);
		jasperPrint = JasperFillManager.fillReport(jasperReport, parameters,
				new JRBeanCollectionDataSource(personList));
		}catch (Exception e) {
			throw e;
		}
		if(null != jasperPrint){
			HttpServletResponse response = ServletActionContext.getResponse();
			response.setContentType("application/octet-stream");
			ServletOutputStream ouputStream = response.getOutputStream();
			ObjectOutputStream oos = new ObjectOutputStream(ouputStream);
			oos.writeObject(jasperPrint);
			oos.flush();
			oos.close();
			ouputStream.flush();
			ouputStream.close();
		}
		return null;
	}
}

 

struts.xml配置如下:

<action name="jrPrint"
			class="com.mengya.action.JRPrintAction">
			<result name="success">/index.jsp</result>
		</action>

 web.xml配置如下:

<filter>
		<filter-name>Struts2</filter-name>
		<filter-class>
			org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
		</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>Struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

将JRPrinterApplet的编译文件放到webRoot下面的applet文件夹下面

页面调用如下:

<input type="button" value="打印" name="button1" onclick="print();">

<script>
  	function print(){ 
		var url = "jrPrint.action"; 
		document.write('<APPLET ID="JrPrt" CODE = "JRPrinterApplet.class" CODEBASE = "applets" ARCHIVE = "jasperreports-3.5.2-applet.jar,commons-logging-1.0.2.jar,commons-collections-2.1.jar" WIDTH = "0" HEIGHT = "0">'); 
		document.write('<PARAM NAME = "type" VALUE="application/x-java-applet;version=1.2.2">'); 
		document.write('<PARAM NAME = "scriptable" VALUE="false">'); 
		document.write('<PARAM NAME = "REPORT_URL" VALUE ="'+url+'">'); 
		document.write('</APPLET>'); 
	}
  </script>

 

8
1
分享到:
评论
1 楼 csxthui123 2011-09-21  
大虾啊!  这print.jsp  里面的代码是 怎么回事啊!  希望给篇文字解释解释啊! 感激不尽!!!

相关推荐

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

    Struts2和JasperReport是两个在Java Web开发中广泛使用的框架。Struts2作为MVC(模型-视图-控制器)架构的一部分,主要用于处理HTTP请求和管理应用程序流程,而JasperReport则是一个强大的报告生成工具,能够创建...

    整合Struts2.1+jasperreport

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

    Struts2+JasperReport报表应用

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

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

    在"整合Struts2+JasperReport Web报表应用示例"中,我们将探讨如何将这两个框架结合起来,为Web应用提供动态数据可视化的能力。首先,我们需要理解Struts2的核心概念,如Action、Interceptor(拦截器)和Result。...

    struts2+Ireport+Jasperreport实现报表导出

    Struts2、iReport与JasperReport是Java开发中用于构建高效、动态Web应用程序和报表生成的工具。在这个项目中,这些技术结合在一起,提供了一种强大的报表导出解决方案。以下是对这些关键技术及其在项目中的应用的...

    struts2+jasperReport+ireport做报表总结

    Struts2、JasperReport 和 iReport 是开发Web报表应用中的常用技术栈。本文主要针对使用Struts2框架结合JasperReport5.0与iReport5.0进行报表开发时可能遇到的问题进行总结。 1. **报表预览问题**: - 数据源为空...

    struts2整合jasperreport

    Struts2是一个流行的Java Web应用程序框架,它提供了MVC(模型-视图-控制器)架构,而JasperReport则是一个强大的报表生成库,可以生成多种格式的报表,如PDF、HTML、Excel等。iReport是JasperReport的可视化设计...

    jasperReport+struts2+jatoolsPrinter打印

    标题“jasperReport+struts2+jatoolsPrinter打印”涉及的是一个集成开发场景,主要集中在Java企业级应用中的报表生成和打印功能。jasperReport是一个强大的开源报表工具,能够帮助开发者创建复杂的报告设计;Struts2...

    Struts2与Jasperreport报表结合

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

    Struts2_JasperReport整合的例子

    Struts2是一个强大的MVC框架,用于构建动态、数据驱动的Web应用程序,而JasperReport则是一个开源的报表工具,可以生成丰富的报表,支持多种输出格式如PDF、HTML、Excel等。下面我们将深入探讨这两者如何整合以及...

    Java燗applet+jasperReport 实现web端打印

    ### Java Applet + JasperReport 实现Web端打印 #### 背景介绍 在Web开发领域,特别是企业级应用中,精确打印与批量打印是非常重要的功能之一。这不仅关乎用户体验,还涉及到业务流程的顺利执行。传统的Web打印...

    Struts2整合JasperReport所需要的jar包

    整合Struts2和JasperReport可以使Web应用具备强大的报表功能,但同时也需要注意管理和优化好相关的资源,以提供流畅的用户体验。在实际开发中,根据具体需求选择合适的技术栈和最佳实践,能有效地提高项目质量和开发...

    Struts2与jasperReport简单示例

    将Struts2与JasperReport结合,可以实现Web应用中的动态报表生成和展示。 首先,我们需要理解Struts2的核心概念。Struts2框架基于拦截器模型,通过Action类处理用户请求,Action与视图(JSP)之间的交互由结果类型...

    Struts2集成jasperreport3.7.1所需的Jar包

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

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

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

Global site tag (gtag.js) - Google Analytics