50,523
社区成员
发帖
与我相关
我的任务
分享
package net.xnzz.servlet;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.util.Enumeration;
import java.util.HashMap;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperRunManager;
import net.xnzz.util.DBUtils;
/**
* jasperreport 生成pdf文件
* @author WANGJIE
*
*/
public class JHPDFServlet extends HttpServlet
{
private static final long serialVersionUID = 1L;
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
Connection connection = DBUtils.getDBInstance().getInitDBConnection();
try
{
//据据jasper文件生成JasperPrint对象
ServletContext context = this.getServletConfig().getServletContext();
//String fileName = request.getParameter("fileName");//ireport编译文件:*.jasper(由模板文件*.jrxml文件编译生成)
File reportFile = new File(context.getRealPath("/WEB-INF/jaspers/"+"jh_result.jasper"));
//HashMap<String, Object> parameters = new HashMap<String, Object>();//给报表模板文件传参
//得到枚举类型的参数名称,参数名称若有重复的只能得到第一个--获取页面传来的参数,和模板中文件的sql参数名称一一对应
// Enumeration<?> temp = request.getParameterNames();
// while (temp.hasMoreElements())
// {
// String paramName = (String) temp.nextElement();
// String paramValue = request.getParameter(paramName);
// parameters.put(paramName, paramValue);
// }
byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), null,connection);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream out = response.getOutputStream();
out.write(bytes, 0, bytes.length);
out.flush();
out.close();
}
catch (JRException e)
{
e.printStackTrace();
}
}
}