2017-05-24 6 views
1

歴: History I. History II.JSPでダービーのデータベースに値を挿入したり削除したりするにはどうしたらいいですか? [3]

だから問題はまだここにいます。誰かを選択して削除ボタンを押すと、データベースから削除しないで、新しい空のレコードが作成されます。

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> 
+0

あなたのJavaコードは大丈夫ですが、反対側では、あなたのJSPコードはuuugh ...のように見えます。あなたは 'ajax'のようなものを使ってこれらの操作を行うことができます....これは学生用アプリではなく、プロダクションの準備ができているアプリケーション...私はあなたの 'Delete'ボタンを右クリックして' Inspect element'を選択し、 'Dom Explorer'でハイライト表示されたHTMLをコピーして、質問... – Hackerman

答えて

1

ただ、新しいサーブレットを作成します(サーブレットを削除)し、URLにIDを渡し、新しいJSPページでそれを処理

インデックスJSP:...あなたはlikethisコードを変更することができます

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

削除サーブレット:更新

@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 { 

     } 
    } 

ボーナス:この私の醜いサーブレット・JSP-MySQLのプロジェクトは、私は、このヘルプにあなたを願っていますGithub link を使用する準備ができています。

+0

こんにちは どのようにしてDeleteServletを作成できますか? Webページ - > index.jsp? – Lobi

+0

index.JSPにない別のサーブレットクラスを作成します。 –

+0

ソースパッケージフォルダにありますか?新規→Javaパッケージ:サーブレット?サーブレットパッケージでは:new - > Servlet? – Lobi

関連する問題