JSP配置了虚拟目录使用JavaBean报错

时间:2021-03-02 06:10:13

今天遇到一个很棘手的问题,在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的根目录下)