java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

2024-06-20

这两天我一直在尝试找出问题所在。我在这里读到我应该在代码中添加一个返回,我做到了,但我仍然得到

java.lang.IllegalStateException: Cannot call sendRedirect() 
     after the response has been committed, Error.

我怎么解决这个问题?

每次我连接到数据库时都会发生这种情况。这是连接方法:

<%!

public  void connect()
{
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String dbURL = "jdbc:mysql://localhost:3306/moti";
            String user = "root";
            String password = "j3o4h5n6y7";
            con =  DriverManager.getConnection(dbURL, user, password);  
            statement = con.createStatement();
        }
        catch(Exception ex) {
            throw new Error(ex);
        }  
}
%>

就像这个代码块一样:

            String post = request.getParameter("send");
            if(post != null )
            {
                    connect();
                    statement.execute(add);
                    con.close();
                    response.sendRedirect("fourm.jsp");
                    return;

            }

但在这个代码块中它的工作完美:

    String back = request.getParameter("retrun");

    if(back != null)
    {

        response.sendRedirect("fourm.jsp");
        return;
    }       

从高层次来看,您的具体问题是由于您错误地使用 JSP 文件而不是Servlet https://stackoverflow.com/tags/servlets/info类作为前端控制器。

从底层来看,您的具体问题是由于 JSP 在生成 HTML 代码并将其发送到 HTTP 响应期间充当视图技术而引起的。响应缓冲区大小默认为 2KB。 JSP 中的每个 HTML 和其他模板文本都是立即地一旦代码到达该行,就写入响应。因此,当第一次达到响应缓冲区大小限制时,所有 HTTP 响应标头和迄今为止编写的 HTML 代码将被发送到客户端(网络浏览器)。换句话说,响应已提交。这是一个不归路。根本不可能从客户端取回已经发送的字节。

重定向基本上设置了LocationHTTP 响应中的标头。为了能够正确设置它,显然响应必须尚未提交。如果客户端已经发送和检索了所有响应标头,则根本不可能设置新的响应标头。

从底层来看,您可以通过将所有前端控制器和业务逻辑移动到 JSP 文件的最顶层来解决您的具体问题,以便在发送第一个 HTML 代码之前就执行它。通过这种方式,您可以消除在前端控制器和业务逻辑完成之前提交响应的风险。

<%@page pageEncoding="UTF-8" %>
<%
    // Write business code here.
%>
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Some</title>
    </head>
    <body>
        ... (no controller/business logic here! just pure presentation)
    </body>
</html>

However, 这是一个不好的做法 https://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files。而是将所有前端控制器和业务逻辑移至Servlet https://stackoverflow.com/tags/servlets/info。那么你的方法从高层看来是正确的。 Java 代码不属于 JSP 文件,而是属于 Java 类。

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

java.lang.IllegalStateException:提交响应后无法调用 sendRedirect() 的相关文章

