1.把webapps/a/当作web应用目录;
那么放下如下目录和文件webapps/a/fbean.jsp
webapps/a/WEB-INF/classes/f/A.java
cmd下编译A.java 得到A.class
<%@ page contentType="text/html;charset=GB2312" language="java"%> <html> <body> <jsp:useBean id="fb" class="f.A" scope="session" /> <% fb.setFirstProperty("My first JavaBean!"); %> <%=fb.getFirstProperty()%> </body> </html>
fbean.jsp
package f; public class A { private String FirstProperty = new String(""); public A(){} public void setFirstProperty(String value) { FirstProperty = value; } public String getFirstProperty() { return FirstProperty; } }
A.java
重启tomcat,在浏览器输入localhost:8080/a/fbean.jsp可以看到运行效果
证明:此jsp和Javabean没问题.
2.我的F:/CODE/JSP/MyJSP是我的tomcat虚拟目录;
在这有我以前测试虚拟目录的test文件,相关内容如下:
/*下面展示的是一个根据时间问好的jsp程序,这些文件放在同一个目录下,即test*/
oldhello.jsp a.css hua.png Desert.jpg
<%@ page language="java" pageEncoding="GBK"%> <%@ page import="java.util.Date"%> <%--java.util package,date class.is old--%><!DOCTYPE html> <html> <head><title>DateHello</title><link rel="stylesheet" type="text/css" href="a.css" /> </head> <body id="b"> <%=new java.util.Date()%> <%-- show current time like Thu Apr 23 21 :11:20 CST 2015 --%> <hr /> <% Date x=new java.util.Date(); if(x.getHours()>3 && x.getHours()<12) { %> <p style="color:red; text-align:center"> Good Morning</p> <% }else if (x.getHours()>12&&x.getHours()<18){ %> <p style="color:yellow; text-align:center"> Good Afternoon</p> <% }else if (x.getHours()>18||x.getHours()<3){ %> <p style="color:blue; text-align:center"> Good Evening</p> <% } %> </body> </html>
oldhello.jsp
#b {background-image: url("hua.png");opacity:0.4;background-repeat:no-repeat; background-position } #b:hover {background-image: url("Desert.jpg");opacity:1.0; filter:alpha(opacity=100); /* For IE8 and earlier */ background-repeat:no-repeat;}
a.css
两张图随便找的,我就不放了.
在浏览器写相关地址运行后也可以显示效果
证明:我的虚拟目录没问题
3.问题来了.鉴于我不想把web目录都放在tomcat自带的目录下创建了虚拟目录,我把1所示的所有内容复制到虚拟根目录下.重启tomcat,运行出错!
The value for the useBean class attribute f.A is invalid.
这三个问题我反复从昨页12点试错到今天早上10点终于解决了.
其中我的javabean代码先前set和get的位置错了导致 说某个方法未定义;
其次在网上正确配置了目录结构还是出现各种问题,于是我一步步每次改完源文件就编译一次,还重启服务器.总算解决了.
此外我发现仅仅改jsp不用重启服务器,直接f5就可以.
还有个重要发现:我把.class删了,f5照样运行正常,且我重启服务器后依旧!真的很诡异啊!
但是稀里糊涂的解决了以后难免再出问题.时间不够,在此留个脚印.
//我将a/WEB-INF的WEB-INF移到跟a同目录的webapps下,也就是我虚拟目录根目录下,运行通过!
看来以后要这么组织结构才对
+虚拟目录+项目目录
+项目目录2
+WEB-INF
+classes
+各种包和类
以前我以为是每个项目目录带个WEB-INF,在tomcat安装目录的webapps下我这么干没错.(刚试过把WEB-INF放到项目目录外也行!)
但是虚拟目录下创建的javabean形成的class所在的WEB-INF必须在虚拟目录根.