研究了下新版本的jasperreports,有些小问题,提供给大家,少走弯路
单独抽个jasper-view.xml,配置如下
<bean id="jasperReportsViewResolver" class="org.springframework.web.servlet.view.jasperreports.JasperReportsViewResolver"> <property name="order" value="0"></property> <property name="viewClass" value="org.springframework.web.servlet.view.jasperreports.JasperReportsMultiFormatView"/> <property name="prefix" value="/WEB-INF/jasper/"/> <property name="suffix" value=".jrxml"/> <property name="viewNames" value="rpt*"/> <property name="jdbcDataSource" ref="dataSource"/> <property name="exporterParameters"> <map> <!-- Force bei allen UTF-8 --> <entry key="net.sf.jasperreports.engine.JRExporterParameter.CHARACTER_ENCODING"> <value>utf-8</value> </entry> <!-- keine Images als Platzhalter in HTML-Seiten , vermeidet nullpx-Problem --> <entry key="net.sf.jasperreports.engine.export.JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN"> <value type="java.lang.Boolean">false</value> </entry> <entry key="net.sf.jasperreports.engine.export.JRHtmlExporterParameter.IMAGES_URI"> <value type="java.lang.String">/html/image.jsp?image=</value> </entry> <entry key="net.sf.jasperreports.engine.export.JRHtmlExporterParameter.IMAGES_DIR_NAME"> <value type="java.lang.String">D:\\work\\***\\web\\tmp</value> </entry> <entry key="net.sf.jasperreports.engine.export.JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR"> <value type="java.lang.String">true</value> </entry> </map> </property> </bean>
配置几点说明下:
1、property order要设置下0,因为MVC,大家都会设置
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"></property> <property name="suffix" value=".jsp"></property> </bean>
这个配置会抢你的映射
2、写一个jsp文件,来读生成的报表图片,我的配置/html/image.jsp,网上抄一段
<%@ page import="java.io.*" %> <% String imagePath = System.getProperty("***") + "/web/tmp"; String name = request.getParameter("image"); imagePath += "/" + name; response.reset(); OutputStream output = response.getOutputStream();// 得到输出流 response.setContentType("image/png"); // ServletContext context = getServletContext();// 得到背景对象 File f = new File(imagePath); InputStream imageIn = new FileInputStream(f); BufferedInputStream bis = new BufferedInputStream(imageIn);// 输入缓冲流 BufferedOutputStream bos = new BufferedOutputStream(output);// 输出缓冲流 byte data[] = new byte[4096];// 缓冲字节数 int size = 0; size = bis.read(data); while (size != -1) { bos.write(data, 0, size); size = bis.read(data); } bis.close(); bos.flush();// 清空输出缓冲流 bos.close(); output.close(); %>
3、设置图片生成地址,我这是tmp目录,需要绝对路径,那位能告诉怎么设置相对路径
配置就这些,Controller返回时,直接返回报表名称就可以了,现在spring直接编译jrxml,
网上一堆问报表图片生成问题,看来一直是老问题,以前用的很老的版本就是这样解决的。新版本与spring结合还是很简单,未深入研究,求赐教。
1 楼
macrotea
2011-09-25
楼主对spring mvc 了解吗
有资料吗
能分享下吗
有资料吗
能分享下吗