JSP - 我们可以通过关闭每个连接器在同一个JSP上打开两个DB连接

时间:2016-06-15 08:42:27

标签: mysql sql database jsp servlets

我试着编写一个下面的代码,其中两个数据库连接正在打开和关闭,所以在TOO MANY CONNECTION问题方面会出现任何问题吗?我没有收到任何错误,只是想确认下面的代码是否存在任何问题。

    <%
                        Class.forName("com.mysql.jdbc.Driver");
                        connection = DriverManager.getConnection(connectionURL, username, password);
                        statement = connection.createStatement();
                        try {
                            rs1 = statement.executeQuery("SELECT QUERY");
              if (rs1.next()) {
                                try {

                                    PreparedStatement ps1 = DriverManager.getConnection(connectionURL, username, password).prepareStatement("UPDATE QUERY);
                                    ps1.execute();
                                    ps1.close();

                                } catch (Exception e) {
                                    out.println(e);
                                }
                            } else {
                                rs1 = statement.executeQuery("SELECT QUERY");

                if (rs1.next()) {

                          CONDITION.....

             }
              }
          rs1.close();
                        }
                    }


                        finally {
              if (!connection.isClosed() && connection != null) {
                            connection.close();
                        }
                    }

                %> 

                Some HTML CODE.....HERE


               <%
                        Class.forName("com.mysql.jdbc.Driver");
                        connection = DriverManager.getConnection(connectionURL, username, password);
                        statement = connection.createStatement();
                        try {
                            rs1 = statement.executeQuery("SELECT QUERY");
              if (rs1.next()) {
                                try {

                                    PreparedStatement ps1 = DriverManager.getConnection(connectionURL, username, password).prepareStatement("UPDATE QUERY);
                                    ps1.execute();
                                    ps1.close();

                                } catch (Exception e) {
                                    out.println(e);
                                }
                            } else {
                                rs1 = statement.executeQuery("SELECT QUERY");

                if (rs1.next()) {

                          CONDITION.....

             }
              }
          rs1.close();
                        }
                    }


                        finally {
              if (!connection.isClosed() && connection != null) {
                            connection.close();
                        }
                    }

                %> 

1 个答案:

答案 0 :(得分:1)

首先处理JSP中的数据库逻辑是一种不好的做法...尽可能避免使用scriptlet。因为JSP默认情况下不是线程安全的,所以你可能会遇到并发问题。我会把DAO实用程序类编写到处理数据库逻辑,它将为动作控制器返回适当的数据。控制器将以请求/会话属性的形式设置该数据,您可以在问题中将其转发给JSP。