你又来了:)
可以用 applet 啊,这里有个例子:
一次 applet 客户端打印 jasperreport 报表任务笔记

解决方案 »

  1.   

    您能帮我看看我的代码哪里出问题了么   我没法 像您的第六步一样 输入地址就下载public static void doPrint(String orderNumber,HttpServletRequest request, HttpServletResponse response) throws Exception {
    Map<String, Object> param=new HashMap<String, Object>();
    param.put("orderNumber", orderNumber);
    ServletOutputStream ouputStream = response.getOutputStream();
    JasperDesign jasperDesign = JRXmlLoader
    .load("D:\\book.jrxml");
    JasperReport jasperReport = JasperCompileManager
    .compileReport(jasperDesign);
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,
    param, getConn());
    JasperFillManager.fillReport(jasperReport, param);
    JasperViewer.viewReport(jasperPrint, false);
    JRXlsExporter exporter = new JRXlsExporter();
     ObjectOutputStream oos = new ObjectOutputStream(ouputStream);   
          oos.writeObject(jasperPrint);      
                oos.flush();      
                oos.close();   
    getConn().close();
    }
    我现在应该是只需要根据您第七步的方法操作行么   请您指点下  
    很抱歉给您带来麻烦  我是新手比较不懂
      

  2.   


    就是我运行后  是会打开打印的页面  并且下载一个叫  iReportBook.do的 东西
    但是不像您说的那样  会有个下载页面
    类似您这句  http://localhost:9999/Test2/testServlet3  会有下载页面
      

  3.   

    我是通过 action 调用的  
     public class iReportAct {
    @RequestMapping("ireport/ireportBook.do")
    public String ireportBook(String orderNumber,HttpServletRequest request, HttpServletResponse response) throws Exception {
    iReport.doPrint(orderNumber,request,response);
    return "hotel/bill/billMain";
    }}
    action 方法
      

  4.   

    会报
    java.lang.IllegalStateException: getOutputStream() has already been called for this response
    错误
      

  5.   

    你用了 struts 了?
    先用纯 Servlet 搞定,再转到 struts
      

  6.   

     用Struts用差别么  需要增加什么  我是新手  刚毕业出来
    所以不是非常了解   这个该怎么搞定  
    呵呵  在不搞定会被K死的  麻烦版主大人指点下
      

  7.   

    有差别。struts 对 request 对象进行了封装。建议你先用 Servlet 从功能上完成了,再搞到 struts
      

  8.   

    老样子   共享代码  对以后有需求的朋友可以参考
    public static void doPrint(String orderNumber, HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
    Map<String, Object> param = new HashMap<String, Object>();
    param.put("orderNumber", orderNumber);
    try {
    ServletOutputStream ouputStream = response.getOutputStream();
    JasperDesign jasperDesign;
    jasperDesign = JRXmlLoader.load("D:\\book.jrxml");
    JasperReport jasperReport = JasperCompileManager
    .compileReport(jasperDesign);
    JasperPrint jasperPrint = JasperFillManager.fillReport(
    jasperReport, param, getConn());
    JasperFillManager.fillReport(jasperReport, param);
    // JasperViewer.viewReport(jasperPrint, false);
    // JasperPrintManager.printReport(jasperPrint, true);
    JasperExportManager.exportReportToPdfStream(jasperPrint, response.getOutputStream()); } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    try {
    getConn().close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }这里有2点提示下各位朋友JasperViewer.viewReport(jasperPrint, false);
    JasperPrintManager.printReport(jasperPrint, true);
    这2句被注释掉的  是在服务器上显示的   注释后不在服务器上显示
    如果你需要在服务器上显示那就开起来用
    第一次改成true  并且注释第二句的话  会不显示pdf样式  并且会变成是下载  
    有用的朋友可以参考下
    这里谢谢斑竹的指导和帮助