Newsgroup: it.comp.java
Titolo: Chiarimento Servlet - JSP - JavaBean

Ciao a tutti,
avrei bisogno di un chiarimento. Ho da poco intrapreso lo studio delle
Servlet, veramente un bell'argomento, la cosa che non riesco a capire (forse
perché ancora non sono arrivato a studiarle), per quello che so,  come si fa
a far interagire una pagina JSP con una servlet. Insomma se le JSP sono per
eccelenza lo strumento di visualizzazione dei dati, sarà pur possibile
repererire l'output di una servlet. Le JavaBean permetto quando detto in
maniera estremamente semplice... allora mi sfugge la differenza tra Servlet
e JavaBean... Non capisco dove sia la complementarietà delle due. Forse
perché con le JavaBeans non è possibile passare parametri HTTP, avere
informazioni sul server web ecc.? Immagino che la principale differenza sia
in ciò... Ma allora, prima che arrivi al loro studio, qualcuno mi potrebbe
anticipatamente soddisfare queste mie curiosità? In particolare come sia
possibile gestire l'"output" di una servlet all'interno di una JSP?
Grazie infinite a tutti.
Mr. Deckard


Il problema è alla base. JSP e Servlet sono la stessa cosa. Una JSP,
infatti, viene compilata in una servlet la prima volta che viene
chiamata dopo che è stata creata o modificata.
La differenza teoricamente c'è. La Servlet (che è comunque "nata"
prima) è una estensione "generica" di un server. Quella che viene
normalmente utilizzata è una HttpServlet, che risponde ed ha una serie
di catarreristiche e comportamenti legati all'HTTP. La JSP è solo e
strettamente legata all'HTTP.
Un altra differenza che piace molto agli studenti, è che una JSP non è
altro che una servlet scritta in HTML. Questo perchè, teoricamente,
una Servlet è un classico codice in Java che contiene output in HTML,
mentre la JSP è un file HTML che contiene pezzi di codice Java
(arghhh) e, come ho detto, quando viene "richiesta" la prima volta
(dopo la creazione o dopo una modifica) viene trasformata in una
servlet e compilata.
I JavaBean, invece, non hanno nulla a che vedere nè con una servlet e
tantomeno con una JSP, se non che possono essere utilizzati
all'interno di entrambe.
Se vuoi, dall'interno di una JSP puoi sempre includere l'output di una
servlet attraverso jsp tag come, ad esempio, la <jsp:include.../>
Spero di essermi spiegato. 
	Regards,
		Kazuma
---
I've got nothing against God. It's his fan club I can't stand.
Alex "Kazuma" Garbagnati, 
http://www.kazuma.net
EJB & Tomcat jGuru FAQ Manager, 
http://www.jGuru.com
Tutor "Progetto Scuole", 
http://www.JIA.it
Java Italian Association - SUN - MIUR

Volevo aggiungere qualcosa a quanto detto Kazuma.
Poiche' le JSP sono sostanzialmente HTML con codice java sono molto 
adatte, come dici tu, per la generazione dell'output da inviare al client.
Sono invece sconsigliate quando si debbano fare prevalentemente delle 
elaborazioni, per le quali sono invece piu' adatte le servlet.
Quello che si fa spesso e' utilizzare una servlet per accedere al 
database e elaborare i dati. Questa servlet non genera nessun output da 
inviare al client ma fa un forward ad una pagina jsp che generera' l'output.
La comunicazione fra servlet e jsp (ovvero la comunicazione dei 
risultati dell'elaborazione alla pagina jsp) avviene solitamente 
attraverso dei java bean (non vedo perche' dei fagioli dovrebbero essere 
femminili ;-) ) che vengono inseriti nel request context (o in uno degli 
altri context).
Andrea Polci

 ha scritto nel messaggio
news:XRlJa.110489$Ny5.3...@twister2.libero.it...

Kazuma,  Andrea vi ringrazio molto per la vostra chierezza e per le vostre
esaustive risposte.
Credo che il punto che fosse chiarito sia emerso. Infatti, ammetto, in
alcuni tratti non mi sono espresso al meglio.
Immagino che il ponte tra Servlet e jsp affettuato con i JavaBeans (adesso
ho reso giustizia al loro sesso!!) avvenga l'evocazione dei metodi setXXX.
Adesso mi sono più chiare certe questioni, anche perché il risultato di una
Servlet non necessarismente sarà del testo HTML, potrebbero essere anche
oggetti, array ecc...
A questo punto, approfitto ancora un po' della vostra disponibilità, vi
chiedo di spiegare un po' meglio quello che ha accennato Kazuma, quando
dice:
"...Se vuoi, dall'interno di una JSP puoi sempre includere l'output di una
servlet attraverso jsp tag come, ad esempio, la <jsp:include.../>..."
Via ringrazio ancora molto.
Mr. Deckard

servlet attraverso jsp tag come, ad esempio, la <jsp:include.../>..."
Cerco di semplificare il tutto. Poi, se vuoi, possiamo entrare nello
specifico.
Diamo come dato di fatto che tu hai una servlet che, ad esempio, ti
ritorna una serie di informazioni facendo un lavoraccio incredibile.
Quello che ti torna è una pagina HTML. 
Ora, tu vuoi far si che una tua JSP includa il risultato di questa
servlet. Il modo migliore è quello di dire al server (JSP e Servlet
sono eseguite sul lato server):
"Hey, server... esegui questa servlet per me ed includi il suo
risultato all'interno di me".
Questo avviene attraverso l'uso di una JSP Tag. Le JSP tags sono
speciali Tag (HTML like, anzi, a dire il vero XML like) che vengono
interpretate dal preprocessore JSP (quello che trasforma la JSP in
Servlet).
Se non hai capito... riprovo... hehehe
	regards



Grazie Kazuma,
sei stato chiarissmo. L'unica osservazione, da profano, che pongo è: quale
vantaggio posso avere nell'inserire all'interno di una JSP un output già
formattato in HTML? Forse ho ancora la possibilità di gestire il loro
layout? A questo punto, avendo puntalizzato che il ruolo tipico di una JSP,
non converrebbe "reindirizzare" i valori della Servlet alla JSP, che
provvederà alla formattazione?
Adesso una domanda veramente stupida: un JavaBean, una Servlet posso
resituitr un oggetto o un array a una JSP (beh, mi rispondo da solo: Sì! Una
JSP = Servlet)... Sai comè, quando la voglia di apprendere è tanta, talvolta
si finisce per essere paranoici con le domande.
Detto questo, Kazuma ti ringrazio per la pazienza e la disponibilità a non
limitarti a dare semplici risposte...
Grazie mille
Mr. Deckard

si finisce per essere paranoici con le domande.
Si e no... Un metodo di un JavaBean mi ritorna un array, da una
servlet, normalmente, mi aspetto un "output" differente, nato per
andare insietro al browser
	regards,
