初学报表这方面的东东,我用的是iReport1.2.5版本的。设计一个报表之后用jsp代码编译的时候出现下面的提示:
type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: /smp3.jsp(3,0) Page directive: illegal to have multiple occurrences of contentType with different values (old: text/html;charset=GBK, new: application/pdf;charset=gb2312)
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:236)
org.apache.jasper.compiler.Validator$DirectiveVisitor.visit(Validator.java:133)
org.apache.jasper.compiler.Node$PageDirective.accept(Node.java:590)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2393)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2399)
org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
org.apache.jasper.compiler.Validator.validate(Validator.java:1702)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:166)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:315)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:282)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.搞了一下午了都没搞定,晕死了。希望大家帮我下

解决方案 »

  1.   

    /smp3.jsp(3,0)去这里看看
      

  2.   

    这个是小弟的代码(从网上依葫芦画瓢改写的)
    <%@ page contentType="text/html;charset=GBK"%>   
    <%@ page contentType="application/pdf;charset=gb2312"%><%@ page import="net.sf.jasperreports.engine.*"%>
    <%@ page import="net.sf.jasperreports.engine.util.*"%>
    <%@ page import="net.sf.jasperreports.engine.export.*"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.io.*"%>
    <%@ page import="java.sql.*"%>
    <%
       //报表编译之后生成的.jasper文件的存放位置
       File reportFile=new File("D:/Report/test1.jasper");
       //连接数据库
       String url="jdbc:oracle:thin:@localhost:1521:test";
       Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
       //传递报表中的参数值
       Map parameters=new HashMap();
       //"Name"是报表中定义过的一个参数名称,其类型为String型
       parameters.put("Name",new String("阿曼"));
       System.out.println("-----------conn---------");
       //连接到数据库
       Connection conn=DriverManager.getConnection(url,"gjk","110");
       System.out.println("--------Jasper begin--------");
       //在控制台显示一下报表文件的物理路径
       System.out.println(reportFile.getPath());
       byte[]bytes=JasperRunManager.runReportToPdf(reportFile.getPath(),parameters,conn);
       System.out.println("--------Jasper end--------");
       response.setContentType("application/pdf");
       response.setContentLength(bytes.length);
       ServletOutputStream ouputStream=response.getOutputStream();
       ouputStream.write(bytes,0,bytes.length);
       ouputStream.flush();
       ouputStream.close();
       %>
      

  3.   


    你的contentType声明了2个。这个就是问题的所在
      

  4.   

    我也试着把"<%@ page contentType="text/html;charset=GBK"%> ”删去,但编译出来的是乱码,如果再重新启动浏览器编译("<%@ page contentType="text/html;charset=GBK"%>"已经删除的前提下)则又出现警告"当前安全设置不允许下载该文件".
      

  5.   

    最好是用 servlet 来运行 jasper, 你可以参考 jasperReport demo 中的那个 webapp 项目试试,或者你直接用那个来部署,然后再改改