Jasperreport 输出
参考1:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Connection conn=null;
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1481;DatabaseName=pdw","sa","123456");
ServletContext servletContext=this.getServletContext();
Map parameters=new HashMap();
parameters.put("vname","裴德万");
File reportfile=new File(servletContext.getRealPath("/classes.jasper"));
System.out.println(reportfile.getPath());
byte[] bytes=JasperRunManager.runReportToPdf(reportfile.getPath(),parameters,conn);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream outputStream=response.getOutputStream();
outputStream.write(bytes,0,bytes.length);
outputStream.flush();
outputStream.close();
}catch(Exception e){
e.printStackTrace();
}
}
参考2:
package servlets;
import java.io.*;
import java.util.*:
import javax.servlet.*;
import javax.servlet.http.*:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRXlsExporter;
public class GeneratePDFServlet extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
public static final String XML_FILE_PATH ="E:/eclipse/workspace/StrutsTest/WEB-INF/src/pdf/xmls/";
protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
//创建response输出流,设置responxe回应的头部
OutputStream out = res.getOutputStream();
res.setContentType("application/pdf");
res.setHeader("Content-Disposition","attachment; filename=myFirstReport.pdf"); //filename为生成PDF的文件名
//从当前session或request中获取.jrxml文件的文件名,存放成年用户信息的list,存放平均年龄的map
String fileName = (String) req.getAttribute("FileName");
List list = (List) req.getAttribute("List");
Map map = (Map) req.getAttribute("Map");
//调用createPdf()获得PDF输出的字节流并打印出来。
byte[] bytes = createPdf(fileName, list, map);
res.setContentLength(bytes.length);
out.write(bytes, 0, bytes.length);
out.flush();
}
protected void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
doGet(req, res);
}
//封装创建PDF输出的compile和run方法,返回最终生成的字节流
private byte[] createPdf(String fileName, List list, Map map) {
String path = XML_FILE_PATH + fileName;//.jrxml文件的全路径
String jrFile = XML_FILE_PATH + "testXML.jasper";//编译结果.jasper文件的全路径
byte[] bytes = null;
try{
JasperCompileManager.compileReportToFile(path, jrFile);
}catch (JRException e){
e.printStackTrace();
}
try{
bytes =JasperRunManager.runReportToPdf(jrFile, map, new JRBeanCollectionDataSource(list));
}catch (JRException e){
e.printStackTrace();
}
return bytes;
}
}