可能大多數(shù)Jsp開發(fā)員在寫完程序測試通過后,不太會關(guān)注Jsp生成的Java文件,其實(shí),通過Java代碼,更能體現(xiàn)程序代碼的真正含義,對進(jìn)一步研究程序代碼的后臺運(yùn)行情況是非常有幫助的。例如,用Jsp編寫代碼時,有時候用<%! %>,有時候用<% %>,加不加感嘆號,到底有什么不同嗎? (Jsp代碼加感嘆號與不加感嘆號的區(qū)別)這類問題在教程里一般不會涉及到,從哪里找到問題的突破口呢——Jsp生成的Java文件!所以,對于Jsp開發(fā),有必要知道這點(diǎn)技能。
對于Tomcat而言,JSP頁面生成的Java文件放在work路徑對應(yīng)的Web應(yīng)用下。例如:
D:\Tomcat5.5\webapps\test\test.jsp
生成對應(yīng)的java文件
D:\Tomcat5.5\work\Standalone\localhost\test\
Jsp與Servlet的關(guān)系
1、 JSP文件必須在JSP服務(wù)器內(nèi)運(yùn)行。
2、 JSP文件必須生成Servlet才能執(zhí)行。
3、 每個JSP頁面的第一個訪問者速度很慢,因?yàn)楸仨毜却齁SP編譯成Servlet。
4、 JSP頁面的訪問者無須安裝任何客戶端,甚至不需要可以運(yùn)行Java的運(yùn)行環(huán)境,因?yàn)镴SP頁面輸送到客戶端的是標(biāo)準(zhǔn)HTML頁面。
5、 JSP頁面的靜態(tài)內(nèi)容、JSP腳本都會轉(zhuǎn)換成Servlet的xxxService()方法,類似于自行創(chuàng)建Servlet時service()方法。
6、 JSP聲明部分,轉(zhuǎn)換成Servlet的成員部分。所有JSP聲明部分可以使用private,protected,public,static等修飾符,其他地方則不行。
7、 JSP的輸出表達(dá)式(<%= ..%>部分),輸出表達(dá)式會轉(zhuǎn)換成Servlet的xxxService()方法里的輸出語句。
8、 九個內(nèi)置對象要么是xxxService()方法的形參,要么是該方法的局部變量,所以九個內(nèi)置對象只能在JSP腳本和輸出表達(dá)式中使用。
從上述第5、6點(diǎn),其實(shí)就可以解釋Jsp代碼加感嘆號與不加感嘆號的區(qū)別的問題。
如何在Tomcat下指定Jsp生成的Java文件路徑?
當(dāng)需要自定義Jsp生成的Java文件位置時,可以通過如下兩種方法來實(shí)現(xiàn):
方法1.在tomcat的配置文件server.xml(路徑:tomcat路徑\conf下面)里,找到:<Context docBase="D:\workspace\icinfo\trunk\web" path="" reloadable="false" debug="0" crossContext="true" workDir="D:\workspace\icinfo\trunk\web\WEB-INF\lib\CommonPKI\META-INF\work"/>,添加如上的workDir=""屬性,""里寫你的要看到.java/.class的路徑.
方法2.到conf\Catalina\localhost下找到你項(xiàng)目的.xml培植文件,找到方法1中的代碼,后續(xù)操作同方法1.
怎樣保留Weblogic 中Jsp編譯后生成的Java文件?
運(yùn)行自己配置的web應(yīng)用,往往只能看見weblogic編譯之后的class文件。而看不見編譯前的java的文件。為了調(diào)試方便,我們有時候是想看編譯前的java文件的。
<jsp-descriptor>
<jsp-param>
<param-name>keepgenerated</param-name>
<param-value>true</param-value>
</jsp-param>
</jsp-descriptor>
即可。如果沒有,在WEB-INF中建立一個weblogic.xml文件。增加:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app
PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN"
"http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd" >
<weblogic-web-app>
<jsp-descriptor>
<jsp-param>
<param-name>keepgenerated</param-name>
<param-value>true</param-value>
</jsp-param>
</jsp-descriptor>
</weblogic-web-app>
看看web應(yīng)用在Weblogic中生成臨時文件中,有Java文件了吧!