PDA

Visualizza la versione completa : [JSP] bean


giuseppe sicari
27-08-2004, 13:37
Sto imparando JSP e sono agli inizi : ho un problema...

ho installato tomcat 3.2.1 e impostato tomcat_home e java_home fin qui tutto ok il server parte e non da alcuna segnalazione di errore.

Ho realizzato per prova l'esempio presente nella guida di html.it sui bean

ho creato la pagina prova.jsp



<jsp:useBean id="utente" scope="session" class="InfoUtente"/>
<jsp:setProperty name="utente" property="nome" value="Zina&Tram"/>
<html>
<head><title>Utilizzo del Bean</title></head>
<body>
<%
utente.setNome("Zina&Tram");
utente.setEmail("ciao@dom.it");
%>


<jsp:getProperty name="utente" property="nome"/>

<% out.println(utente.getNome());
out.println(utente.riassunto()); %>

<% utente.aggiornaPV();
out.println(utente.getPagineViste()); %>
</body>
</html>

e ho creato e compilato la classe infoutente.

naturalmente la pagina jsp l'ho messa nella cartella jsp e la classe InfoUtente in web-inf/classes

quando inserisco l'url della mia pagina ecco cosa mi spunta:

org.apache.jasper.JasperException: Unable to compile class for JSPNote: sun.tools.javac.Main has been deprecated.
C:\jakarta-tomcat-3.2.1\work\localhost_8080%2Fexamples\_0002fjsp_000 2fprova_0002ejspprova_jsp_1.java:63: Class jsp.InfoUtente not found.
InfoUtente utente = null;
^
C:\jakarta-tomcat-3.2.1\work\localhost_8080%2Fexamples\_0002fjsp_000 2fprova_0002ejspprova_jsp_1.java:66: Class jsp.InfoUtente not found.
utente= (InfoUtente)
^
C:\jakarta-tomcat-3.2.1\work\localhost_8080%2Fexamples\_0002fjsp_000 2fprova_0002ejspprova_jsp_1.java:71: Class jsp.InfoUtente not found.
utente = (InfoUtente) Beans.instantiate(this.getClass().getClassLoader() , "InfoUtente");
^
C:\jakarta-tomcat-3.2.1\work\localhost_8080%2Fexamples\_0002fjsp_000 2fprova_0002ejspprova_jsp_1.java:101: Class jsp.InfoUtente not found.
out.print(JspRuntimeLibrary.toString((((InfoUtente )pageContext.findAttribute("utente")).getNome())));
^
4 errors, 1 warning

at org.apache.jasper.compiler.Compiler.compile(Compil er.java:254)
at org.apache.jasper.servlet.JspServlet.doLoadJSP(Jsp Servlet.java:462)
at org.apache.jasper.servlet.JasperLoader12.loadJSP(J asperLoader12.java:146)
at org.apache.jasper.servlet.JspServlet.loadJSP(JspSe rvlet.java:433)
at org.apache.jasper.servlet.JspServlet$JspServletWra pper.loadIfNecessary(JspServlet.java:152)
at org.apache.jasper.servlet.JspServlet$JspServletWra pper.service(JspServlet.java:164)
at org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:318)
at org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:391)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:853)
at org.apache.tomcat.core.ServletWrapper.doService(Se rvletWrapper.java:404)
at org.apache.tomcat.core.Handler.service(Handler.jav a:286)
at org.apache.tomcat.core.ServletWrapper.service(Serv letWrapper.java:372)
at org.apache.tomcat.core.ContextManager.internalServ ice(ContextManager.java:797)
at org.apache.tomcat.core.ContextManager.service(Cont extManager.java:743)
at org.apache.tomcat.service.http.HttpConnectionHandl er.processConnection(HttpConnectionHandler.java:21 0)
at org.apache.tomcat.service.TcpWorkerThread.runIt(Po olTcpEndpoint.java:416)
at org.apache.tomcat.util.ThreadPool$ControlRunnable. run(ThreadPool.java:498)
at java.lang.Thread.run(Thread.java:536)

cosa devo fare ?

Reflection
27-08-2004, 22:02
Ma stai tentando di "connetterti" ad un Session Bean?
Se vuoi renderti la vita moooolto più semplice fai così:
Scaricati JBoss da www.jboss.org