随机推荐

  • C 编程:seg 错误、printf 和相关的怪癖[重复]

    这个问题在这里已经有答案了 正如许多年轻的程序员所做的那样 我了解到在代码中的不同点插入大量 here1 here2 等打印到控制台语句的有用性 以找出我的程序何时出错 在我的计算机科学学习过程中 这种强力调试技术已经拯救了我很多很多次 然
  • 在 R 中使用 Huggingface Transformer 模型

    我正在尝试在 R 中使用不同的 Huggingface 模型 这是通过 reticulate 导入 Transformer 包来实现的 谢谢 https rpubs com eR ic transfoRmers https rpubs co
  • NoSuchMethodError:尝试调用非函数,例如 null:'dart.global.firebase.auth'

    Flutter 新手 我怀疑在尝试设置 Firebase Auth 时错过了一些非常简单的事情 一直在网上寻找解决方案 大多数人要求您仔细检查 firebase auth js 是否正确包含在 index html 文件中 这样就完成了 下
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • .NET 内存不足故障排除

    在阅读了几篇有关 NET 技术中的内存的启发性文章后 Out of Memory 不是指物理内存 https learn microsoft com en us archive blogs ericlippert out of memory
  • Android 深度链接至 Instagram 应用

    Instagram 已经发布了 iOS 深层链接的 url 方案 但尚未为 Android 创建文档 有没有办法深入链接到 Android 上的 Instagram 应用程序 以转到 Instagram 应用程序中的特定位置 例如 Inst
  • 循环预定义值

    有没有办法在 oracle 中执行 for every 如下所示 begin for VAR in 1 2 5 loop dbms output put line The value VAR end loop end 我知道你可以这样做 b
  • DownloadStringAsync 首次调用时会阻止线程 14 秒

    这种情况只发生在我的一台机器上 我认为是环境配置问题 所有计算机均运行 ESET Smart Security 软件防火墙 有任何想法吗 using System using System Net using System Diagnost
  • Excel VSTO 工作簿新活动

    在 Excel 2007 的一个 Excel 插件项目中 我需要检查创建新工作簿的事件 我还需要捕捉 Workbook Open 事件 我很容易做到这一点 在我在互联网上的研究中 我发现了以下内容 打开任何工作簿时都会引发 Applicat
  • 如何解决asp.net core mvc项目中的“未找到视图”异常

    我正在尝试使用 VS Code 创建一个在 OSX 上运行的 ASP NET Core MVC 测试应用程序 访问默认主页 索引 或我尝试过的任何其他视图 时 我收到 未找到视图 异常 这是启动配置 public void Configur
  • 从Django中具有外键关系的两个表中检索数据? [复制]

    这个问题在这里已经有答案了 This is my models py file from django db import models class Author models Model first name models CharFie
  • 使用 Kentor.AuthServices.StubIdp 作为生产 IDP

    我正在尝试在我的应用程序中实现 IDP SAML2 服务器 鉴于我的应用程序拥有所需的所有数据 我不希望我的任何合作伙伴要求我们的客户在他们这边注册 我对 SAML2 协议不是很熟悉 我找到了这个项目Kentor AuthServices
  • 透视变换矩阵的计算

    给定 3D 空间中的一个点 如何计算齐次坐标中的矩阵 将该点投影到平面上z d 其中原点是投影中心 好吧 让我们尝试解决这个问题 扩展伊曼纽尔的答案 Assuming如果您的视图向量直接沿着 Z 轴 则所有尺寸都必须按视图平面距离的比例进行
  • 使用 Json.NET,在序列化对象时如何加密任何类型的选定属性?

    我想概括一下这个答案 https stackoverflow com a 29240043 3744182 by 布赖恩 罗杰斯 https stackoverflow com users 10263 brian rogers to 序列化
  • Google App Engine:修改云运行环境

    我正在尝试部署一个使用自定义 Node js 服务器的 Next js 应用程序 我想将自定义构建变量注入应用程序 next config js const NODE ENV process env NODE ENV const envTy
  • 当它的父级是 ConstraintLayout 时设计 CardView 吗?

    我在编辑包含Relativelayout的Cardview内的RelativeLayout时搞砸了 ConstraintLayout会将相对布局的wrap content更改为0并添加工具 layout editor absoluteX 1
  • 如何使用 DJango Rest Framework 上传多个图像?

    我可以使用以下代码上传单个图像 如果我选择多个图像 则仅上传所选图像中的最后一个图像 模型 py class Image models Model property id models ForeignKey properties Addre
  • UIView animateWithDuration:delay: 工作很奇怪

    我在使用 iPhone 动画块时遇到了一个奇怪的问题 这段代码 UIView animateWithDuration 2 delay 0 options 0 animations void controller setBackgroundC
  • Spring Cloud 中的粘性会话和 Zuul

    我有一组微服务 我们使用 zuul 从前端进行路由 作为使用 Spring Cloud 将 uri 上下文路径映射到特定微服务的一种方式 在内部和外部 我们使用 spring OAuth2 效果非常好 然而 对于一项特定服务 出现了对 SA
  • java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

    这两天我一直在尝试找出问题所在 我在这里读到我应该在代码中添加一个返回 我做到了 但我仍然得到 java lang IllegalStateException Cannot call sendRedirect after the respo