Home / Programmazione / Java / Delete MySql con JSP e Servlet
Mattepuffo

Delete MySql con JSP e Servlet

Delete MySql con JSP e Servlet

Dopo aver visto come interrogare un db MySql e come aggiungere dati, proseguiamo con l'operazione di cancellazione.

Vi consiglio di leggere prima i due articoli ai link segnalati sopra.

Questa è la nostra pagina index.jsp:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Banca JSP</title>
</head>
<body>
<table>
<thead>
<th>
ID
</th>
<th>
ENTRATE
</th>
<th>
USICTE
</th>
<th>
CAUSALE
</th>
<th>
DATA
</th>
</thead>
<c:forEach items="${requestScope.list}" var="lists">
<tr>
<td>
<c:out value="${lists.id}"/>
</td>
<td>
<c:out value="${lists.entrate}"/>
</td>
<td>
<c:out value="${lists.uscite}"/>
</td>
<td>
<c:out value="${lists.causale}"/>
</td>
<td>
<c:out value="${lists.data}"/>
</td>

<td>
<a href="DoDelete?delete=${lists.id}">Elimina</a>
</td>
</tr>
</c:forEach>
</table>
<br/>
<br/>
<form action="DoInsert" method="post">
<input type="text" name="txtEntrate" value="100"/><br/>
<input type="text" name="txtUscite" value="0"/><br/>
<input type="text" name="txtCausale" value="jsp 1"/><br/>
<input type="submit" name="Submit" value="Submit" />
</form>
</body>
</html>

Come vedete ho aggiunto una cella con un link che richiama la Servlet DoDelete passandogli in GET il valori dell'id selezionato tramite lists.id.

 

Niente di particolare quindi.

Vediamo invece la servlet in questione:

package operazioni_database;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class DoDelete extends HttpServlet {

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
RequestDispatcher disp = null;
Connection conn = null;
PreparedStatement ps = null;
String sql = "DELETE FROM movimenti WHERE id=?";
int id = Integer.parseInt(request.getParameter("delete"));
try {
else {
conn = Connessione.getConnection();
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ps.executeUpdate();
disp = request.getRequestDispatcher("/DoSelect");
disp.forward(request, response);
} catch (ClassNotFoundException ex) {
ex.getMessage();
} catch (SQLException ex) {
ex.getMessage();
} finally {
try {
ps.close();
} catch (SQLException ex) {
ex.getMessage();
}
}
}
}

Per la connessione usiamo il solito metodo che potete leggere nei precedenti articoli.

Poi, come anche per l'insert, usiamo un PreparedStatement.

Con int id recuperiamo l'id passato tramite GET.

Come getParameter gli diamo delete che corrisponde al delete nel link per l'eliminazione:

<a href="DoDelete?delete=${lists.id}">Elimina</a>

In questo caso ho usato int invece di String facendone il Parse.

Ma se volete potete usare uno String.

A ps gli passiamo la stringa sql che corrisponde alla query da eseguire.

Gli diciamo di eseguirla e facciamo il forward su DoSelect per rieseguire la Select; che a sua volta farà il forward su index.jsp.