JBoss è un application server pensato apposta per il supporto dei Enterprise JavaBeans in più sfrutta le potenzialità di Tomcat (che è compreso nel pacchetto di download) per l'interpretazione di pagine JSP e Servlet.

Ora non ho tempo per darti delucidazioni più chiare sul dafarsi ma appena mi libero se vuoi ti dico come fare per usare EJB, JSP e Servlet.

Angelo1974
27-08-2004, 22:22
Ciao; dopo aver creato e compilato la classe InfoUtente l'hai messa nella cartella classes sotto web-inf della tua web app?
Se non lo hai fatto è per questo che hai quell'errore; mentre se la classe InfoUtente è contenuta in un package devi mettere, sempre in classes, il package con il file InfoUtente.class e cambiare:


<jsp:useBean id="utente" scope="session" class="InfoUtente"/>

In :

<jsp:useBean id="utente" scope="session" class="users.InfoUtente"/>

supponendo che la classe si trovasse nel package denominato users.
Ciao

vlr
28-08-2004, 00:50
Come faccio a impostare come pagina di default una pagina che non si trova nella classica cartella ROOT. Si può?

Angelo1974
28-08-2004, 01:26
Devi configurare il file server.xml di tomcat che si trova in conf

vlr
28-08-2004, 16:38
Originariamente inviato da Angelo1974
Devi configurare il file server.xml di tomcat che si trova in conf
Infatti così avevo letto ma non ho trovato niente di illuminante da sostituire. Mi potresti dare la stringa da cambiare? Please. :)

Angelo1974
28-08-2004, 17:58
Ciao; effettivamente darti quella risposta senza farti vedere cosa inserire era come non risponderti :D ; allora inserisci questa stringa dopo gli altri Context, prima di </Host>, poi data la forma




<Context path="DIR" docBase="C:\Documenti\JSP">
</Context>

i file che hai in C:\Documenti\JSP li trovi in http://localhost:8080/DIR (ovviamente devi prima riavviare tomcat).

Ciao :ciauz:

vlr
29-08-2004, 00:58
Originariamente inviato da Angelo1974
Ciao; effettivamente darti quella risposta senza farti vedere cosa inserire era come non risponderti :D ; allora inserisci questa stringa dopo gli altri Context, prima di </Host>, poi data la forma




<Context path="DIR" docBase="C:\Documenti\JSP">
</Context>

i file che hai in C:\Documenti\JSP li trovi in http://localhost:8080/DIR (ovviamente devi prima riavviare tomcat).

Ciao :ciauz:
Apprezzo i tuoi sforzi ma nel mio server.xml non c'è traccia di context nè di host. Così pure negli altri xml che stanno in conf.
Premesso che ho Tomcat 5.0, nella directoy conf\Catalina\localhost ci sono altri xml tra cui admin.xml che contiene questa riga:

<Context path="/admin" docBase="${catalina.home}/server/webapps/admin"
debug="0" privileged="true"> e manager.xml che contiene quest'altra:

<Context path="/manager" docBase="${catalina.home}/server/webapps/manager"
debug="0" privileged="true">
Possono essere un'alternativa?
O mi basta semplicemente aggiungere quella riga che mi hai dato in una qualunque posizione di server.xml?
Thanks.

Angelo1974
29-08-2004, 11:13
Ciao; senti in tutte le versioni di Tomcat precedenti alla 5.0 (4.1.17/19/23/27/29) c'era la cartella conf in cui c'era il file server.xml; mi sembra strano che in tomcat 5.0 abbiano stravolto completamente questa logica.
Prova a fare in tutta la directory che contiene tomcat, una ricerca di server.xml e vedi se c'è; altrimenti se utilizzi ultraedit oppure con il normale cerca di winzozz prova a cercare la stringa <Context ti dovrebbero uscirre tutti i file che contengono questa stringa, tra cui anche il famigerato server.xml; altrimenti vi sarà un file che avrà preso il posto del server.xml; allora devi leggere la documentazione di tomcat 5.0 e vedere qual'è questo file.
Ciao

vlr
29-08-2004, 16:12
Forse mi sono spiegato male... il file server.xml è esattamente dove dicevi ma non contiene la parola Context. Ma il fatto che comunque sia possibile farlo mi rincuora, si troverà il modo. :)

Loading