Una sessione può essere pensata come un oggetto associato a ciascun utente con un ID di sessione univoco e i dati dell’utente si basano sull’account registrato. Diverse forme di dati possono essere impostate in una sessione. Questi dati relativi a ciascun utente del sito, sono utili sia all’utente che al proprietario del sito web. HTTP è un protocollo stateless. Ogni volta che un utente visita una pagina Web, l’utente apre una connessione separata con il server Web e il server non tiene traccia delle precedenti richieste del client.
Esistono diversi approcci per mantenere una sessione tra client e server:
Un oggetto sessione è l’oggetto implicito più comunemente utilizzato implementato per memorizzare i dati dell’utente per renderli disponibili su altre pagine JSP fino a quando la sessione dell’utente non è attiva.
L’oggetto implicito della sessione è un’istanza di un’interfaccia javax.servlet.http.HttpSession .
Questo oggetto sessione ha diversi metodi di sessione per gestire i dati nell’ambito della sessione.
Vediamo qui di seguito un esempio di una richiesta JSP e di oggetti impliciti di sessione in cui un utente invia le informazioni di accesso e un’altra pagina JSP le riceve per l’elaborazione, iniziamo dalla pagina HTML che attiverà l’action sul server:
<!DOCTYPE html>
<html>
<head>
<title>User login form</title>
</head>
<body>
<form action="login.jsp">
Username: <input type="text" name="user_name" /> <br />
<input type="submit" value="Submit" />
</form>
</body>
</html>
Di seguito il file login.jsp che viene attivato dalla action dell’HTML, che prima di fare la redirect su home.jsp, imposta una variabile di sessione user:name
<%@ page import = " java.util.* " %>
<%
String username = request.getParameter("user_name");
if(username.equals("admin")){
// session variable user_name
session.setAttribute("user_name",username);
response.sendRedirect("home.jsp");
}else{
out.print("Invalid Username");
}
%>
Di seguito il file home.jsp, invocato dopo l’impostazione della variabile di sessione, il file legge il contenuto della variabile di sessione tramite il metodo “getAttribute”
<%
String session_user_name = (String)session.getAttribute("user_name");
out.print("Hi " + session_user_name);
%>
Vediamo ora come usare l’oggetto HttpSession per scoprire l’ora di creazione e l’ora dell’ultimo accesso per una sessione. Associamo una nuova sessione alla richiesta se non ne esiste già una.
<%@ page import = "java.io.*,java.util.*" %>
<%
// Get session creation time.
Date createTime = new Date(session.getCreationTime());
// Get last access time of this Webpage.
Date lastAccessTime = new Date(session.getLastAccessedTime());
String title = "Welcome Back to my website";
Integer visitCount = new Integer(0);
String visitCountKey = new String("visitCount");
String userIDKey = new String("userID");
String userID = new String("BlogInnovazione.it");
// Check if this is new comer on your Webpage.
if (session.isNew() ){
title = "Welcome to my website";
session.setAttribute(userIDKey, userID);
session.setAttribute(visitCountKey, visitCount);
}
visitCount = (Integer)session.getAttribute(visitCountKey);
visitCount = visitCount + 1;
userID = (String)session.getAttribute(userIDKey);
session.setAttribute(visitCountKey, visitCount);
%>
<html>
<head>
<title>Session Tracking</title>
</head>
<body>
<center>
<h1>Session Tracking</h1>
</center>
<table border = "1" align = "center">
<tr bgcolor = "#949494">
<th>Session info</th>
<th>Value</th>
</tr>
<tr>
<td>id</td>
<td><% out.print( session.getId()); %></td>
</tr>
<tr>
<td>Creation Time</td>
<td><% out.print(createTime); %></td>
</tr>
<tr>
<td>Time of Last Access</td>
<td><% out.print(lastAccessTime); %></td>
</tr>
<tr>
<td>User ID</td>
<td><% out.print(userID); %></td>
</tr>
<tr>
<td>Number of visits</td>
<td><% out.print(visitCount); %></td>
</tr>
</table>
</body>
</html>
Posizionando il codice jsp su server, ed eseguendo il jsp, avremo un risultato di questo tipo
Riattivando il codice jsp, noteremo che il numero di visite si incrementa, perchè viene riconosciuta la sessione.
Dopo aver aperto e gestito una sessione, possiamo eseguire diverse operazioni sulla sessione:
Ercole Palmeri
Nasce l’Osservatorio del Nordest sull’economia dell’Innovazione Nim, (Numbers Innovation Motion) è un progetto di Galileo Visionary District realizzato in collaborazione…
ASKtoAI lancia le innovative funzionalità Memory e Personality, strumenti d'avanguardia per la creazione di contenuti digitali che promettono di migliorare…
Discuss , la piattaforma leader appositamente creata per trasformare le esperienze in insight, ha potenziato le sue capacità di scalare la…
Con le festività che si avvicinano rapidamente, Blue Lake Packaging è entusiasta di offrire un'alternativa ecologica al nastro da imballaggio…
Netlogistik , leader in potenti servizi che guidano le aziende verso la trasformazione digitale della catena di fornitura, ha recentemente tenuto…
Annuncia una soluzione integrata che combina FPGA di Lattice a bassa potenza e bassa latenza con la piattaforma NVIDIA Orin…
Con un successo clamoroso, il Textile Export Promotion Project (TEPP), guidato dalla Taiwan Textile Federation nel 2023, ha messo in…
Lattice presenta i nuovi FPGA mid-range Lattice Avant-G e Lattice Avant-X, stack di soluzioni specifiche per le applicazioni ampliate e…
Innovazione per i professionisti della gestione della conoscenza e dell'innovazione (KM&I). Nel settore legale è ora disponibile un riferimento completo…
La Eclipse Foundation , una delle più grandi fondazioni di software open source al mondo, ha annunciato oggi la formazione dell'Eclipse…