Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jsp从数据库中删除行_Java_Mysql_Jsp_Jdbc_Web - Fatal编程技术网

Java 使用jsp从数据库中删除行

Java 使用jsp从数据库中删除行,java,mysql,jsp,jdbc,web,Java,Mysql,Jsp,Jdbc,Web,问题在于,当我在deleteData-out.println(value)中的userNotes.jsp测试函数中单击按钮DELETE时,它会显示按钮上单击的内容的当前值,但不会显示其他内容。它不会从数据库中删除数据,也不会在响应时发送重定向,我需要做什么userNotes.jsp <table id="notes" border="2"> <tr>

问题在于,当我在deleteData-
out.println(value)
中的userNotes.jsp测试函数中单击按钮DELETE时,它会显示按钮上单击的内容的当前值,但不会显示其他内容。它不会从数据库中删除数据,也不会在响应时发送重定向,我需要做什么
userNotes.jsp

                        <table id="notes" border="2">
                            <tr>

                                <td>note name</td>
                                <td>note</td>

                            </tr>
                            <%
                                PrintWriter writer = response.getWriter();
                                int id = Integer.parseInt(request.getParameter("r"));
                                try {
                                    Class.forName("com.mysql.jdbc.Driver");
                                    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/evernoteDB",
                                            "evernoteDB", "0633739768z");

                                    Statement st = con.createStatement();
                                    ResultSet rs;
                                    rs = st.executeQuery("SELECT * FROM note");

                                    while (rs.next())
                                    {
                            %>
                            <tr>
                                <td><%=rs.getString(1) %></td>
                                <td><%=rs.getString(2) %></td>
                                <td>

                                            <a href=deleteData?id=<%=rs.getString(1) %>> Delete </a>

                                </td>
                       </tr>
                            <%

                                    }
                                    rs.close();
                                    st.close();
                                    con.close();
                                }
                                catch(ClassNotFoundException e)
                                {
                                    writer.println("Couldn't load database driver: " + e.getMessage());
                                }
                                catch(SQLException e)
                                {
                                    writer.println("SQLException caught: " + e.getMessage());
                                }
                                catch (Exception e)
                                {
                                    writer.println(e);
                                }

                            %>
                        </table>

noteName
的类型为
String
,因此执行查询时应引用该值

st.executeUpdate("DELETE FROM note WHERE noteName='" + value + "'");
考虑改用
PreparedStatement
。它是安全的,也会处理这些错误

由于您正在重定向,所以不应该尝试设置任何内容标题。删除以下内容,因为servlet不应该编写任何响应,而是重定向

response.setContentType("text/html");
PrintWriter out = response.getWriter();
另外,不要像那样硬编码主机和端口号,否则您将无法在其他服务器上部署生成的war。将相对URL与
sendRedirect()一起使用

conn.close();
response.sendRedirect("/userNotes.jsp");
return;

noteName
的类型为
String
,因此执行查询时应引用该值

st.executeUpdate("DELETE FROM note WHERE noteName='" + value + "'");
考虑改用
PreparedStatement
。它是安全的,也会处理这些错误

由于您正在重定向,所以不应该尝试设置任何内容标题。删除以下内容,因为servlet不应该编写任何响应,而是重定向

response.setContentType("text/html");
PrintWriter out = response.getWriter();
另外,不要像那样硬编码主机和端口号,否则您将无法在其他服务器上部署生成的war。将相对URL与
sendRedirect()一起使用

conn.close();
response.sendRedirect("/userNotes.jsp");
return;

将您的业务逻辑保留在Java类/EJB中,并且仅在技术上对视图层使用JSP,您可以做到这一点,我们甚至可以用上面的代码解决这个问题。然而,原则上,从JSP访问DB对我来说是不对的。数据库操作不应该在网页上实现,因为它们属于服务器端。将您的业务逻辑保留在Java类/EJB中,并且仅在视图层上使用JSP。技术上,您可以这样做,我们甚至可以用上述代码解决问题。然而,原则上,从JSP访问DB对我来说是不对的。数据库操作不应在网页上实现,因为它们属于服务器端。