JSP страница выполняется дважды MySQL запрос на Tomcat - PullRequest
1 голос
/ 26 марта 2020

У меня странная проблема, когда вставка MySQL происходит дважды. Я продолжал сопрягать код до тех пор, пока не получил простейшую версию, но это все еще происходит. Кто-нибудь видел это раньше? Это на сервере Tomcat.

Ниже приведен мой упрощенный код. Когда я запускаю это, в таблице появляются две записи с одинаковым значением. Странно то, что кажется, что вся страница запускается дважды, потому что, если я достаточно быстро выбираю, я вижу первую запись, а через несколько секунд появляется вторая. Когда я ставлю метки времени на строки, они различаются на 1-й sh секунд.

"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')");
%>

Дополнительная информация: Кроме того, если я выполню оператор выбора после вставки и выделю полное содержимое таблицы, только первая запись обнаруживается. Но когда я смотрю в базу данных, есть два входа. Таким образом, вся страница 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

(Заменить «Что угодно» на значение Вы хотите вставить.)

Запустите его один раз, и вы увидите значение, вставленное один раз. Но запустите его во второй раз, и вы увидите, что введенное ранее значение теперь находится в таблице дважды.

1 Ответ

1 голос
/ 26 марта 2020

Оказывается, проблема была вызвана расширением Chrome (Video Downloader for FaceBook ™). Должно быть, перезагрузка страницы в фоновом режиме.

Специальный крик @RiggsFolly за помощь в разгадке!

...