避免jsp中的java.lang.IllegalStateException

2024-03-02

我尝试在 jsp 中下载生成的 pdf。但是我的日志显示以下错误。我如何避免此错误。我的代码和错误如下

List<SDO> sdolist = new ArrayList<SDO>();   
    try{
        sdolist = TravelAdvanceRequest.generatePDF(objSession,objList); //calling service
        infoMsg="Pdf Generation Success";
        if (sdolist != null) {
            StringType stringMsg = (StringType) sdolist.get(0);
            infoMsg="pdf generation success......";
            System.out.println("pdf generation success......");
            System.out.println("file path===========>>"+stringMsg.getString());
            ServletOutputStream op          =response.getOutputStream();

         //throw new IllegalStateException("MyException");
        String filename = stringMsg.getString() == null ? "" : stringMsg.getString();
        File                f           =   new File(filename);         
        int                 length      =   0;

        ServletContext      context     =   getServletConfig().getServletContext();
        String              mimetype    =   context.getMimeType( filename );
        if(f.isFile()){
            response.setContentType( (mimetype != null) ? mimetype : "application/octet-stream" ); 
            response.setContentLength( (int)f.length() );
            response.setHeader( "Content-Disposition", "attachment; filename=\"Axis template for "+strCurrency+" account.pdf\"" );
            byte[] bbuf = new byte[1000];
            DataInputStream in = new DataInputStream(new FileInputStream(f));

       while ((in != null) && ((length = in.read(bbuf)) != -1))
            {
                op.write(bbuf,0,length);
            }

            in.close();
            response.getOutputStream().flush();
           // op.flush();
            op.close(); 
            return;
        }else{
            System.out.println("Exception throws there is no such file in the Directory : "+filename);
        }

    }

    }catch(IllegalStateException e1)
    {
        System.out.println("Illegal State Exception......"+e1.getMessage());    
    }
    catch(Exception e)
    {
        System.out.println("Error in Pdf Creation......"+e.getMessage());
        errMsg=e.getMessage();

    }

java.lang.IllegalStateException: getOutputStream() has already been called for this response
    at org.apache.catalina.connector.Response.getWriter(Response.java:619)
    at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198)
    at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
    at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
    at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:188)
    at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:118)
    at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:77)
    at org.apache.jsp.DebitDetails_jsp._jspService(DebitDetails_jsp.java:374)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:322)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249)
    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 org.apache.tuscany.sca.host.webapp.TuscanyServletFilter.doFilter(TuscanyServletFilter.java:103)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    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:235)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)

您收到此错误的原因是因为您正在使用 JSP 执行逻辑。 JSP 使用以下方式呈现其输出Writer的对象response,但你正在打电话getOutputStreamJSP 内部也是如此。因此,你会得到一个异常,因为你试图同时使用OutputStreamWriter同时。您还没有显示完整的 JSP 代码,但我猜您正在主要逻辑之后执行一些输出(可能是一些空白字符)。正如 @VigneshVino 所说,您应该在 servlet 内执行逻辑。 JSP 应该仅用于呈现视图。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

避免jsp中的java.lang.IllegalStateException 的相关文章

