Sto cercando di fare una prima applicazione web in jsp sulla base dell'esempio fornito alla lezione 14 della guida fornita da HTML.it, ovvero quello dello script che fornisce le informazioni dell'untente.
Dalla guida in linea di Tomacat5 ho organizzato la web application nel seguente ordine gerarchicho a partire dalla cartella ROOT:
InfoUtente (contenente il file InfoUtente.jsp e le cartelle sottostanti)
|_ WEB-INF (contenente il file web.xml e le cartelle sottostanti)
|_ classes (contenente il file InfoUtente.class "compilato da prompt di DOS regolarmente!")
|_ lib (contenente eventuali librerie .jar)
|_ img (contenente le eventuali immagini)
Di seguito vengono forniti i listati dei file:
InfoUtente.jsp
______________
<html>
<head>
<title>InfoUtente - Utilizzo del Bean</title>
</head>
<body>
<jsp:useBean id="utente" scope="session" class="InfoUtente"/>
<!--
<jsp:setProperty name="utente" property="nome" value="Giuseppe"/>
La proprietà del bean possono essere impostate con l'azione setProperty
o agendo direttamente con i metodi creati appositamente.
-->
<%
utente.setNome("Giuseppe");
utente.setEmail("peppespe@vodafone.it");
%>
<!--
Lo stesso vale per la lettura dei bean che puo essere fatta con l'azione
<jsp:getProperty name="utente" property="nome"/>
o agendo sui metodi creati:
-->
<%
out.println(utente.getNome());
out.println(utente.riassunto());
%>
<% page errorPage = "PaginaErrore.jsp" %>
</body>
</html>
InfoUtente.java
_______________
public class InfoUtente {
private String nome = null;
private String email = null;
private int pagineViste;
public InfoUtente() {
pagineViste=0;
}
public void aggiornaPV(){
pagineViste++;
}
public int getPagineViste(){
return pagineViste;
}
public void setNome(String value) {
nome = value;
}
public String getNome() {
return nome;
}
public void setEmail(String value) {
email = value;
}
public String getEmail() {
return email;
}
public String riassunto(){
String riassunto = null;
riassunto = "Il nome dell'utente è"+nome+",";
riassunto+= "il suo indirizzo e-mail è: "+email;
riassunto+=" e ha visitato "+pagineViste+" del sito";
return riassunto;
}
}//InfoUtente
web.xml
_______
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Fornisce informazioni sull'utente</display-name>
<description>
Informazioni Utente
</description>
<servlet>
<servlet-name>org.apache.jsp.InfoUtente_jsp</servlet-name>
<servlet-class>org.apache.jsp.InfoUtente_jsp</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>org.apache.jsp.index_jsp</servlet-name>
<url-pattern>/InfoUtente.jsp</url-pattern>
</servlet-mapping>
</web-app>
al momento che dal browser Internet Explorer lancio l'indirizzo http://127.0.0.1:8080/InfoUtente/InfoUtente.jsp ricevo il un messaggio di errore come il seguente:
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: InfoUtente
org.apache.jasper.compiler.BeanRepository.getBeanT ype(BeanRepository.java:122)
org.apache.jasper.compiler.Generator$GenerateVisit or.visit(Generator.java:1053)
org.apache.jasper.compiler.Node$GetProperty.accept (Node.java:1079)
org.apache.jasper.compiler.Node$Nodes.visit(Node.j ava:2180)
org.apache.jasper.compiler.Node$Visitor.visitBody( Node.java:2230)
org.apache.jasper.compiler.Node$Visitor.visit(Node .java:2236)
org.apache.jasper.compiler.Node$Root.accept(Node.j ava:485)
org.apache.jasper.compiler.Node$Nodes.visit(Node.j ava:2180)
org.apache.jasper.compiler.Generator.generate(Gene rator.java:3255)
org.apache.jasper.compiler.Compiler.generateJava(C ompiler.java:277)
org.apache.jasper.compiler.Compiler.compile(Compil er.java:456)
org.apache.jasper.compiler.Compiler.compile(Compil er.java:439)
org.apache.jasper.JspCompilationContext.compile(Js pCompilationContext.java:553)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:291)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet .java:856)
root cause
java.lang.ClassNotFoundException: InfoUtente
org.apache.catalina.loader.WebappClassLoader.loadC lass(WebappClassLoader.java:1383)
org.apache.catalina.loader.WebappClassLoader.loadC lass(WebappClassLoader.java:1230)
org.apache.jasper.compiler.BeanRepository.getBeanT ype(BeanRepository.java:120)
org.apache.jasper.compiler.Generator$GenerateVisit or.visit(Generator.java:1053)
org.apache.jasper.compiler.Node$GetProperty.accept (Node.java:1079)
org.apache.jasper.compiler.Node$Nodes.visit(Node.j ava:2180)
org.apache.jasper.compiler.Node$Visitor.visitBody( Node.java:2230)
org.apache.jasper.compiler.Node$Visitor.visit(Node .java:2236)
org.apache.jasper.compiler.Node$Root.accept(Node.j ava:485)
org.apache.jasper.compiler.Node$Nodes.visit(Node.j ava:2180)
org.apache.jasper.compiler.Generator.generate(Gene rator.java:3255)
org.apache.jasper.compiler.Compiler.generateJava(C ompiler.java:277)
org.apache.jasper.compiler.Compiler.compile(Compil er.java:456)
org.apache.jasper.compiler.Compiler.compile(Compil er.java:439)
org.apache.jasper.JspCompilationContext.compile(Js pCompilationContext.java:553)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:291)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet .java:856)
note The full stack trace of the root cause is available in the Tomcat logs.
Dal basso della mia ignoranza in materia credo che l'errore sia nel file web.xml il quale è un linguaggio che non conosco molto bene!!