1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet Controllo dell utente connesso al sito tramite JSP, Java Beans e Servlet. Ciò che ci proponiamo di fare è l accesso ad un sito web con autenticazione. La nostra applicazione web comprende 2 pagine jsp index.jsp (pagina iniziale) e home.jsp pagina di inizio attività una volta loggati, una servlet per il controllo dei dati di login e una bean per la gestione dei dati utente. index.jsp (pagina con form per dati di login utente) <%@ page language="java" contenttype="text/html; charset=iso-8859-1" pageencoding="iso-8859-1"%> <!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=iso-8859-1"> <title>login Applicazione</title> Inseriamo eventuali riferimenti a file javascript e css </head> <body> <p>user's Login</p> Richiamo alla servlet (Login.java) che si occupa del controllo sui dati per la login.
2 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet o anche: <form method="get" action="<%request.getcontextpath();%>login"> <form method="post" action="login" name= myform > <table> <tr> <td>user id</td> <td><input type="text" name="userid" value=""></td> </tr> <tr> <td>password</td> <td><input type="password" name="pwd" value=""></td> </tr> <tr> <td colspan="2" align="right"><input type="submit" value="entra"> <input type="reset" value="cancella"></td> </tr> </table> </form> Eventuale gestione dell errore in caso di ritorno dalla servlet con errore. In questo caso l errore viene settato come attributo della sessione dalla servlet. <% String error = (String) session.getattribute("error"); if (error!= null) { %> Errore: <%= error %> <% %> <% session.removeattribute("error"); </body> </html> Servlet Login.java Classe per la gestione della connessione al db import it.miopacchetto.db.connection.dbconnection; Java Bean per I dati dell utente connesso import it.miopacchetto.bean.utenteconnesso; /** * Servlet implementation class Login */ public class Login extends HttpServlet { private static final long serialversionuid = 1L; /** * @see HttpServlet#HttpServlet() */ public Login() { super(); /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response)
3 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet */ protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { execute(request,response); protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { execute(request,response); protected void execute(httpservletrequest request, HttpServletResponse response) { String userid = null; String pwd = null; Legge I dati inseriti dall utente nella request userid = request.getparameter("userid"); pwd = request.getparameter("pwd"); Gestione dell errore in caso di userid o password inseriti nulli. L utente viene rediretto verso il form iniziale su index.jsp. L errore viene settato come attributo della sessione in modo da poterlo leggere in index.jsp. if(userid == null userid.equalsignorecase("null") userid.equalsignorecase("")) { request.getsession().setattribute("error", "user id obbligatorio"); response.sendredirect("index.jsp"); return; if(pwd == null pwd.equalsignorecase("null") pwd.equalsignorecase("")) { request.getsession().setattribute("error", "password obbligatoria"); response.sendredirect("index.jsp"); return; Ottenniamo la connessione al db, in questo punto o in maniera più corretta utilizzando una servlet che parta al caricamento dell apllicazione e istanzi un oggetto che gestisce la connessione (da java.mysql.*). Supponiamo di avere l oggetto connessione istanziato da un altra servlet e settato come attributo di contesto. All interno di tale servlet dovremmo avere un codice simile: public void init() { //ottiene la connessione al DB per tutta l'applicazione // e la setta come attributo del contesto DBConnection conn = new DBConnection(); conn.connect(); this.getservletcontext().setattribute("oconn", conn); Connect() metodo della classe custom DBConnection conterrà il codice per effettuare la connessione al db String url = "jdbc:mysql://256.256.256.256/nomedb?autoreconnect=true"; String username = ""; String password = ""; String drivername = "com.mysql.jdbc.driver"; Class.forName(driverName);
4 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet connection = DriverManager.getConnection(url, username, password); Torniamo alla servlet Login a questo punto otteniamo la connessione DBConnection odbconnection = DBConnection)getServletContext().getAttribute("oConn"); Connection connessione = odbconnection.getconnection(); try { Selezioniamo i dati utente dalla apposite tabella DB Statement stmt = connessione.createstatement(); ResultSet rs = stmt.executequery("select * FROM TABELLA_LOGIN WHERE COD_USER = '"+userid+"' AND PWD = '"+pwd+"'"); Utilizziamo il bean UtenteConnesso per memorizzare i dati dell utente. if(rs.next()) { UtenteConnesso ousercon = new UtenteConnesso(); ousercon.setnome(rs.getstring("nome")); ousercon.setcognome(rs.getstring("cognome")); //utente settato come attributo della sessione request.getsession().setattribute("utenteconnesso", ousercon); //setto il BEAN come attributo request.getsession().setattribute("ousercon", ousercon); login ok quindi redirect automativo verso la home.jsp response.sendredirect("home.jsp"); oppure getrequestdispatcher invece della sendredirect request.setattribute("ousercon", ousercon); try{ request.getrequestdispatcher("/home.jsp").include(request,response); catch(servletexception e) { else { login fallita redirect a index.jsp request.getsession().setattribute("error", "login error"); response.sendredirect("index.jsp"); catch (SQLException e) { out.println("errore in lettura dati"); Home.jsp leggiamo I dati relativi all utente connesso dal bean <%@ page language="java" contenttype="text/html; charset=iso-8859-1" pageencoding="iso-8859-1"%> <jsp:usebean id="ousercon" class="it.miopacchetto.bean.utenteconnesso" scope="session" /> <!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=iso-8859-1"> <title>home</title>
5 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet </head> <body> <br> Utente connesso:<br> <jsp:getproperty name="ousercon" property="nome" /> <jsp:getproperty name="ousercon" property="cognome" /> Java Bean UtenteConnesso, gestisce le info attraverso i metodi set e get package it.miopacchetto.bean; import java.io.serializable; public class UtenteConnesso implements Serializable{ private String nome; private String cognome; private String coduser; public UtenteConnesso() { super(); public UtenteConnesso(String nome, String cognome) { super(); this.nome = nome; this.cognome = cognome; public String getnome() { return nome; public void setnome(string nome) { this.nome = nome; public String getcognome() { return cognome; public void setcognome(string cognome) { this.cognome = cognome; All interno del file web.xml <?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="webapp_id" version="2.5"> <display-name>webimpiegati</display-name> <welcome-file-list> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet>
6 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet <description>user Login</description> <display-name>login</display-name> <servlet-name>login</servlet-name> <servlet-class>it.miopacchetto.web.servlet.login</servlet-class> </servlet> <servlet-mapping> <servlet-name>login</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <servlet> Inizializzatore è la servlet che ottiene la connessione al db <servlet> <description></description> <display-name>inizializzatore</display-name> <servlet-name>inizializzatore</servlet-name> <servletclass>it.energent.corsojava.impiegati.web.servlet.inizializzatore</servletclass> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>inizializzatore</servlet-name> <url-pattern>/inizializzatore</url-pattern> </servlet-mapping> </web-app> Organizzazione vista dal project explorer di Eclipse
7 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet Nota finale - strumenti utilizzati: Web Server: Apache Tomcat 6 Editor: Eclispe Ganimede Version: 3.4.1 desvin at VIDESOFTWARE HOUSE... since 1989