当前位置: 首页 > 知识库问答 >
问题:

如何捕获从Jasper报表图像servlet引发的异常

邹祺
2023-03-14

我的web应用程序使用JASPERREPORTS来编译和提供各种报告。报告中显示的所有图像都来自ImageServlet网络。旧金山。jasperreports。j2ee。servlets。ImageServlet。

<servlet>
    <servlet-name>ImageServlet</servlet-name>
    <servlet-class>net.sf.jasperreports.j2ee.servlets.ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>ImageServlet</servlet-name>
    <url-pattern>/image</url-pattern>
</servlet-mapping>

对图像的请求如下所示:

GET /watapp/image?rand=0.5039537955900038&image=px

在我的应用程序的安全审计中,有人提出,如果更改查询参数,如设置image=pxxx,会导致500内部服务器错误。所以我需要处理这个异常。

net.sf.jasperreports.engine.JRRuntimeException: Invalid image name: pxxx
        at net.sf.jasperreports.engine.export.JRHtmlExporter.getPrintElementIndex(JRHtmlExporter.java:2408)
        at net.sf.jasperreports.engine.export.JRHtmlExporter.getImage(JRHtmlExporter.java:695)
        at net.sf.jasperreports.j2ee.servlets.ImageServlet.service(ImageServlet.java:98)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at com.watapp.filters.login.ApplicationFilter.doFilter(ApplicationFilter.java:41)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:662)

我的问题是,如何处理这个异常?servlet与JASPER jar一起出现,我无法控制servlet的代码。请建议。

共有1个答案

高博涉
2023-03-14

创建您自己的servlet,并修改图像的servlet映射,以指向该映射,而不是jasper servlet。

您的新servlet不必做任何工作,它可以简单地将请求传递给jasper servlet,但它使您能够插入异常处理程序来捕获JRRuntimeException

 类似资料:
  • 如何将报表从jasper studio发布到jasper服务器? 我将只发布主报告还是包括子报告?

  • 在包含JavaFX警报的类上运行一些单元测试,我实现了以下try-的块: 在对也没有修复它的调用代码进行顶级尝试捕获之后。 叠: 有什么方法可以解决这个问题? 我从错误中得到的是,没有JavaFX场景/舞台可以与警报关联,但我不确定如何处理这一点。

  • 我已将图像保存在oracle数据库中为BLOB。我的模型类包含Byte[]图像;对应于数据库中的BLOB feild。我必须将数据库中的所有图像导出为PDF格式。在java中,我使用了以下代码: 我需要PDF格式的图像。

  • 我正在尝试从我的Java代码生成Jasper报告,我的Java应用程序是Swing。我使用设计了Jasper报告。然而,在我的报告中,有一个徽标图像。图像位置是动态传递的,在Jaspesoft Studio上预览时效果良好。以下是JasperSoft工作室中的图像设置。变量是 这就是我用Java生成报告的方式。 问题是,Java生成的报表没有图像!这是怎么了? 更新 我也尝试将用作,但这里有相同的

  • flutter:==图像资源服务捕获的异常:引发以下断言解析图像编解码器:flutter:无法加载资产:download.png flutter:flutter:当引发异常时,这是堆栈:flutter:#0 platformassetbundle.load(包:flutter/src/services/asset_bundle.dart:221:7)flutter:flutter:#1 asset

  • 在eclipse中运行此程序时出现异常。Servlet。servlet示例的init()引发了异常描述服务器遇到了一个内部错误,使其无法满足此请求。