標籤:
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必須在虛擬目錄根.
JSP和JavaBean 虛擬目錄配置問題