请教<jsp:useBean>找不到类的问题
我有一个网上下载的例子,目录结构如下:
-ch06
|
+--+src
| |
| +--+ch06
| |
| +--SimpleCalculator.java
+--+WEB-INF
| |
| +--+classes
| | |
| | +--+ch06
| | |
| | +--SimpleCalculator.class
| +--+lib
| | |
| | +--catalina-root.jar
| +--web.xml
+--calculate.jsp
放在TOMCAT目录下的webapps目录下,通过http://localhost:8080/ch06/calculate.jsp能正常访问
但是,放在另一分区的src目录下,访问:http://localhost:8080/src/ch06/calculate.jsp却不能访问。提示如下:
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: /ch06/calculate.jsp(2,0) The value for the useBean class attribute ch06.SimpleCalculator is invalid.
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:146)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1223)
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$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Generator.generate(Generator.java:3270)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:189)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.
src子目录配置如下:
在C:\Tomcat 5.5\conf\server.xml中的<host></host>标签中,加入<Context path="src" docBase="E:\JSP\src" debug="0"/>
然后在C:\Tomcat 5.5\conf\Catalina\localhost\中新建src.xml
其中的内容同为
<Context path="src" docBase="E:\JSP\src" debug="0"/>
请各位指教。
问题点数:50、回复次数:8Top
1 楼doway(john)回复于 2006-03-03 01:38:50 得分 50
-ch06
| +--+WEB-INF
| |
| +--+classes
| | |
| | +--+ch06
| | |
| | +--SimpleCalculator.class
| +--+lib
| | |
| | +--catalina-root.jar
| +--web.xml
+--calculate.jsp
这些是 Web 应用的全部内容,楼主把它们放到 webapps 目录中时,ch06 就成了一个应用程序,可以通过 http://localhost:8080/ch06/calculate.jsp 正常访问。
楼主定义了 <Context path="src" docBase="E:\JSP\src" debug="0"/> 之后,楼主应该这样访问:http://localhost:8080/src/calculate.jsp,即应用程序上下文路径 src 取代了前边用的 ch06。这时,目录结构应该是这个样子的:
E:\JSP\src
| +--+WEB-INF
| |
| +--+classes
| | |
| | +--+ch06
| | |
| | +--SimpleCalculator.class
| +--+lib
| | |
| | +--catalina-root.jar
| +--web.xml
+--calculate.jsp
楼主明白没有?你应该去掉 http://localhost:8080/src/ch06/calculate.jsp 中的 ch06 了。
Top
2 楼cnyiwei(衣带渐宽终不悔,千分散尽还复来。)回复于 2006-03-03 02:02:24 得分 0
谢谢楼上的,但是,我把ch06的内容放到src文件夹的下面,还是出现以上一样的错误,不知道是怎么回事?如果我要想访问http://localhost:8080/src/ch06/下的网页该怎么做?我把普通的HTML页面放到ch06下面是可以访问的,不知道,JSP加了类为什么不可以?Top
3 楼doway(john)回复于 2006-03-03 02:27:32 得分 0
JSP 使用的类必须放在包中,这些类编译以后,需要放到 WEB-INF\classes 中,楼主的当然也放了,但楼主不清楚这么做原因,所以楼主的 WEB-INF 这个目录应该仍然放在了 \src\ch06 目录中,而正确的位置是 \src\WEB-INF。
JSP 中使用到的类型,都是在应用上下文根目录下的 WEB-INF\classes 或者是 WEB-INF\lib 中找的(当然,还有全局类路径和应用服务器的 lib 目录)。
Top
4 楼cnyiwei(衣带渐宽终不悔,千分散尽还复来。)回复于 2006-03-03 08:12:20 得分 0
谢谢doway(john),您的解答使我茅塞顿开(不是茅厕顿开噢,^_^),再次表示感谢!!!
呵呵,刚才调试的过程中,我又有一点不明白了那就是在server.xml<HOST>中加入
<Context path="test" docBase="E:\JSP\eclipse\workspace" debug="0"/>
然后在test.xml中也加入<
Context path="test" docBase="E:\JSP\eclipse\workspace" debug="0"/>
这样不能访问JSP文件,但是,访问html文件是可以的。
但是,我把以上的内容都改为
<Context path="test" docBase="E:\JSP\eclipse\test" debug="0"/>
然后把workspace文件夹也改名为workspace,这样就可以了。
是不是下面子目录的名字一定要跟文件夹同名才行?Top
5 楼cnyiwei(衣带渐宽终不悔,千分散尽还复来。)回复于 2006-03-03 11:52:30 得分 0
自己顶啊。。。Top
6 楼cnyiwei(衣带渐宽终不悔,千分散尽还复来。)回复于 2006-03-03 12:16:29 得分 0
HOHOTop
7 楼doway(john)回复于 2006-03-03 18:04:37 得分 0
test.xml?这个东西楼主指的是什么?我怎么不知道有这东西?Top
8 楼cnyiwei(衣带渐宽终不悔,千分散尽还复来。)回复于 2006-03-10 15:22:39 得分 0
这个好像是TOMCAT配置中的东东啊。Top