随机推荐

  • 仿函数调用和函数调用的详细区别?

    这样做的关键原因是 for each 实际上并没有假设它的第三个参数是一个函数 它只是假设它的第三个 论证是可以的 用适当的参数调用 A 适当定义的对象也可以 作为 而且往往比 更好 功能 例如 更容易 内联应用程序运算符 类而不是内联传递
  • 如何从 Visual Studio 中调试 IIS 上的两个 Web 应用程序/服务?

    在 Visual Studio 2010 中 我想同时调试在 IIS 上运行的两个 Web 应用程序 调试第一个应用程序时一切正常 但是当开始调试第二个应用程序且第一个程序仍处于调试模式时 Visual Studio 会提示 无法在 Web
  • 通过指定坐标检索 html 控件

    如何仅通过指定触发事件的坐标来获取 html 控件的 id 例如onmousedown onmouseup onclick ETC 坐标可以通过以下方式获得 e clientX e clientY其中 e 是事件对象 这个想法是获取在其上完
  • Chrome 不允许 cookie 过期时间少于 4 小时

    我似乎无法在 Google Chrome 中设置寿命较短的 cookie 它们要么没有被设置 要么立即被删除 无法分辨是哪一个 尽管两种方式的结果都是相同的 仅当未来到期时间为 4 小时或更短时 才会发生这种情况 如果过期时间大于 4 小时
  • 如何在 Extjs 4.1 中使用 treecombo

    我找到了导师http www sencha com forum showthread php 198856 Ext ux TreeCombo http www sencha com forum showthread php 198856 E
  • 验证一组对象是否已正确映射

    我正在寻找一套干净的管理方法测试特定的相等性 http blog ploeh dk 2012 06 22 Test specificEqualityversusDomainEquality in F 单元测试 90 的时间里 标准结构平等
  • 在哪里下载 MySQLdump.ext 比 mysqldump.exe 版本 5.7.1.7 更新的版本

    尝试通过 MySQL Workbench 转储简单数据库 方法是单击 服务器 gt 数据导出 gt mydb gt 开始导出 获取消息 mysqldump 版本不匹配 该消息显示这些版本 mysqldump exe 版本 5 7 1 7 M
  • 如何让我的 Yubikey 在 Windows 10 中与 SSH 配合使用?

    在出于技术兴趣购买了 Yubikey 5 NFC 固件 5 2 7 并尽可能设置 FIDO2 身份验证后 我遇到了无法再通过 SmartGit 连接到我的 GitLab 服务器的问题 因为没有请求第二个因素 因此我无法连接到服务器 然后我决
  • Neo4j gem - 处理管理关系的首选方法

    这主要是一个设计 效率问题 但我想看看在 Neo4j 中是否有一种首选方法来处理这个问题 而不是在 sql 数据库中如何处理 现在我有 2 个模型 user and event 我之间也有关系user and event表示他们将参加该活动
  • 在 groovy shell 中使用 groovy 类别

    我正在使用 Groovy 类别在一些 DSL 下工作 我想找到一种方法来使用我的 DSL 和 groovy shell 而无需显式编写use MyCategory myObject doSomething 对于每个命令 例如 假设我有以下玩
  • 使用 JPA 从表中删除所有行

    我想使用 JPA 删除特定表中的所有行 我做了什么 public class EmptyBomTables extends HttpServlet private static final long serialVersionUID 1L
  • 如何同步向mongo插入数据(Nodejs、Express)

    我在使用 node express 将数据插入 mongodb 时遇到问题 我的代码如下所示 router get data section sort function req res next Deleting old data alwa
  • Python3 openpyxl 将包含特定值的行中的数据复制到现有工作簿中的新工作表

    我正在尝试将其中包含特定值的行复制到新工作表中 在查看下面列出的参考资料时 我能够确定如何使用 ws append 进行复制 但这在脚本中无法正常运行 我想做的是迭代 wb 如果它具有特定值 则创建另一个工作表并将该行复制到该工作表 我将不
  • 在函数中使用 Config::set() 两次的方法

    我已经用谷歌搜索和 stackoverflowed 如果可以的话 来解决这个问题 但找不到足够简洁的答案 一些参考文献 Laravel 4 当使用 Config set 更改 auth model 时 Auth user 不起作用 http
  • Swift - 合并订阅未被调用

    最近 我尝试使用freshOS 网络 https github com freshOS Networking快捷的包裹 我读了好几次自述文件 但无法让它与我一起工作 我正在尝试获取使用公共 API 服务的国家 地区列表 这就是我所做的 Mo
  • 使用 AJAX 更新部分视图

    我有一个包含许多图像的页面 每个图像都有一个关联的文本框 用于提交该图像上的标签 每个图像和文本框都是通过局部视图呈现的 目前 我可以更新标签 并且通过整页刷新一切正常 我希望能够通过 AJAX 完成这一切 但我遇到了一些麻烦 这是部分视图
  • 部署时 ClientId 未更新 - 用户注入 null

    我正在使用 OAuth 2 0 创建一个包含 App Engine 和 Cloud EndPoints 的项目 我创建并配置了所有 clientId WEB Android 和 iOS 但是当我在本地运行服务器或部署到 App Engine
  • 为什么自定义 css 类不适用于 React-Semantic-UI 元素?

    我用react semantic ui创建了卡片 我想通过css类添加一些额外的样式 一个例子是 我添加带有 box shadow 属性的自定义 card 类 但未应用该样式 HTML PART import App css CLAIM C
  • 在Android上播放音频RTMP流

    有没有人在 Android 上成功播放音频 RTMP 流http code google com p android rtmp client http code google com p android rtmp client或知道任何其他
  • 避免jsp中的java.lang.IllegalStateException

    我尝试在 jsp 中下载生成的 pdf 但是我的日志显示以下错误 我如何避免此错误 我的代码和错误如下 List