For Programmers: Free Programming Magazines  


Home > Archive > Java Beans > October 2006 > JSP/JavaBean - Newbie help









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author JSP/JavaBean - Newbie help
Dave

2006-10-01, 7:01 pm

I have set-up apache Tomcat for the first time and I'm trying to configure a
test JSP website on it. I'm attempting to use a simple JavaBean with my JSP
page and I keep getting errors relating to the JavaBean.

index.jsp is in the $CATALINA_HOME\webapps\JSPTest\WebConten
t

SimpleBean.java is in $CATALINA_HOME\webapps\JSPTest\src\mybea
ns

SimpleBean.class is in
$CATALINA_HOME\webapps\JSPTest\WebConten
t\WEB-INF\classes\mybeans

web.xml is in $CATALINA_HOME\webapps\JSPTest\WebConten
t\WEB-INF\


If I change the "type" attribute of the jsp:useBean tag then to "class" then
I get a different exception (shown below).

I'm using Tomcat 5.5 for Windows, JRE/JDK 1.5. I have tried uninstalling and
re-installing Tomcat, and also tried running it as both a service and a
standalone application.

Any idea what the problem is? I presume it's something fundamental I'm
missing.

Thanks in advance, code and errors are below.

********
index.jsp
********

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="mybeans.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Using SimpleBean</title>
</head>
<body>
<jsp:useBean id="msg" type="SimpleBean" />
Test Content
</body>
</html>


*************
SimpleBean.java
*************

package mybeans;
public class SimpleBean
{
private String message;
public SimpleBean()
{
}
public void setMessage(String input)
{
message = input;
}
public String getMessage()
{
return message;
}
}



*******
web.xml
*******

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>
JSPTest</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>SimpleBean</servlet-name>
<servlet-class>SimpleBean</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SimpleBean</servlet-name>
<url-pattern>/servlet/SimpleBean</url-pattern>
</servlet-mapping>
</web-app>



*********
Exception 1
*********

description The server encountered an internal error () that prevented it
from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 13 in the jsp file: /WebContent/index.jsp
Generated servlet error:
SimpleBean cannot be resolved to a type

An error occurred at line: 13 in the jsp file: /WebContent/index.jsp
Generated servlet error:
SimpleBean cannot be resolved to a type


org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:512) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache
.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)root causeorg.apache.jasper.JasperException: Unable to compile class for JSPAn error occurred at line: 13 in the jsp file: /WebContent/inde
x.jspGenerated servlet error:SimpleBean cannot be resolved to a typeAn error occurred at line: 13 in the jsp file: /WebContent/index.jspGenerated servlet error:SimpleBean cannot be resolved to a type org.apache.jasper.compiler.DefaultErrorHandler.javacErr
or(DefaultErrorHandler.java:84) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:414) org.apache.jasper.compiler.Compiler.compile(Compiler.java:297) org.a
pache.jasper.compiler.Compiler.compile(Compiler.java:276) org.apache.jasper.compiler.Compiler.compile(Compiler.java:264) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563) org.apache.jasper.servlet.JspServletWrapper.service(Js
pServletWrapper.java:305) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)note The full stack trace of t
he root cause is available in the ApacheTomcat/5.5.20 logs.********Exception 2*********description The server encountered an internal error () that prevented itfrom fulfilling this request.exceptionorg.apache.jasper.JasperException: Unable to load class f
or JSP org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:512) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.
apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)root causeorg.apache.jasper.JasperException: Unable to load class for JSP org.apache.jasper.JspCompilationContext.load(JspCompilation
Context.java:598) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:147) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) o
rg.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)root causejava.lang.ClassNotFoundException: org.apache.jsp.WebContent.index_jsp java.net.URLClassLoader$1.run(Unknown Source) java
.security.AccessController.doPrivileged(Native Method) java.net.URLClassLoader.findClass(Unknown Source) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:133) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:65) org.apa
che.jasper.JspCompilationContext.load(JspCompilationContext.java:596) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:147) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) org.apache.jasper.serv
let.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)note The full stack trace of the root cause is available in the ApacheTomcat/5
.5.20 logs.***************************Exception 3 (using "class" instead of "type" attribute)***************************des
cription The server encountered an internal error () that prevented itfrom fulfilling this request.exceptionorg.apache.jasper.Jasper
Exception: /WebContent/index.jsp(13,0) The value forthe useBean class attribute SimpleBean is invalid. org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:512) org.apache.jasper.servlet.JspServletWrapper.service(JspServle
tWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)root causeorg.apache.jasper.JasperExc
eption: /WebContent/index.jsp(13,0) The value forthe useBean class attribute SimpleBean is invalid. org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39) org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.ja
va:405) org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:146) org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1174) org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1116) org.apache.jasper.compiler
.Node$Nodes.visit(Node.java:2163) org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213) org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219) org.apache.jasper.compiler.Node$Root.accept(Node.java:456) org.apache.jasper.compiler.Node$No
des.visit(Node.java:2163) org.apache.jasper.compiler.Generator.generate(Generator.java:3320) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198) org.apache.jasper.compiler.Compiler.compile(Compiler.java:295) org.apache.jasper.compiler.Comp
iler.compile(Compiler.java:276) org.apache.jasper.compiler.Compiler.compile(Compiler.java:264) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:305)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)note The full stack trace of the root cause is available
in the ApacheTomcat/5.5.20 logs.

Lew

2006-10-01, 10:00 pm

Dave wrote:
> ********
> index.jsp
> ********
>
> <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
> pageEncoding="ISO-8859-1"%>
> <%@ page import="mybeans.*" %>
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


It's better to use the lower-case "html"; this will prepare you better for XHTML.

> <html>
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
> <title>Using SimpleBean</title>
> </head>
> <body>
> <jsp:useBean id="msg" type="SimpleBean" />
> Test Content
> </body>
> </html>


<jsp:useBean id="msg" class="mybeans.SimpleBean" />

I don't think the <%@ page import="mybeans.*" %> works to prevent the need to
fully qualify the class in a <jsp:useBean ... /> tag. I easily could be
mistaken here, but the Sun docs refer to
<jsp:useBean id="beanName" class="fully_qualified_classname" scope="scope" />

http://java.sun.com/j2ee/1.4/docs/t.../doc/index.html

> *************
> SimpleBean.java
> *************
>
> package mybeans;
> public class SimpleBean
> {
> ...
> }


> *******
> web.xml
> *******
>
> <servlet>
> <servlet-name>SimpleBean</servlet-name>
> <servlet-class>SimpleBean</servlet-class>
> </servlet>


SimpleBean is not a servlet.

> SimpleBean.class is in
> $CATALINA_HOME\webapps\JSPTest\WebConten
t\WEB-INF\classes\mybeans
>
> web.xml is in $CATALINA_HOME\webapps\JSPTest\WebConten
t\WEB-INF\


You should install the app in the webapps/ directory directly, not one level
down in WebContent/, i.e.,

$CATALINA_HOME/webapps/JSPTest/index.jsp
$CATALINA_HOME/webapps/JSPTest/WEB-INF/
$CATALINA_HOME/webapps/JSPTest/WEB-INF/classes/...

If WEB-INF/ is buried one level down then the container cannot find the
classes/ subdirectory.

http://java.sun.com/j2ee/1.4/docs/t...3.html#wp225219
http://tomcat.apache.org/tomcat-5.5...deployment.html

- Lew
Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com