1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet



Похожие документы
Laboratorio di sistemi Prima Web Application JSP [Java]

Le JavaServer Pages - Lezione 7 I JavaBean

Tomcat & Servlet. Contenuti. Programmazione in Ambienti Distribuiti. Tomcat Applicazioni Web. Servlet JSP Uso delle sessioni

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

Laboratorio di Sistemi Autenticazione utente mediante MySQL Jsp [Java]

Programmazione server-side: Java Servlet

Introduzione alla programmazione Http lato server in Java

Accesso Web a Data Base

Osservazioni. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2005/06-1

Gestire le sessioni con le Servlet

Trasformare una Java (Console) Application in una Web Application (con utilizzo di un database MySQL)

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java]

Note pratiche sullo sviluppo di servlet (I)

Caricamento della classe driver. Apertura della connessione. DriverManager.getConnection() Creazione di uno statement

Laboratorio di sistemi SELECT e checkbox Jsp [Java]

Laboratorio di sistemi MVC versione 2 Jsp (NetBeans)

Tener traccia del client

1 JSPDynPage, componenti portale e Java Server Pages

Laboratorio di reti II: Java Server Pages

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Architettura MVC-2: i JavaBeans

Applicazioni web. Sommario. Parte 6 Servlet Java. Applicazioni web - Servlet. Alberto Ferrari 1. Servlet Introduzione alle API ed esempi

Tito Flagella - Introduzione alla programmazione di Servlet

Laboratorio di Sistemi Autenticazione utente mediante MySQL Jsp [Java]

Laboratorio di Basi di dati

Laboratorio di Basi di Dati e Multimedia

Laboratorio di Basi di Dati e Web

1 Applicazione J2EE sul SAP WAS con SAP NWDS

Laboratorio di sistemi Web Application in Php5 Php

Laboratorio di Sistemi Prototipo applicazione Biblioteca Jsp [Java]

Laboratorio di Sistemi Prototipo autenticazione utente Jsp [Java]

Laboratorio di Basi di Dati

Servlet e JDBC. Servlet e Web Server. Servlet e Web Server. Servlet e Web Server. Richieste. Servlet. Servlet:

PRACTICAL DEVELOPMENT OF A WEB SERVICE

Un contatore di accessi

Servlet API. Programmazione in Ambienti Distribuiti A.A

Tomcat. Laboratorio di Tecnologie Lato Server - V.Della Mea e I.Scagnetto, a.a. 2006/07-1

Il Web-Service SDMX dell ISTAT

Sicurezza Informatica: Tecniche di SQL INJECTION

Architetture Web: un ripasso

Introduzione JDBC interfaccia java.sql driver caricare i driver

Tecnologie di Sviluppo per il Web

PHP e MySQL. Scripting server-side per accesso a DB MySQL

RELAZIONE SCRITTA RELATIVA AL PROGRAMMA DI GESTIONE SITO E-COMMERCE

Chat. Si ha un server in ascolto sulla porta Quando un client richiede la connessione, il server risponde con: Connessione accettata.

Laboratorio di reti II: Servlet

Tutorial web Application

Svantaggi delle servlet

Corso di Informatica Modulo T3 B2 - Database in rete

<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>jsp Page</title> </head> <body>

Programmazione Java Avanzata. MVC Model, View,, Controller. Ing. Gianluca Caminiti

Visualizzazione ordini in MyShopDB

Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti

Esercitazione su JDBC

Spring WS Sviluppare WebService in Java

SERVLET & JSP DISPENSE

Verso l architettura MVC-2 Java Server Pages (JSP)

SAPIENZA Università di Roma, Facoltà di Ingegneria

Architettura MVC-2 A L B E R T O B E L U S S I A N N O A C C A D E M I C O /

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

Cookie e Webstorage. Vediamo ora i metodi dell oggetto localstorage. Per memorizzare un valore si utilizza il metodo setitem:

PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN


Laboratorio di Sistemi CRUD con MySQL JSP (Java)

Laboratorio di Sistemi Programmare in Php con NetBeans Php. Programmare in Php con Xampp e NetBeans IDE

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

1 EJB e Portal Component Object

Esercizi della lezione 5 di Java

Database & WWW. Basi di dati Architetture e linee di evoluzione P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone

Tecnologia e Applicazioni Internet 2011/12

Università di Bergamo Facoltà di Ingegneria. Applicazioni Internet B. Paolo Salvaneschi B6_1 V1.7. JSP parte A

Java e Serializzazione dalla A all'xml di Leonardo Puleggi

L architettura MVC (Model- View-Controller) Introduzione

Laboratorio di Tecnologie Web Laurea in Scienze e Tecnologie Multimediali

Modulo 4: Ereditarietà, interfacce e clonazione

Транскрипт:

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