Web Application
Una web application è un’applicazione alla quale si accede mediante un browser web.Generalmente le web application possono essere divise in due grandi categorie:
- orientate alla presentazione: generano diverse pagine web mediante l’utilizzo di linguaggi di markup i cui contenuti variano in funzione della richiesta dell’utente.
- orientate al servizio: costituiscono il punto di accesso di un servizio web.
In particolare le Servlet sono dei programmi Java in grado di processare dinamicamente delle richieste e costruire delle risposte mentre le JSP sono dei documenti di testo che vengono eseguiti come servlet permettendo un approccio più naturale alla costruzione di contenuti statici.
I web component sono in grado di accedere ai servizi offerti da un web container come lo smistamento delle richieste, la sicurezza, la concorrenza, la gestione della memoria.
Ad ogni web application è associato un file di configurazione in formato XML che prende il nome di Web Application Deployment Descriptor (DD) che rispetta un determinato schema.
La più piccola web application funzionante e quindi riusabile costituisce un modulo web e può contenere:
- classi di utilità lato server come JavaBeans
- classi lato client come Applet

Struttura di una web application
La directory root dell’applicazione contiene risorse statiche, la sottodirectory /WEB-INF/ invece contiene:
- il file web.xml che costituisce il Web Application Deployment Descriptor
- i tag library descriptor files
- la cartella classes che contiene classi di utilità lato-server
- la cartella tags che contiene tag files
- la cartella lib che contiene librerie di classi
Deployment Descriptor
Il Deployment Descriptor contiene tutte le informazioni e le impostazioni di configurazione relative alla web application alla quale fa riferimento: la sua presenza permette di rendere molto più leggero il processo di deployment (installazione) di nuove web application all’interno di un web container (si parla infatti di Pluggables Web Components).In particolare permette di poter specificare:
- le icone per la rappresentazione grafica dell’applicazione
- la descrizione dell’applicazione
- i parametri di inizializzazione
- i nomi delle servlet in esecuzione ed i relativi parametri di configurazione
- i filtri associati alle diverse servlet
- i listener di cui fa utilizzo la web application
- il timeout delle sessioni
- il mapping delle servlet con i relativi indirizzi
- il welcome file list ovvero la sequenza di file da utilizzare in risposta ad una richiesta client
- le regole per la gestione degli errori e della sicurezza
Tutte queste impostazioni di configurazione sono memorizzate sottoforma di un documento XML che fa utilizzo di determinati tag tutti contenuti all’interno del tag che rappresenta la radice del documento stesso.
Configurazione generale
Alcuni tag del Deployment Descriptor permettono di configurare quelle che sono le impostazioni generali della web application e quindi comuni a tutti i web component che la costituiscono: i tag utilizzabili dalle Java Server Pages, la durata delle sessioni, la gestione degli errori ...permette di definire opzionalmente due icone (una grande ed una piccola) che portebbero essere utilizzate da un tool grafico per visualizzare la web application stessa. /img/iconapiccola.gif /img/iconagrande.gif anch’esso opzionale rappresenta un nome che potrebbe essere utilizzato per identificare l’applicazione MiaApplicazione contiene una descrizione dell’applicazione Web application dimostrativa per ... permette di specificare se è possibile effettuar eil deployment dell’applicazione su un servlet container distribuito false permette di definire dei parametri di inizializzazione per la web-application (o meglio del ServletContext) ai quali è possibile accedere mediante i metodi getInitParameter()e getInitParameterNames() della classe ServletContext.
Per ogni parametro occorre specificare il nome, il valore ed una descrizione opzionale: naturalmente se si vogliono definire diversi parametri l’elemento dovrà essere ripetuto più volte.Colore Rosso parametro relativo al colore di sfondo permette di definire i parametri di sessione come la durata in minuti 5 permette di definire un’associazione fra un’estensione (ad esempio .txt) ed il corrispondente mime type (ad esempio text/plain): può essere presente più volte. html text/html contiene una lista ordinata di che definiscono l’ordine di risposta quando una richiesta http corrisponde ad una directory della web application (ad esempio prima index.html poi index.jsp) index.html index.jsp permette di definire un’associazione fra un codice di errore o un’eccezione ed un web components: definisce un codice di errore http valido definisce il tipo di eccezione (sono mutuamente esclusivi se voglio trattare un’eccezione ometterò l’error-code, se voglio trattare un errore http ometterò l’exception-type) e definisce l’indirizzo della risorsa da visualizzare in risposta all’errore o eccezione verificatasi. 404 /notfound.jsp java.lang.Throwable /error.jsp definisce una libreria di tag utilizzabili dalle Java Server Pages della web application: rappresenta la URI che identifica la tag library a partire dalla directory WEB-INF mentre identifica la posizione del description file della tag library definita. /tags/taglib /WEB-INF/lib/taglib.tld . permette di configurare una risorsa esterna in maniera tale da poterla utilizzare all’interno della web application: contiene una descrizione testuale della risorsa esterna identifica il nome della risorsa all’interno di JNDI identifica il tipo della risorsa ovvero il nome della classe Java che la rappresenta usato per controllare l’accesso alla risorsa specifica se le connessioni ottenute possono essere condivise (Shareable) o meno (Unshareable) jdbc/dbase javax.sql.DataSource container .
Configurazione delle Servlet
Per definire una servlet all’interno del Deployment Descriptor si utilizza l’elemento- un elemento
mediante il quale è possibile specificare una ed una mediante le quali la servlet potrebbe essere rappresentata all’interno di un tool grafico - un elemento
che identifica univocamente la servlet - un elemento
che rappresenta un nome utilizzabile da un tool grafico per identificare la servlet - un elemento
che contiene una descrizione della servlet - un elemento
che identifica la classe della servlet - un elemento
mutuamente esclusivo con l’elemento che identifica un file .jsp all’interno della web application. - uno o più parametri di inizializzazione della servlet definiti dal tag
e contenenti una descrizione opzionale un nome ed un valore - un elemento
che definisce un ordine di caricamento delle diverse servlet definite all’interno del deployment description
Una volta che la servlet è correttamente definita occorre effettuarne il mapping: occorre cioè associare la servlet ad un URL./img/iconapiccola.gif /img/iconagrande.gif Servlet di prova MiaServlet MiaServlet MiaServletClass numero rosso colore rosso 1
Il mapping avviene mediante l’elemento
ovvero il nome della servlet di cui si sta effettuando il mapping l’indirizzo al quale viene associata la servlet
MiaServlet /process/*
Filter e Listener
Per definire un filtro all’interno del Deployment Descriptor viene utilizzato l’elementoovvero icona piccola e grande utilizzabili per rappresentare il filtro stesso nome del filtro utilizzabile per la rappresentazione dello stesso all’interno di un tool grafico ovvero un nome che identifica univocamente il filtro all’interno della web application ovvero la classe java di appartenenza del filtro - uno o più parametri di inizializzazione definiti mediante l’elemento
e contenenti una descrizione opzionale un nome ed un valore
Dal momento che il filtro agisce sulle richieste (o risposte) di servlet ed in generale flussi http occorre effettuarne il mapping mediante l’elementoMioFiltro MioFiltroClass message Messaggio di prova
ovvero il nome del filtro di cui stiamo effettuando il mapping ovvero il nome della servlet sulla quale agisce il filtro mutuamente esclusivo con l’elemento identifica le richieste sulle quali applicare il filtraggio.
La definizione di listener (di Context, di sessione ...) infine avviene mediante l’elementoMioFiltro /filter.jsp
Dal momento che i listener agiscono sugli eventi della web application non è necessario effettuarne un mapping (un listener di sessione ad esempio agirà indistintamente su tutte le sessioni).MioContextListener
La sicurezza
Per evitare l’accesso autorizzato alle risorse di una web application è possibile definire dei vincoli mediante l’elementoTale elemento permette di impostare:
- una o più collezioni di risorse da proteggere
ciascuna delle quali è identificata da un nome una descrizione opzionale uno o più relativi alle risorse che fanno parte della collezione da proteggere ed uno o più che indicano quali metodi http sottoporre al vincolo di protezione. - un elemento
che identifica quali ruoli-utente hanno accesso alle risorse definite nel (è possibile altresì specificare una descrizione ). - un elemento
che definisce come il client dovrebbe comunicare con il server: permette di impostare una descrizione e la modalità di dialogo (NONE nessuna garanzia, INTEGRAL i dati trasmessi non devono subire modifiche, CONFIDENTIAL nessuno al di fuori dei dialoganti deve avere accesso ai dati trasmessi).
L’elementoArea Protetta /user.jsp admin utente
definisce le modalità di autenticazione (BASIC autenticazione utente tramite browser, FORM gli utenti utilizzano un form html, CLIENT-CERT si fa uso di certificati digitali). è un elemento opzionale utilizzato soltanto se si sceglie una modalità di autenticazione di tipo FORM e permette di specificare - la pagina di autenticazione
- la pagina di errore relativa ad un eventuale fallimento dell’autenticazione
- la pagina di autenticazione
L’elementoFORM /login.jsp /fail_login.html
admin utente
Getting Started with Web Applications
Tutorial sulle Web Application sul sito Sun.
Tutorial sulle Web Application sul sito Sun.
Designing Enterprise Applications with the J2EE Platform
Progettazione di Web Application in Java 2 Enterprise Edition
Progettazione di Web Application in Java 2 Enterprise Edition