JSP學習日記 - 2

2005年11月28日:

這兩天爲了JSP文件存放位置的問題而煩惱。

如果是單獨的JSP文件,放在TOMCAT的ROOT目錄下就可以運行了。這個沒有什麼疑問。

問題是,如果把其中的某部份寫成一個類,生成一個JAVA文件,那麼這個文件要放哪裏纔可以用呢?

這兩天我加了好多個Q羣,沒一個能回答(沒幾個人理我這個菜鳥)。上GOOLE也沒找到相關說明。幾乎絕望,幾乎想放棄JSP。

終於給我找到一篇文章了,雖沒直接說,但也解決了我的問題。

首先像我這樣子的處理,就是使用了 JavaBean 的方法。要使用JavaBean,首先要生成一個類,把這個類用 Javac 編譯,編譯後把生成的 class 文件放到TOMCAT的 ROOT下的 WEB-INF/classes目錄下。

最後,最關鍵的一點是:在配置完class文件後,TOMAT需要重新啓動,這些JavaBean才能生效。

之前由於不知道這一點,儘管把該放的文件放在了正確的位置上,可是編譯也是沒有通過。

並且由此讓我瞭解了JSP站點目錄結構:

  1. WEB-INF:站點根目錄下的WEB-INF目錄是一個有重要意義的目錄,它不僅像ASP。NET的BIN目錄一樣,是可執行的,而且也是外部不能訪問的一個目錄。在這裏可以存放不能下載的文件,比如配置文件、組件、數據庫文件、資源文件等。另外一點是,當使用getResource時,這個目錄是資源文件的根目錄。
  2. classes:在使用import時,WEB-INF裏面的 classes 目錄是 class 文件的根目錄。
  3. JSP文件:可以存放在根目錄下除了WEB-INF目錄外的任意一層目錄裏,並可以被解析被讀取。

編譯後的 class 文件放到了classes目錄下後,需要重啓TOMCAT才能生效。這個對虛擬主機用戶來講是相當的不便,但同時我發現了一個解決的方法(不知道可不可取):

<%! %> 用於JSP聲明, 在這裏面可以定義一個或多個類,這點跟一般的JAVA類文件是不同的。

一般的JAVA類文件只能聲明一個類,比如 hello.java 裏面只能聲明類: hello 而不能聲明其他類,甚至文件名跟類名必須一致,大小寫不同也不行。

而用<%! %>來定義類的話,可以把相關的類寫在一起。

還有,更重要的認識是,這一部份的聲明可以寫到另一個JSP文件裏。並且用 <%@ page include="xxx.jsp"%>或用<jsp:include file="xx.jsp"></jsp:include>來導入,就像ASP文件裏的 <!-- #Include ... 命令一樣。

實在不能重啓TOMCAT的話,就用這個方法好了。

而且,從導入編譯好的類 import 到導入文件 include 的改變不會很大。在以後條件許可的情況下,可以把外部的JSP文件編譯成class文件,放到 classes 目錄下,然後把主JSP文件裏的 include 命令改換成 import命令即可。不會影響程序的佈署。。

以上言論只是JSP初學者的體會,僅供參考。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章