No se declarar una clase en un jsp...???
    
		    Hola,
Estoy haciendo un proyecto con jsp como presentación ,java(j2sdk1.4.2), mysql5 y Tomcat (Apache Tomcat 5.0.28 Server).
Mi problema está en el momento de llamar desde un jsp a un servlet.
He probado a declarar una clase java desde el jsp de mil maneras diferentes y muchas de ellas deberÃan haber funcionado, ya que eran copiadas literalmente de proyectos que funcionan bien.
Esto me lleva a pensar que tengo un problema con tomcat. Cuando intento ejecutar una aplicacion jsp que tenga declarada una clase java me da el siguiente error:
org.apache.jasper.JasperException: No se puede compilar la clase para JSP
Ha tenido lugar un error en la lÃnea: 30 en el archivo jsp: /prueba1.jsp
Error de servlet generado:
C:TomcatworkCatalinalocalhostpfcorgapachejspprueba1_jsp.java:73: cannot access org.apache.jsp.Project
Ha tenido lugar un error en la lÃnea: 30 en el archivo jsp: /prueba1.jsp
Error de servlet generado:
bad class file: C:TomcatworkCatalinalocalhostpfcorgapachejspProject.class
class file contains wrong class: Project
Please remove or make sure it appears in the correct subdirectory of the classpath.
Project p = null;
^
1 error
Mi estructura de directorios de tomcat es:
pfc (mi dir root) /
WEB-INF/CLASSES
SRC
LIB
Dentro de web-inf tengo mi web.xml.
En el momento de darme el error que he puesto arriba habÃa puesto el .class en la misma carpeta donde tomcat guarda los .class fruto de la compilación de los jsp.
He revisado manuales de tomcat y jsp sin éxito, se como deberÃa funcionar la estructura de tomcat y he probado los ejemplos de jsp que trae tomcat y si funcionan pero no veo porque el mio no.
Alguien me puede arrojar algo de luz??
Muchas Gracias por todo!!
    Estoy haciendo un proyecto con jsp como presentación ,java(j2sdk1.4.2), mysql5 y Tomcat (Apache Tomcat 5.0.28 Server).
Mi problema está en el momento de llamar desde un jsp a un servlet.
He probado a declarar una clase java desde el jsp de mil maneras diferentes y muchas de ellas deberÃan haber funcionado, ya que eran copiadas literalmente de proyectos que funcionan bien.
Esto me lleva a pensar que tengo un problema con tomcat. Cuando intento ejecutar una aplicacion jsp que tenga declarada una clase java me da el siguiente error:
org.apache.jasper.JasperException: No se puede compilar la clase para JSP
Ha tenido lugar un error en la lÃnea: 30 en el archivo jsp: /prueba1.jsp
Error de servlet generado:
C:TomcatworkCatalinalocalhostpfcorgapachejspprueba1_jsp.java:73: cannot access org.apache.jsp.Project
Ha tenido lugar un error en la lÃnea: 30 en el archivo jsp: /prueba1.jsp
Error de servlet generado:
bad class file: C:TomcatworkCatalinalocalhostpfcorgapachejspProject.class
class file contains wrong class: Project
Please remove or make sure it appears in the correct subdirectory of the classpath.
Project p = null;
^
1 error
Mi estructura de directorios de tomcat es:
pfc (mi dir root) /
WEB-INF/CLASSES
SRC
LIB
Dentro de web-inf tengo mi web.xml.
En el momento de darme el error que he puesto arriba habÃa puesto el .class en la misma carpeta donde tomcat guarda los .class fruto de la compilación de los jsp.
He revisado manuales de tomcat y jsp sin éxito, se como deberÃa funcionar la estructura de tomcat y he probado los ejemplos de jsp que trae tomcat y si funcionan pero no veo porque el mio no.
Alguien me puede arrojar algo de luz??
Muchas Gracias por todo!!
		    Para qué quieres declarar una clase dentro de un JSP!!!!, aunque se pudiese, es una verdadera tonterÃa.
Crear una JavaBean, y déjalo dentro de web-inf/classes y desde el jsp llámalo para que te haga lo que quiera, no?
    Crear una JavaBean, y déjalo dentro de web-inf/classes y desde el jsp llámalo para que te haga lo que quiera, no?
		    Una aclaración:
Un JavaBean es una clase que sigue una especificación concreta:
Sus propiedades son protegidas o privadas, y se accede a ellas mediante métodos get/set. Además, deberÃa implementar Serializable (cosa que a la mayorÃa de nosotros se nos olvida).
Mira, desarrolla la clase como una clase más, aparte... métela dentro de un paquete (esto es necesario. Tomcat no coge bien las clases que están en el paquete por defecto) y llámala desde el JSP.
Si nos hacemos una clase llamada Cafe (que contiene propiedades como "marca", "sabor" y "precio" a las que accedemos con métodos getMarca, setMarca etc...) dentro de un paquete llamado "productos", al nivel del WEB-INF/classes hacemos una carpeta llamada "productos" y allà copiamos el Cafe.class
De este modo, ya está disponible para su uso. Ya es accesible desde los JSP. Previamente, en el JSP conviene importar el paquete "productos":
<%@page import="productos"%>
y ya la podemos usar:
<%
Cafe nigeria = new Cafe();
nigeria.setPrecio(12.30);
//...
%>
Eso para usar una clase al modo "Java" dentro de los JSP.
Pero, realmente, y como te indicaba Chema, lo suyo es usar una clase que cumpla con la especificación JavaBean en cuyo caso podrÃamos declarar dentro de la JSP:
<jsp:useBean id="nigeria" class="productos.Cafe" scope="page" />
por ejemplo.
Espero que con esto tengas suficiente para seguir tú solo... ya nos comentarás...
Un saludo,
Ken
    Un JavaBean es una clase que sigue una especificación concreta:
Sus propiedades son protegidas o privadas, y se accede a ellas mediante métodos get/set. Además, deberÃa implementar Serializable (cosa que a la mayorÃa de nosotros se nos olvida).
Mira, desarrolla la clase como una clase más, aparte... métela dentro de un paquete (esto es necesario. Tomcat no coge bien las clases que están en el paquete por defecto) y llámala desde el JSP.
Si nos hacemos una clase llamada Cafe (que contiene propiedades como "marca", "sabor" y "precio" a las que accedemos con métodos getMarca, setMarca etc...) dentro de un paquete llamado "productos", al nivel del WEB-INF/classes hacemos una carpeta llamada "productos" y allà copiamos el Cafe.class
De este modo, ya está disponible para su uso. Ya es accesible desde los JSP. Previamente, en el JSP conviene importar el paquete "productos":
<%@page import="productos"%>
y ya la podemos usar:
<%
Cafe nigeria = new Cafe();
nigeria.setPrecio(12.30);
//...
%>
Eso para usar una clase al modo "Java" dentro de los JSP.
Pero, realmente, y como te indicaba Chema, lo suyo es usar una clase que cumpla con la especificación JavaBean en cuyo caso podrÃamos declarar dentro de la JSP:
<jsp:useBean id="nigeria" class="productos.Cafe" scope="page" />
por ejemplo.
Espero que con esto tengas suficiente para seguir tú solo... ya nos comentarás...
Un saludo,
Ken
