Home / Programmazione / Java / Modifica record MySql con JSP e Servlet
Mattepuffo

Modifica record MySql con JSP e Servlet

Modifica record MySql con JSP e Servlet

Concludiamo questa spece di tutorial su MySql e JSP/Servlet con la modifica dei dati.

Vi consiglio di leggere prima gli altri tre articoli:

Prima di tutto vediamo come modificare la nostra 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>
<td>
<a href="modifica.jsp?id=${lists.id}&entrate=${lists.entrate}&uscite=${lists.uscite}&causale=${lists.causale}">Modifica</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>
<form method="post" action="DoDelete" name="form_cancella">
<input type="hidden" name="delete" value="" id="id_hidden"/>
</form>
</body>
</html>

In pratica abbiamo aggiunto un'altra colonna alla tabella con un link che rimanda a un'altra pagina e al quale passiamo i valori del record selezionato.

 

Creiamo modifica.jsp e mettiamoci dentro questa robbetta:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Modifiche</title>
</head>
<body>
<form name="formUpdate" action="DoUpdate" method="post">
<input type="text" name="txtId" readonly="readonly" value="<%=request.getParameter("id")%>" /><br/>
<input type="text" name="txtEntrate" value="<%=request.getParameter("entrate")%>" /><br/>
<input type="text" name="txtUscite" value="<%=request.getParameter("uscite")%>" /><br/>
<input type="text" name="txtCausale" value="<%=request.getParameter("causale")%>"/><br/>
<input type="submit" name="Submit" value="Submit" />
</form>
</body>
</html>

In pratica non facciamo altro che valorizzare i campi del form con i valori passati in GET da index.jsp.

I valori li recuperiamo con request.getParameter.

A questo punto vediamo la Servlet DoUpdate che viene richiamata dal form:

package operazioni_database;

import java.io.IOException;
import java.sql.*;
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 DoUpdate 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 {
int id = Integer.parseInt(request.getParameter("txtId").trim());
String entrate = request.getParameter("txtEntrate").trim();
String uscite = request.getParameter("txtUscite").trim();
String causale = request.getParameter("txtCausale").trim();
String sql = "UPDATE movimenti SET entrate=?, uscite=?, causale=? WHERE id=" + id;
boolean proceed = false;
Connection conn = null;
PreparedStatement ps = null;
try {
if (entrate != null && uscite != null && causale != null) {
if (entrate.length() > 0 && uscite.length() > 0 && causale.length() > 0) {
proceed = true;
conn = Connessione.getConnection();
ps = conn.prepareStatement(sql);
if (proceed) {
ps.setString(1, entrate);
ps.setString(2, uscite);
ps.setString(3, causale);
ps.executeUpdate();
}
RequestDispatcher 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();
}
}
}
}

Come al solitoo doGet richiama semplicente doPost, dove viene eseguito il tutto.

Niene di particolarmente nuovo.

Richiama il solito metodo per la connessione e usiamo un PreparedStatement per la query.

Una volta eseguita veniamo reindirizzati su DoSelect che a sua volta ci mostra i dati su index.jsp.

 

NOTE FINALI

Come ho detto più volte tutto il codice di questi 4 articoli funziona ma è di sicuro mogliorabile.

Consideratelo un punto di partenza per capire come funzionano le Servlet e come interagiscono con le pagine JSP.

Da adesso penso che lascerà il puro JSP per passare a un framework, che agevola di molto lo sviluppo.

Su quale framework mi butterò no lo so, ma penso su Java Server Faces.

Prima però cercate di capire un minimo come funziona il meccanismo.