【问题标题】:How can I insert and delete value in a database in derby in JSP? [3]如何在 JSP 中的 derby 数据库中插入和删除值? [3]
【发布时间】:2017-10-25 02:43:51
【问题描述】:

历史: History I. History II.

所以问题仍然存在。如果我选择某人并按下删除按钮,则不要从数据库中删除,否则会创建一个新的空记录。

client.java:

public class client implements DatabaseConnection{

private static Connection conn = null;

private static void createConnection(){
try {
  conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (SQLException ex) {
  Logger.getLogger(client.class.getName()).log(Level.SEVERE, null, ex);
}
}

private static void closeConnection(){
if (conn != null){
  try {
    conn.close();
  } catch (SQLException ex) {
    Logger.getLogger(client.class.getName()).log(Level.SEVERE, null, ex);
  }
}
}

public List clientList(){
    createConnection();
    List list=new ArrayList();
    try {
        Statement stmt=conn.createStatement();
        ResultSet rs=stmt.executeQuery("SELECT * FROM customer");
        while(rs.next()){
            **list.add(rs.getString("ID"));**
            list.add(rs.getString("CNAME"));
            list.add(rs.getString("ADDRESS"));
            list.add(rs.getString("PHONENUMBER"));
        }
        stmt.close();
    } catch (Exception e) {
        e.printStackTrace(System.err);
    }
    return list;
}

public void newClient(String name, String address, String phoneNumber) 
throws SQLException{
    PreparedStatement ps = null;
    try {
        createConnection();
        String insert="INSERT INTO CUSTOMER(CNAME,ADDRESS, PHONENUMBER) 
VALUES(?,?,?)";
        ps=conn.prepareStatement(insert);
        ps.setString(1, name);
        ps.setString(2, address);
        ps.setString(3, phoneNumber);
        ps.executeUpdate();
        ps.close();
    } catch (Exception e) {
        e.printStackTrace(System.err);
    }
    finally {
        ps.close();
        closeConnection();
    }
}
public void deleteClient(String ID){
    try {
        createConnection();
        String delete="DELETE FROM CUSTOMER WHERE ID=?";
        PreparedStatement ps=conn.prepareStatement(delete);
        ps.setString(1, ID);
        ps.executeUpdate();
    } catch (Exception e) {
        e.printStackTrace(System.err);
    }
    **finally {
    closeConnection();
}**
}

}

index.jsp:

<jsp:useBean id="client" class="database.client" scope="page" />
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body bgcolor="lightgrey">
    <%
        String ID=request.getParameter("ID");
        String NAME=request.getParameter("CNAME");
        String ADDRESS=request.getParameter("ADDRESS");
        String PHONENUMBER=request.getParameter("PHONENUMBER");
    %>
    <form method="post" action="">
    <table border="0" align="left">
        <th colspan="2" align="center" style="color: brown">Field</th>
        <tr>
            <td>Name:</td>
            <td><input type="text" name="CNAME" style="background-
color:beige"/></td>
        </tr>
        <tr>
            <td>Address?</td>
            <td><input type="text" name="ADDRESS" style="background-
color:beige"/></td>
        </tr>
        <tr>
            <td>PhoneNumber:</td>
            <td><input type="text" name="PHONENUMBER" style="background-
color:beige"/></td>
        </tr>
            <input type="submit" name="OK" onclick="
                <%
               if(NAME!=null && ADDRESS!=null && PHONENUMBER!=null){
                    client.newClient(NAME, ADDRESS, PHONENUMBER);
                }
                %>" value="OK"/>
            <input type="submit" name="Cancel" onclick="
               <%
               //nothing
               %>" value="Cancel"/>
            <input type="submit" name="Delete" onclick="
<%client.deleteClient(ID);%>" value="Delete"/>
    </table>
    <table border="2">
        <th colspan="4" align="center" bgcolor="orange">Clients</th>
        <tr bgcolor="silver" align="center">
            <td>&nbsp;</td>
            **<td>ID</td>**
            <td>Name</td>
            <td>Address</td>
            <td>PhoneNumber</td>
        </tr>
        <%
            List list=client.clientList();
            Iterator it=list.iterator();

            while(it.hasNext()){
                out.print("<tr bgcolor='lightgreen'>");
                out.print("<td>");
                **ID**=(String)it.next();
                out.print("<input type='radio' name='ID' value="+**ID**+"/>");
                out.print("</td>");
                out.print("<td>");
                out.print(**ID**);
                out.print("</td>");
                for (int i = 0; i < **3**; i++) {
                    out.print("<td>");
                    out.print(it.next());
                    out.print("</td>");
                }
            out.print("</tr>");

            }
        %>
    </table>
</form>  
</body>
</html>

【问题讨论】:

  • 您的 Java 代码还可以,但另一方面,您的 jsp 代码看起来像 uuugh...您可以使用 ajax 之类的东西来执行这些操作...。我希望这是学生应用程序而不是生产就绪应用程序...我可以帮助您,现在我需要您在 Delete 按钮上 right click 并选择 Inspect element,然后在 Dom Explorer 中复制突出显示的 html 并添加它对你的问题...

标签: java mysql jsp


【解决方案1】:

只需创建一个新的 Servlet(删除 Servlet)并在 url 中传递 ID 并在新的 jsp 页面中处理它......您可以像这样更改代码:

索引 JSP:

<a href="DeleteServlet?id=<%=Integer.toString(person.getID())%>">Delete</a>

删除 Servlet:已更新

@WebServlet(name = "DeleteServlet", urlPatterns = {"/DeleteServlet"})
public class DeleteServlet extends HttpServlet {

/**
     * 
     */
    private static final long serialVersionUID = 1L;
private static final Logger LOGGER = Logger.getLogger(CurdOperationsImpl.class.getName());

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String ID = request.getParameter("id");


            int id = Integer.parseInt(PersonId);

            deleteClient(id); // add your own code

            out.println("<h2 style='color: green'>Person Deleted Sucessfully.</h2>");
            response.sendRedirect("index.jsp");
        }else {

        }
    }

奖励:得到这个我丑陋的 Servlet-JSP-Mysql 项目已准备好使用Github link 希望对您有所帮助。

【讨论】:

  • 您好如何创建 DeleteServlet?在网页中 -> index.jsp?
  • 在 index.JSP 中创建单独的 servlet 类。
  • 在源包文件夹中?新 -> Java 包:servlet? AND 在 servlet 包中:new -> Servlet?
  • 是的,请查看答案末尾的链接。 (Github 链接)
  • 对不起,我对 servlet 来说太新了。我复制了你写的内容,它找不到:- CurdOperationsImpl,- PersonId,以及 }else { } 的问题
猜你喜欢
  • 1970-01-01
  • 2017-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-09
  • 2020-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多