|
|
我的JasperReport的具体用法 |
|
|
作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站 |
我的系统:jsp+strtus+ejb+dao+db 我的思路:在Action(ro DispatchAction)组装好报表所需的参数,然后传递给统一的显示servlet
我的实现 1.显示servlet 2.参数class 3.Action
1.显示servlet(此处为html) public class JRHtmlServlet extends HttpServlet { /** * */ public void service( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException{
//得到所需参数 JRParameterInterface jreportParam = null; jreportParam = (JRParameterInterface)request.getAttribute("jreportParam");
response.setContentType("text/html;charset=GB2312"); PrintWriter out = response.getWriter();
try {
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(jreportParam.getJasperFile().getPath());
JasperPrint jasperPrint = JasperFillManager.fillReport( jasperReport, jreportParam.getParameters(), jreportParam.getDataSet() );
JRHtmlExporter exporter = new JRHtmlExporter();
Map imagesMap = new HashMap(); request.getSession().setAttribute("IMAGES_MAP", imagesMap);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out); exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap); exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "JRReport/image?image=");
exporter.exportReport(); } catch (JRException e) { out.println("<html>"); out.println("<head>"); out.println("<title>JasperReports - Web Application Sample</title>"); // out.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"../stylesheet.css\" title=\"Style\">"); out.println("</head>");
out.println("<body bgcolor=\"white\">");
out.println("<span class=\"bnew\">JasperReports encountered this error :</span>"); out.println("<pre>");
e.printStackTrace(out);
out.println("</pre>");
out.println("</body>"); out.println("</html>"); } }
} 2.参数class
public interface JRParameterInterface { //set所需参数 void setParameters(Object object, Object object1); //返回所需file File getJasperFile(); //返回页面的parameter Map getParameters(); //返回页面的数据,如果为空,返回 (new JREmptyDataSource()),否则返回 (new WebappDataSource(data)) JRDataSource getDataSet(); }
实现类 public class JReportParam implements JRParameterInterface {
private DataSet jrData; private File jasperFile; private JRDataSource jrDataSource; private Map parameterMap;
public JReportParam(File jasperFile,DataSet data) { this.jasperFile = jasperFile; jrData = data; parameterMap = new HashMap(); }
public JReportParam(File jasperFile) { this(jasperFile,(DataSet)null); }
public JReportParam(File jasperFile,JRDataSource JRdata) { this.jasperFile = jasperFile; jrDataSource = JRdata; parameterMap = new HashMap(); }
//set所需参数 public void setParameters(Object object, Object object1){ parameterMap.put(object, object1); };
//返回所需file public File getJasperFile(){ return jasperFile; };
//返回页面的parameter public Map getParameters(){ return parameterMap; }; //返回页面的数据,如果为空,返回 (new JREmptyDataSource()),否则返回 (new WebappDataSource(data)) public JRDataSource getDataSet(){ if (jrDataSource == null){ if ((jrData==null) || (jrData.getRetCode().equals("NO_DATA"))){ jrDataSource = new JREmptyDataSource(); }else{ jrDataSource = new WebappDataSource(jrData); } } return jrDataSource; }
} 3.Action //需要得到绝对路径path File reportFile = new File(path +"demo.jasper"); JReportParam jreportParam = new JReportParam(reportFile, dataset); jreportParam.setParameters("ReportTitle", "my demo"); httpServletRequest.setAttribute("jreportParam", jreportParam); actionForward = actionmapping.findForward(reportType);

|
|
相关文章:相关软件: |
|