Laboratorio di sistemi Autenticazione utente mediante scriplet Jsp [NetBeans] Figura 1 - La pagina input_user.jsp appena caricata Figura 2 - Lascio vuoti entrambi i campi o immetto un solo valore Figura 3 - Immetto dei valori che non esistono nel database autent_utente_scriplet.pdf Pag. 1/8 Cozzetto © Laboratorio di sistemi Autenticazione utente mediante scriplet Jsp [NetBeans] Figura 4 – Viene segnalato l’errore e riproposto il form di login Figura 5 - Immetto le credenziali giuste Figura 6 - I dati contenuti nella tabella users_tbl del database film_db di esempio (per comodità le password sono in chiaro) autent_utente_scriplet.pdf Pag. 2/8 Cozzetto © Laboratorio di sistemi Autenticazione utente mediante scriplet Jsp [NetBeans] Figura 7 – Ora ho finalmente accesso alla pagina protetta Figura 8 - Effettuo il logout (viene attivata una nuova sessione utente) autent_utente_scriplet.pdf Pag. 3/8 Cozzetto © Laboratorio di sistemi Autenticazione utente mediante scriplet Jsp [NetBeans] input_user.jsp <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Introduci username e password</title> <style type="text/css"> <!-body,td,th { font-family: Trebuchet MS; font-size: 10pt; } .red { color:red; } --> </style> </head> <body> <h2>Login utente</h2> <% out.println("Session ID: "+session.getId()+"<br/>"); String isUserLoggedIn="false"; isUserLoggedIn = (String) session.getAttribute("isUserLoggedIn"); // Se l'utente è si è già loggato, lo ridirico alla pagina protetta if (isUserLoggedIn!=null && isUserLoggedIn.equals("true")) { response.sendRedirect("pag_protetta.jsp"); return; } %> <form name="frm_verifica_utente" action="verifica_utente.jsp" method="POST"> Username: <input type="text" name="username" value="" /><br/> Password: <input type="password" name="password" value="" /><br/> <input type="submit" value="Submit" name="btn_submit" /> </form> <% if (request.getParameter("message")!=null) { String message=request.getParameter("message"); out.println("<span class='red'>"+message+"</span>"); } %> </body> </html> autent_utente_scriplet.pdf Pag. 4/8 Cozzetto © Laboratorio di sistemi Autenticazione utente mediante scriplet Jsp [NetBeans] pag_protetta.jsp <%@page contentType="text/html"%> <%@page 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>Pagina protetta</title> <style type="text/css"> <!-body,td,th { font-family: Trebuchet MS; font-size: 10pt; } --> </style> </head> <body> <h2>Pagina protetta</h2> <% out.println("Session ID: "+session.getId()+"<br/>"); String isUserLoggedIn="false"; isUserLoggedIn = (String) session.getAttribute("isUserLoggedIn"); if (isUserLoggedIn!=null && isUserLoggedIn.equals("true")) { String anagrafica = (String) session.getAttribute("anagrafica"); out.println("Utente: "+anagrafica+"<br/>"); out.println("Qui vanno i contenuti protetti.<br/><br/>"); out.println("<img src='img/nikki_1.jpg' alt='nikki'/><br/>"); out.println("<br/><a href='logout.jsp'>Logout</a>"); } else { response.sendRedirect("input_user.jsp?message=Utente non verificato. Area protetta. E' necessario il login utente."); } %> </body> </html> autent_utente_scriplet.pdf Pag. 5/8 Cozzetto © Laboratorio di sistemi Autenticazione utente mediante scriplet Jsp [NetBeans] logout.jsp <%@page contentType="text/html"%> <%@page 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>Logout Page</title> <style type="text/css"> <!-body,td,th { font-family: Trebuchet MS; font-size: 10pt; } --> </style> </head> <body> <h2>Logout Page</h2> <% String isUserLoggedIn="false"; isUserLoggedIn = (String) session.getAttribute("isUserLoggedIn"); if (isUserLoggedIn!=null && isUserLoggedIn.equals("true")) { String anagrafica = (String) session.getAttribute("anagrafica"); session.invalidate(); response.sendRedirect("input_user.jsp?message=Grazie "+anagrafica+" di aver usato l'applicativo. E' necessario un nuovo login."); } else { response.sendRedirect("input_user.jsp?message=Devi effettuare il login."); } %> </body> </html> autent_utente_scriplet.pdf Pag. 6/8 Cozzetto © Laboratorio di sistemi Autenticazione utente mediante scriplet Jsp [NetBeans] /* * Utente.java * * Created on 25 giugno 2006, 8.43 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package webapplicationtest; import java.sql.*; /** * * @author admin */ public class Utente implements java.io.Serializable { private String username; private String password; private String anagrafica; /** Creates a new instance of Utente */ public Utente() { } public void setUsername(String username) { this.username=username; } public void setPassword(String password) { this.password=password; } public String getUsername() { return username; } public String getPassword() { return password; } public String getAnagrafica() { return anagrafica; } public void setAnagrafica(String anagrafica) { this.anagrafica=anagrafica; } public boolean autentUser(String username, String password) throws ClassNotFoundException, SQLException, Exception { Connection conn = null; Statement st = null; ResultSet rs=null; autent_utente_scriplet.pdf Pag. 7/8 Cozzetto © Laboratorio di sistemi Autenticazione utente mediante scriplet Jsp [NetBeans] try { Class.forName("org.gjt.mm.mysql.Driver"); //Class.forName("com.mysql.jdbc.Driver").newInstance(); altro Driver conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/film_db?user=root&password=" ); } catch (ClassNotFoundException e1) { throw new ClassNotFoundException("Problemi nel caricamento dei driver."); } try { String sql="SELECT * FROM users_tbl WHERE username='"+username+"' AND password='"+password+"'"; st=conn.createStatement(); rs = st.executeQuery(sql); if (!rs.next()) { // record non trovato rs.close(); st.close(); conn.close(); return false; } else { // record individuato this.username=rs.getString("username"); this.password=rs.getString("password"); this.anagrafica=rs.getString("anagrafica"); rs.close(); st.close(); conn.close(); return true; } // end if } catch (SQLException e2) { throw new SQLException("Impossibile eseguire la query o chiudere la connessione."); } // fine try/catch } // fine metodo autentUser } // fine classe autent_utente_scriplet.pdf Pag. 8/8 Cozzetto ©