【问题标题】:JSP page is running MySQL query twice on TomcatJSP 页面在 Tomcat 上运行 MySQL 查询两次
【发布时间】:2020-07-07 10:16:49
【问题描述】:

我遇到了这个奇怪的问题,MySQL 插入发生了两次。我一直在对代码进行配对,直到获得最简单的版本,但它仍在发生。有没有人见过这个?这是在 Tomcat 服务器上。

下面是我的超级简化代码。当我运行它时,表中出现两个具有相同值的条目。奇怪的是它似乎将整个页面运行了两次,因为如果我足够快地进行选择,我可以看到第一个条目,然后几秒钟后第二个条目出现。当我为这些行加上时间戳时,它们相差 1 秒。

"jdbc:mysql://127.0.0.1/mydatabase",
        "myusername", 
        "mypassword"
    );
    java.sql.Statement statement = connection.createStatement();;
    statement.execute("INSERT INTO tbl_test (Value) VALUES ('Test value')");
%>

附加信息: 此外,如果我在插入后执行 select 语句并选择表的完整内容,则只会显示第一个条目。但是当我查看数据库时,有两个整体。所以就好像整个jsp页面跑完了,然后又默默的在后台运行了。

这里是代码的扩展版本,允许您选择数据库的输入值,因此您可以即时尝试并查看发生了什么:

<%
    Class.forName("com.mysql.jdbc.Driver"); 
    java.sql.Connection connection = java.sql.DriverManager.getConnection(
        "jdbc:mysql://***/***",
        "***", 
        "***!"
    );
    java.sql.Statement statement = connection.createStatement();
    String Value = request.getParameter("Value");
    statement.execute("INSERT INTO tbl_test (Value) VALUES ('" + Value + "');");
    java.sql.ResultSet rs = statement.executeQuery("SELECT * FROM tbl_test;");

    while (rs.next()) {
        %><%=rs.getString("ID")%>=<%=rs.getString("Value")%><BR><%
    }
%>

您可以在以下位置试用此代码: http://familychurch.life/familychurch/test.jsp?Value=Whatever

(将“Whatever”替换为您要插入的值。)

运行一次,您将看到插入的值一次。但是再次运行它,您会看到您之前输入的值现在在表格中出现了两次。

【问题讨论】:

  • 另外,如果我在插入后执行选择语句并选择表的完整内容,则只会显示第一个条目。但是当我查看数据库时,有两个整体。所以就好像整个jsp页面跑完了,然后又在后台静默运行。
  • 这听起来像是在运行这段代码两次,而不是这实际上导致插入 2 行
  • 所以基本上你给我们看的代码对我们没有用。您必须创建一个Minimal, Complete and Verifiable Example
  • 是的,页面运行了两次。但这实际上就是代码文件中的全部内容。没有其他的。我将浏览器指向此页面并发生所描述的行为。这就是我需要帮助的所有代码。
  • 这里有一个版本的代码你可以试试看效果:

标签: mysql jsp tomcat jdbc


【解决方案1】:

原来问题是由 Chrome 扩展程序(FaceBook™ 的视频下载器)引起的。它一定是在后台默默地重新加载页面。

特别感谢 @RiggsFolly 帮助我解决这个问题!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多