jsp

Mattepuffo's logo
Gestire le sessioni con le Servlet

Gestire le sessioni con le Servlet

Gestire le sessioni con le Servlet è abbastanza semplice.

Prendiamo uno scenario del genere:

-form di login

-se l'utente esiste viene creato un oggetto User

-l'oggetto viene passato alla Servlet che crea una sessione

Quindi partendo da un form del genere:

<table>
<form action="ServletLogin" method="post">
<tbody>
<tr>
<td>User:</td>
<td><input type="text" id="focus" name="username" value="" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="password" value="" /></td>
</tr>
<tr>
<td><input type="submit" value="Submit" name="submit" /></td>
</tr>
</form>
</table>

Questo form richiama la ServletLogin in POST:

public class ServletLogin extends HttpServlet {

private DBManager db = DBManager.getInstance(); // CLASSE PER LA CONNESSIONE

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
boolean success = false;
HttpSession session = request.getSession(true);
if (session.getAttribute("user") == null) {
try {
User user = db.login(request.getParameter("username").trim(), request.getParameter("password").trim());
String userCreato = user.getName().toString();
int userCreatoId = user.getId();
session.setAttribute("user_id", userCreatoId);
session.setAttribute("user_name", userCreato);
success = true;
if (success) {
response.sendRedirect("index.jsp");
} else {
response.sendRedirect("error.jsp?err=Atenticazione fallita");
}
} catch (ClassNotFoundException ex) {
response.sendRedirect("error.jsp?err=" + ex.getMessage());
} catch (SQLException ex) {
response.sendRedirect("error.jsp?err=" + ex.getMessage());
} catch (NoSuchAlgorithmException ex) {
response.sendRedirect("error.jsp?err=" + ex.getMessage());
}
}
}

}

Istanzia un oggetto HttpSession con il quale prendiamo la sessione corrente.

Mattepuffo's logo
Da esadecimale a String in Java

Da esadecimale a String in Java

Dopo un week-end di pausa riprendiamo con un argomento molto in voga: la conversione da valori esadecimali a String.

Nel mio caso mi è servito per il login in una wb application in JSP e Servlet.

Nel db sia utente e password sono cripati in SHA1.

Partiamo da questo metodo:

public User login(String name, String pwd) throws ClassNotFoundException, SQLException, NoSuchAlgorithmException, UnsupportedEncodingException {
  User user = new User();
  conn = DBManager.getInstance().takeConnection();
  MessageDigest md = MessageDigest.getInstance("SHA1");
  byte[] encodeName = md.digest(name.getBytes("UTF-8"));
  byte[] encodePwd = md.digest(pwd.getBytes("UTF-8"));
  String convName = ConvertHexToString.convert(encodeName);
  String convPwd = ConvertHexToString.convert(encodePwd);
  PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM user WHERE user_name = ? AND user_pass = ?");
  pstmt.setString(1, convName);
  pstmt.setString(2, convPwd);
  ResultSet rs = pstmt.executeQuery();
  if (rs.next()) {
   user.setId(rs.getInt("user_id"));
   user.setName(name);
   user.setPwd(pwd);
   rs.close();
   pstmt.close();
  } else {
   user.setId(0);
   user.setName("");
   user.setPwd("");
   rs.close();
   pstmt.close();
  }
  return user;
}

Al metodo passo due String.

Mattepuffo's logo
Creare grafici in JSP e Servlet

Creare grafici in JSP e Servlet

Ho già parlato di come creare grafici in Java usando la libreria JFreeChart.

In quel caso il grafico si visualizzava in un JPanel.

Invece adesso vediamo come usare la stessa libreria per creare grafici all'interno di una JSP e usando le Servlet.

Scaricate la libreria da qua; ricordatevi che dovete scaricare anche JCommon (dovrebbe stare all'interno dello stesso file zip).

Aggiungete entrambe le librerie al progetto.

Il grafico lo creeremo prendendo i dati da db.

Quindi abbiamo bisogno di una connessione.

Poi servono una Servlet e una JSP.

Salto la parte della connessione perchè ne ho parlato varie volte.

Create una Servlet e aggiungetela al file web.xml:

<servlet>
  <servlet-name>ServletGraph</servlet-name>
  <servlet-class>com_mattepuffo_book.ServletGraph</servlet-class>
</servlet>

<servlet-mapping>
   <servlet-name>ServletGraph</servlet-name>
   <url-pattern>/ServletGraph</url-pattern>
</servlet-mapping>

Mattepuffo's logo
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.

Mattepuffo's logo
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.

Mattepuffo's logo
Insert MySql con JSP e Servlet

Insert MySql con JSP e Servlet

Dopo aver visto come eseguire una semplice select sun db MySql con JSP e le Servlet, vediamo com'è possibile fare un inserimento.

Vi consiglio di dare prima una letta a questi due articoli che spiegano la classe per la connessione e come eseguire una select con JSP/Servlet:

Detto ciò andremo ad utilizzare un semplice form e una Servlet per eseguire la query di inserimento usando un PreparedStatement (che è la prima volta che uso).

Qui trovate un buon articolo.

In generale i PreparedStatement son delle query pre-compilate.

Alla pagina index.jsp aggiungiamo un semplice form:

<form action="DoInsert" method="post">
	<input type="text" name="txtEntrate" value=""/><br/>
	<input type="text" name="txtUscite" value=""/><br/>
	<input type="text" name="txtCausale" value=""/><br/>
	<input type="submit" name="Submit" value="Submit" />
</form>

Come action ci mettiamo la Servlet che andremo a creare.

Ricordatevi che la Servlet va aggiunta al web.xml dopo essere stata creata.