今天遇到一个很棘手的问题,在jsp文件中使用useBean,网页返回码出现了500服务器内部错误,报错信息如下:
The value for the useBean class attribute wp.A is invalid.
之前项目放在tomcat的webapps文件夹下,运行是正常的,现在是配置了虚拟目录,所以与javabean无关,应该是和配置了虚拟目录有关
尝试了很多方法都没用,最后找到了正确的解决方案(解决方法在最下面,如果会使用javabean的可直接跳过中间部分)
在此之前,先介绍一下在tomcat的webapps文件夹下新建项目的jsp中如何使用javabean
1.新建一个java文件,例如:
package wp; public class A { private String FirstProperty = new String(""); public A(){} public void setFirstProperty(String value) { FirstProperty = value; } public String getFirstProperty() { return FirstProperty; } }
注意:javabean中至少要包含一个无参的构造函数
2.在项目的根目录下创建WEB-INF文件夹(区分大小写,不要写错)
3.在WEB-INF文件夹下创建classes文件夹(名称是固定的)
4.在classes文件夹下创建与java文件中对应的package后跟名称的文件夹(示例中包名为wp)
5.编译写好的java文件,将生成的.class文件放到最终的包(wp)下
6.最后在jsp文件中通过如下代码使用javabean
<jsp:useBean id="a" class="wp.A" scope="page" />
参数解释:id是为要引用的javabean起的名字,class的值即为javabean的class文件所在的位置(后面不要跟.class),scope是设置bean的有效范围(生命周期),当前设置的是仅在本页面有效
javabean的调用
通过a.setXXX("")和a.getXXX()使用javabean中定义的方法
最后,就是本篇的重点所在,关于配置了虚拟目录(不会配置的自行搜索),使用javaBean报错
很简单,就是将WEB-INF文件夹建立在所配置虚拟目录的根目录
(如果虚拟目录为D:workspace 在此文件下创建个人项目名为Demo,通常的做法是将WEB-INF文件夹直接建立在Demo下,这是错误的,而是需要建立在workspace的根目录下)