进入iReport中的 Datasource/Connections/Datasources 菜单就可以进行可视化的数据源连接。以下是JSP调用jasper文件:JSP:
<%@ page contentType="text/html;charset=GBK" %>
<%@ page import="dori.jasper.engine.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %> <%
//数据库连接
Connection conn=null;
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://192.168.0.10:1433;DatabaseName=am;user=sa;password= sa"); //取到编译后的jasper文件
File reportFile = new File(application.getRealPath("test/iteminfo.jasper")); //向报表中定义的参数赋值
Map parameters = new HashMap();
Integer i=new Integer(8);
parameters.put("pjId", i); 
byte[] bytes = 
JasperRunManager.runReportToPdf(
reportFile.getPath(), 
parameters, 
conn
); 
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close(); %> 

解决方案 »

  1.   

    chshzh2000(地皮) :
                  Thx!
    还请帮帮忙!偶现在用的是struts+hibernate
    ireport的datasource用JRDataSourcepublic class HibernateQueryResultDataSource implements dori.jasper.engine.JRDataSource {
           private String[] fields; 
      private Iterator iterator; 
      private Object currentValue;   public HibernateQueryResultDataSource(List list, String[] fields) { 
        this.fields = fields; 
        this.iterator = list.iterator(); 
      }   public Object getFieldValue(JRField field) throws JRException { 
        Object value = null; 
        int index = getFieldIndex(field.getName()); 
        if (index > -1) { 
          Object[] values = (Object[])currentValue; 
          value = values[index]; 
        } 
        return value; 
      }   public boolean next() throws JRException { 
        currentValue = iterator.hasNext() ? iterator.next() : null; 
        return (currentValue != null); 
      }   private int getFieldIndex(String field) { 
        int index = -1; 
        for (int i = 0; i < fields.length; i++) { 
          if (fields[i].equals(field)) { 
            index = i; 
            break; 
          } 
        } 
        return index; 
      } 
      }现在的问题就是下面的ds得不到正确的值!
    HibernateQueryResultDataSource ds = new HibernateQueryResultDataSource(list, fields);
         byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(),parameters,ds);
         response.setContentType("application/pdf");
         response.setContentLength(bytes.length);
         ServletOutputStream ouputStream = response.getOutputStream();
         ouputStream.write(bytes, 0, bytes.length);
         ouputStream.flush();
         ouputStream.close();