Newsgroup: it.comp.java
Titolo: Servlet e JSP

La domanda può sembrare banale, ma dato che sto prendendo pratica con
servlet e JSP abbiate pietà ;)
Dunque, espongo il problema.
La mia servlet produce un certo oggetto di una classe creata da me.
Quello che ho bisogno di fare è visualizzare il contenuto di tale
oggetto all'interno di una pagina JSP.
Tramite ServletRequest effettuo una redirezione sulla pagina, ma come
faccio a utilizzare l'oggetto creato nella servlet all'interno della
pagina?
Grazie per la pazienza e l'aiuto! :)
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 pagina?
Usa il tag jsp:useBean per referenziare il bean che prima devi aver posto in
sessione. Il bean è un oggetto con attributi privati e metodi get e set
pubblici.
Se ti servono dettagli dimmelo.
Ciao.
Alf #162 ISCM

 sessione.
useBean, se il bean non è ancora istanziato lo istanzia lui e lo pone nello
scope indicato (page per default). Quindi non è necessario averlo posto
prima nello scope.
Visto che usi la redirezione su request (ovvero stai usando
RequestDispatcher.forward) lo scope del tuo bean può essere limitato alla
request anziché alla sessione. Il che è meglio perché così eviti di dover
ripulire manualmente la sessione e il bean cesserà di esistere quando la
request finirà di essere processata.
in altre parole in pagina 1 avrai
<jsp:useBean id="mioBean" class="it.comp.java.MioBean" scope="request" />
<%
    mioBean.setXyz("abcd");
    //....
%>
<jsp:forward page="pagina2" />
e in pagina 2 avrai:
<jsp:useBean id="mioBean" class="it.comp.java.MioBean" scope="request" />
<%
    String s = mioBean.getXyz();
    //....
%>
o qualcosa di simile.
~Luigi

RequestDispatcher.forward) <cut> 
ecco, questo è fondamentale. Se invece di RequestDispatcher.forward
usi HttpServletResponse.sendRedirect la redirezione avviene lato
client e non è quindi possibile passare oggetti all'interno della
stessa request (viene generata una nuova request).
Giusto per chiarire ogni dubbio, se era ovvio scusate.
Umberto

JSSI non lo conosco. Però, utilizzando questi template engine,
buttiamo completamente via la possibilità di scrivere taglibraries.
Non che abbia rilevante esperienza, ma mi sembra che possano essere
una cosa molto utile. Solo di recente sto provando a scriverne e mi
sembrano interessanti.
E' possibile utilizzare tag libraries per lo strato di presentazione
con un template engine?

> Giusto per chiarire ogni dubbio, se era ovvio scusate.
Non era affatto ovvio, sono pochi quelli che conosco che sanno la
differenza tra un forward e un sendRedirect (talvolta il secondo viene
completamente ignorato dai più, mentre a mio avviso ha enormi vantaggi
per certe cose, come il passaggio da un controller a una vista)

Dunque, innanzi tutto grazie per l'attenzione.
Ho fatto un po' di prove, ma se con oggetti di classi
standard non c'è problema, non riesco a far funzionare il passaggio
di un oggetto di una classe creata da me.
Dunque, all'interno della mia servlet Mappa utilizzo un oggetto
chiamato history della classe HistoryList creata da me.
Questa classe è pubblica e si trova, come le altre, nella directory
WEB-INF/class.
Nel metodo doPost() della servlet eseguo la redirezione alla pagina JSP,
settando l'oggetto history come attributo:
request.setAttribute("history", history);
ServletContext sc = getServletContext();
RequestDispatcher rd = sc.getRequestDispatcher(jspURL);
rd.forward(request, response);
Nella pagina JSP scrivo:
<jsp:useBean id="history" scope="request" class="HistoryList"/>
Ma l'esecuzione produce questo errore:
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: 11 in the jsp file: /mappa.jsp
Generated servlet error:
C:\tomcat\work\localhost\progetti\mappa$jsp.java:65: Class
org.apache.jsp.HistoryList not found.
                HistoryList history = null;
                ^
eccetera.
In pratica, non riesce a trovare la classe HistoryList.
Suggerimenti?


> Suggerimenti?
"web-inf/classes" non "web-inf/class"

 "web-inf/classes" non "web-inf/class"
Si certo...
Ho sbagliato a scrivere nel messaggio.
La directory è WEB-INF\classes.


 Suggerimenti?
Non trova la classe xche' la cerca nel package org.apache.jsp.
Nell'istruzione <jsp:useBean id="history" scope="request"
class="HistoryList"/>
aggiungi anche il package in cui si trova la classe.
Es: <jsp:useBean id="history" scope="request"
class="miopackage.HistoryList"/>