可能大多數(shù)Jsp開發(fā)員在寫完程序測試通過后,不太會(huì)關(guān)注Jsp生成的Java文件,其實(shí),通過Java代碼,更能體現(xiàn)程序代碼的真正含義,對(duì)進(jìn)一步研究程序代碼的后臺(tái)運(yùn)行情況是非常有幫助的。例如,用Jsp編寫代碼時(shí),有時(shí)候用<%! %>,有時(shí)候用<% %>,加不加感嘆號(hào),到底有什么不同嗎? (Jsp代碼加感嘆號(hào)與不加感嘆號(hào)的區(qū)別)這類問題在教程里一般不會(huì)涉及到,從哪里找到問題的突破口呢——Jsp生成的Java文件!所以,對(duì)于Jsp開發(fā),有必要知道這點(diǎn)技能。
對(duì)于Tomcat而言,JSP頁面生成的Java文件放在work路徑對(duì)應(yīng)的Web應(yīng)用下。例如:
D:\Tomcat5.5\webapps\test\test.jsp
生成對(duì)應(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、 每個(gè)JSP頁面的第一個(gè)訪問者速度很慢,因?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腳本都會(huì)轉(zhuǎn)換成Servlet的xxxService()方法,類似于自行創(chuàng)建Servlet時(shí)service()方法。
6、 JSP聲明部分,轉(zhuǎn)換成Servlet的成員部分。所有JSP聲明部分可以使用private,protected,public,static等修飾符,其他地方則不行。
7、 JSP的輸出表達(dá)式(<%= ..%>部分),輸出表達(dá)式會(huì)轉(zhuǎn)換成Servlet的xxxService()方法里的輸出語句。
8、 九個(gè)內(nèi)置對(duì)象要么是xxxService()方法的形參,要么是該方法的局部變量,所以九個(gè)內(nèi)置對(duì)象只能在JSP腳本和輸出表達(dá)式中使用。
從上述第5、6點(diǎn),其實(shí)就可以解釋Jsp代碼加感嘆號(hào)與不加感嘆號(hào)的區(qū)別的問題。
如何在Tomcat下指定Jsp生成的Java文件路徑?
當(dāng)需要自定義Jsp生成的Java文件位置時(shí),可以通過如下兩種方法來實(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)試方便,我們有時(shí)候是想看編譯前的java文件的。
<jsp-descriptor>
<jsp-param>
<param-name>keepgenerated</param-name>
<param-value>true</param-value>
</jsp-param>
</jsp-descriptor>
即可。如果沒有,在WEB-INF中建立一個(gè)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中生成臨時(shí)文件中,有Java文件了吧!