JasperReport 在Spring中的使用 问题
来源:互联网 发布:淘宝店铺标语怎么改 编辑:程序博客网 时间:2024/06/08 11:42
关键字: spring, jasperreport
最近看了《JasperReports for Java Developers》,里面讲了怎么在Spring里使用JasperReport
照着里面的例子做了一下,例子是没有问题的,但是我把展现方式改为由JasperReportsHtmlView 展现就出问题了,所有的图片都出不来,是不是使用JasperReportsHtmlView还要配置其它的拦截器或是什么?我在Google里找了一通,也没能解决主要是E文不太好国外的论坛也找了,看得头大,所以把代码贴出来,那位用过的能指点一下,谢过了
web配置文件
前台Jsp页面:
jasperSpring-servlet.xml的内容:
控制器JasperSpringController的源码:
JasperReport页面在IReport中的效果:
页面输出PDF效果:
但把输出改为JasperReportsHtmlView页面上的所有图片都显示不出来,应该是还有什么属性值设置的不对,哪位知道的请指点一下,项目里面的Jar包太大了不然把整个项目都上传上来
照着里面的例子做了一下,例子是没有问题的,但是我把展现方式改为由JasperReportsHtmlView 展现就出问题了,所有的图片都出不来,是不是使用JasperReportsHtmlView还要配置其它的拦截器或是什么?我在Google里找了一通,也没能解决主要是E文不太好国外的论坛也找了,看得头大,所以把代码贴出来,那位用过的能指点一下,谢过了
web配置文件
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <display-name>ReportWebApp</display-name>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- <servlet>
- <servlet-name>jasperSpring</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet
- </servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>jasperSpring</servlet-name>
- <url-pattern>/jasperSpring/*</url-pattern>
- </servlet-mapping>
- </web-app>
<?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><display-name>ReportWebApp</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><servlet><servlet-name>jasperSpring</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet </servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>jasperSpring</servlet-name><url-pattern>/jasperSpring/*</url-pattern></servlet-mapping></web-app>
前台Jsp页面:
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Generate Report</title>
- </head>
- <body>
- Click on the button to generate the report.
- <form name="reportForm" action="jasperSpring/report" method="get"><input
- type="submit" name="submitButton" value="Submit" /></form>
- </body>
- </html>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Generate Report</title></head><body>Click on the button to generate the report.<form name="reportForm" action="jasperSpring/report" method="get"><inputtype="submit" name="submitButton" value="Submit" /></form></body></html>
jasperSpring-servlet.xml的内容:
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
- <beans>
- <bean id="dataSource"
- class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
- <property name="driverClassName">
- <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
- </property>
- <property name="url">
- <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Northwind</value>
- </property>
- <property name="username">
- <value>sa</value>
- </property>
- <property name="password">
- <value>sa</value>
- </property>
- </bean>
- <bean id="publicUrlMapping"
- class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
- <property name="mappings">
- <props>
- <prop key="report">jasperController</prop>
- </props>
- </property>
- </bean>
- <bean id="jasperController"
- class="net.aachina.jasperreport.JasperSpringController">
- <property name="dataSource">
- <ref local="dataSource" />
- </property>
- </bean>
- <bean id="viewResolver"
- class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
- <property name="basename" value="views" />
- </bean>
- <bean id="ImageServlet" class="net.sf.jasperreports.j2ee.servlets.ImageServlet">
- </bean>
- </beans>
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"><beans><bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close"><property name="driverClassName"><value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value></property><property name="url"><value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Northwind</value></property><property name="username"><value>sa</value></property><property name="password"><value>sa</value></property></bean><bean id="publicUrlMapping"class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><prop key="report">jasperController</prop></props></property></bean><bean id="jasperController"class="net.aachina.jasperreport.JasperSpringController"><property name="dataSource"><ref local="dataSource" /></property></bean><bean id="viewResolver"class="org.springframework.web.servlet.view.ResourceBundleViewResolver"><property name="basename" value="views" /></bean><bean id="ImageServlet" class="net.sf.jasperreports.j2ee.servlets.ImageServlet"></bean></beans>
引用
views.properties中的内容
- report.class=org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView
- #report.class=org.springframework.web.servlet.view.jasperreports.JasperReportsHtmlView
- #report.class=net.aachina.jasperreport.render.JasperReportsHtmlView
- report.url=reports/ChartReportDemo.jasper
report.class=org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView#report.class=org.springframework.web.servlet.view.jasperreports.JasperReportsHtmlView#report.class=net.aachina.jasperreport.render.JasperReportsHtmlViewreport.url=reports/ChartReportDemo.jasper
控制器JasperSpringController的源码:
- package net.aachina.jasperreport;
- import java.io.IOException;
- import java.sql.Connection;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.HashMap;
- import java.util.Map;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.sql.DataSource;
- import net.sf.jasperreports.engine.JRResultSetDataSource;
- import org.springframework.web.servlet.ModelAndView;
- import org.springframework.web.servlet.mvc.Controller;
- public class JasperSpringController implements Controller {
- private DataSource dataSource;
- public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException
- {
- return new ModelAndView("report", getModel());
- }
- @SuppressWarnings("unchecked")
- private Map getModel() throws ClassNotFoundException, SQLException
- {
- Connection connection;
- Statement statement;
- ResultSet resultSet;
- HashMap model = new HashMap();
- String query = "SELECT"+
- " Employees.[LastName] AS Employees_LastName,"+
- " Employees.[FirstName] AS Employees_FirstName,"+
- " Employees.[EmployeeID] AS Employees_EmployeeID,"+
- " Orders.[OrderID] AS Orders_OrderID,"+
- " Orders.[OrderDate] AS Orders_OrderDate "+
- " FROM "+
- " Employees INNER JOIN Orders ON Employees.[EmployeeID] = Orders.[EmployeeID]";
- connection = dataSource.getConnection();
- statement = connection.createStatement();
- resultSet = statement.executeQuery(query);
- JRResultSetDataSource resultSetDataSource =new JRResultSetDataSource(resultSet);
- model.put("datasource", resultSetDataSource);
- return model;
- }
- public void setDataSource(DataSource dataSource)
- {
- this.dataSource = dataSource;
- }
- }
package net.aachina.jasperreport;import java.io.IOException;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.HashMap;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.sql.DataSource;import net.sf.jasperreports.engine.JRResultSetDataSource;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.Controller;public class JasperSpringController implements Controller {private DataSource dataSource;public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException, ClassNotFoundException, SQLException{return new ModelAndView("report", getModel());}@SuppressWarnings("unchecked")private Map getModel() throws ClassNotFoundException, SQLException{Connection connection;Statement statement;ResultSet resultSet;HashMap model = new HashMap();String query = "SELECT"+ " Employees.[LastName] AS Employees_LastName,"+ " Employees.[FirstName] AS Employees_FirstName,"+ " Employees.[EmployeeID] AS Employees_EmployeeID,"+ " Orders.[OrderID] AS Orders_OrderID,"+ " Orders.[OrderDate] AS Orders_OrderDate "+ " FROM "+" Employees INNER JOIN Orders ON Employees.[EmployeeID] = Orders.[EmployeeID]";connection = dataSource.getConnection();statement = connection.createStatement();resultSet = statement.executeQuery(query);JRResultSetDataSource resultSetDataSource =new JRResultSetDataSource(resultSet);model.put("datasource", resultSetDataSource);return model;}public void setDataSource(DataSource dataSource) {this.dataSource = dataSource;}}
JasperReport页面在IReport中的效果:
页面输出PDF效果:
但把输出改为JasperReportsHtmlView页面上的所有图片都显示不出来,应该是还有什么属性值设置的不对,哪位知道的请指点一下,项目里面的Jar包太大了不然把整个项目都上传上来
js中cloneNode()的使用 (Blog合并)
- 11:51
- 浏览 (1744)
- 论坛浏览 (4842)
- 评论 (5)
- 相关推荐
- JasperReport 在Spring中的使用 问题
- 如何在Spring中使用JasperReport
- 如何在Spring中使用JasperReport
- 如何在Spring中使用JasperReport
- 如何在Spring中使用JasperReport
- 如何在Spring中使用JasperReport
- 如何在Spring中使用JasperReport
- 如何在Spring中使用JasperReport
- 如何在Spring中使用JasperReport
- 如何在Spring中使用JasperReport
- 如何在Spring中使用JasperReport
- 如何在Spring中使用JasperReport
- 如何在Spring中使用JasperReport
- 如何在Spring中使用JasperReport
- 如何在Spring中使用JasperReport
- 如何在Spring中使用JasperReport
- Spring注解在Junit中的使用问题
- JasperReport在Weblogic中的解决方案
- JavaScript 实现 replaceAll
- 管理者心态
- 悟透JavaScript
- C++ 容易忽略的数据类型
- 初步尝试RMAN备份
- JasperReport 在Spring中的使用 问题
- android 特殊用法琐碎二
- 现代人的爱情三字经
- JAVA面试题集
- 光棍的等级
- rman 笔记
- 屏幕编程中几点注意
- 函数调用约定解析
- Javascript 中 String.replace( ) 的妙用
评论
以下做法供参考:将datasource(jdbc)作为一个value放入model,这样spring的jasper相关view就会取到这个datasource,进而获取connection,fillreport后由spring关闭connection。
请参考代码AbstractJasperReportsView.fillReport
方法来源于:http://forum.springframework.org/showthread.php?t=25030 其实自己也应该想到的BS一下自己。为了不让后来人受累,我把代码再Copy过来使帖子完整^_^
看代码就应该能明白了,哎 为什么我就没想到这么写呢
对了控制器里面也要修改一下:
web.xml修改为:
index.jsp的form action修改为:htmlReport
输出效果:图片上传不知道怎么编辑^_^