一、 什么是JSP
JSP(JavaServer Pages)是由Sun Microsystems公司倡導(dǎo)、許多公司參與一起建立的一種 動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn),其網(wǎng)址為http://www.javasoft.com/products/jsp。 在傳統(tǒng)的網(wǎng)頁HTML文件(*htm,*.html)中加入Java程序片段(Scriptlet)和JSP標(biāo)記(tag),就構(gòu)成了JSP網(wǎng)頁(*.jsp)。Web服務(wù)器在遇到訪問JSP網(wǎng)頁的請求時,首先執(zhí)行其中的程序片段,然后將執(zhí)行結(jié)果以HTML格式返回給客戶。程序片段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁以及發(fā)送 email 等等,這就是建立動態(tài)網(wǎng)站所需要的功能。所有程序操作都在服務(wù)器端執(zhí)行,網(wǎng)絡(luò)上傳送給客戶端的僅是得到的結(jié)果,對客戶瀏覽器的要求最低,可以實(shí)現(xiàn)無Plugin,無ActiveX,無Java Applet,甚至無Frame。 本文將介紹利用JSP技術(shù)開發(fā)動態(tài)網(wǎng)頁的方法,還將簡要分析JSP技術(shù)和 Microsoft 公司的 ASP 技術(shù)的不同之處。
二、 如何安裝和啟動
為了實(shí)驗(yàn)JSP技術(shù),首先需要建立運(yùn)行環(huán)境,這個過程相當(dāng)簡單:
1、在 http://java.sun.com/jdk/處下載JDK(Java 2 SDK、Standard Edition、v 1.2.2)。
2、在http://java.sun.com/products/jsp/處下載JSWDK(JavaServer Web Development Kit 1.0.1)。Linux用戶可以在ttp://jakarta.apache.org/處下載Tomcat 3.0。
3、安裝 以Windows NT環(huán)境為例,JDK的安裝是首先運(yùn)行下載得到的jdk1_2_2-win.exe,然后修改系統(tǒng)環(huán)境參數(shù),在PATH參數(shù)中加入[x:]\jdk1.2.2\bin以及增加新的環(huán)境參數(shù) CLASSPATH=[x:]\jdk1.2.2\lib\tools.jar,其中[x:]是安裝JDK的硬盤符(c:、d: 等)。 JSWDK的安裝僅需將jswdk1_0_1-win.zip帶目錄釋放到硬盤根目錄下(c:\、d:\ 等),然后就可以在硬盤上找到\jswdk-1.0.1\目錄。將來如果不想保留JSWDK,刪除這個目錄就可以了,沒有任何系統(tǒng)文件和注冊表遺留問題。更詳細(xì)的安裝過程以及Solaris/Unix和Linux下JDK、Tomcat的安裝可以參考下載得到的文件包中的安裝說明。
4、啟動 以Windows NT環(huán)境為例,在\jswdk-1.0.1\目錄下執(zhí)行startserver.bat,就可啟動JSWDK中一個支持JSP網(wǎng)頁技術(shù)的Web服務(wù)器。為了不與現(xiàn)有的Web服務(wù)器(例如IIS、PWS等)沖突,JSWDK的Web服務(wù)器使用了8080端口。 在瀏覽器的地址欄中鍵入http://localhost:8080或者h(yuǎn)ttp://127.0.0.1:8080后,如果能看到 JSWDK 的歡迎頁就說明JSP實(shí)驗(yàn)環(huán)境已經(jīng)建成,可進(jìn)入下一步實(shí)驗(yàn)。 要關(guān)閉Web服務(wù)器則運(yùn)行stopserver.bat。
三、 JSP簡單示例
JSWDK中包含的Web服務(wù)器的文檔目錄在缺省狀態(tài)下為\jswdk-1.0.1\webpages,主文檔在缺省狀態(tài)下為index.html和index.jsp。也就是說訪問http://localhost:8080等于訪問\jswdk-1.0.1\webpages\index.html。 用文本編輯器,如Windows中的記事本(Notepad),創(chuàng)建一個文本文件hi.jsp,保存在\jswdk-1.0.1\webpages\目錄下,其內(nèi)容如下:
在瀏覽器的地址欄中鍵入http://localhost:8080/hi.jsp,JSWDK中的Web服務(wù)器會執(zhí)行JSP 文件中用<%以及%>括起來的Java程序語句,其中out.print是將文字輸出到網(wǎng)頁,語句<%= 變量 | 表達(dá)式 %>的作用是將Java Scriptlet中變量或表達(dá)式的值輸出到網(wǎng)頁,執(zhí)行結(jié)果如圖1。 圖1 將變量Msg賦值為中文字符串,用<%= %>輸出,或者用out.print輸出中文字符串,則在英文版NT4及Redhat 6.1下實(shí)驗(yàn)運(yùn)行結(jié)果正常,而在中文NT 4.0和中文98下,則反而會出現(xiàn)亂碼。
四、 統(tǒng)一的網(wǎng)站界面
JSP支持服務(wù)器端的文件包含,即可以在一個JSP文件中插入多個其他文件,用來實(shí)現(xiàn)統(tǒng)一的網(wǎng)站界面。修改上述hi.jsp并另存為mypage.jsp:
用可視化HTML編輯器,例如FrontPage、Dreamweave等設(shè)計(jì)網(wǎng)站的框架結(jié)構(gòu),將設(shè)計(jì)好的框架結(jié)構(gòu)文件分割成兩個部分,上面一半保存為top.htm, 下面一半保存為bot.htm,代碼如下面所示:
在瀏覽器的地址欄中鍵入http://localhost:8080/mypage.jsp,得到結(jié)果如圖2。 圖2 這樣網(wǎng)站的界面就能統(tǒng)一起來,而設(shè)計(jì)者可以集中精力在功能模塊上處理用戶登錄、連接數(shù)據(jù)庫、發(fā)送email等等。每個
JSP文件都有如下結(jié)構(gòu):
五、 服務(wù)器參數(shù)設(shè)置
JSWDK的Web服務(wù)器參數(shù)保存在\jswdk-1.0.1\webserver.xml中,用Windows寫字板打開并編輯這個文件就可以修改缺省設(shè)置值。本節(jié)內(nèi)容主要針對JSWDK,Linux下Tomcat的設(shè)置方法略有不同。 JSWDK缺省的文檔目錄是\jswdk-1.0.1\webpages,在此目錄下可以建立子目錄,例如\jswdk-1.0.1\webpages\test,就能在瀏覽器中用http://localhost/test訪問這個目錄,為了使得這個子目錄能執(zhí)行JSP程序,還必須在webserver.xml中的<Service></Service>節(jié)加入:
<WebApplication id="test" mapping="/test" docBase="webpages/test" />
并且,還必須建立\jswdk-1.0.1\webpages\test\WEB-INF目錄,并從\jswdk-1.0.1\webpages\WEB-INF目錄中復(fù)制過來以下四個文件:mappings.properties、mime.properties、servlets.properties以及webapp.properties。完成這些過程,才能通知JSWDK的Web服務(wù)器執(zhí)行http://localhost/test 中的JSP程序。
六、 JavaBean
JSP網(wǎng)頁吸引人的地方之一就是能結(jié)合JavaBean技術(shù)來擴(kuò)充網(wǎng)頁中程序的功能。 JavaBean是一種Java類 (class),通過封裝屬性和方法成為具有某種功能或者處理某個業(yè)務(wù)的對象。JavaBean被組織成為package(數(shù)據(jù)包)以便進(jìn)行管理,實(shí)際上就是把一組JavaBean一起放在某某目錄中,每個類的定義前加上package某某,本例中為test。目錄test必須放在系統(tǒng)環(huán)境CLASSPATH包含的目錄下,系統(tǒng)才能找到其中的JavaBean。JSWDK在缺省狀態(tài)下將\jswdk-1.0.1\webpages\WEB-INF\jsp\beans\ 加入CLASSPATH。建立自己的JavaBean和package時,就放在這個目錄中也不失為一種簡易的方法。 下面介紹一個簡單的JavaBean框架。用文本編輯器創(chuàng)建一個文本文件helloWorld.java,并保存在\jswd
k-1.0.1\webpages\WEB-INF\jsp\beans\test目錄下,其內(nèi)容如下:
javac helloWorld.java
注意,Java是區(qū)分大小寫的,在程序中,編譯命令行中字母的大小寫都不能寫錯。 編譯成功就表示建立了一個JavaBean。下面看如何在JSP中使用這個JavaBean。用文本編輯器創(chuàng)建一個文本文件hi-bean.jsp,并保存在\jswdk-1.0.1\webpages\test目錄下,其內(nèi)容如下:
在JSP網(wǎng)頁中,使用 <jsp:useBean ... />語法來創(chuàng)建JavaBean對象,并命名為helloBean。讀者可從這個簡單的例子中看出設(shè)置、獲取JavaBean屬性,以及調(diào)用JavaBean方法的做法。在瀏覽器的地址欄中鍵入http://localhost:8080/test/hi-bean.jsp,得到結(jié)果如圖3所示。 注意,如果修改和重新編譯了JavaBean程序,則需要關(guān)閉和重新啟動JSWDK的Web服務(wù)器以后修改的結(jié)果才會有效。如果僅僅修改JSP文件,則不用重新啟動JSWDK的Web服務(wù)器. 雖然,這僅僅完成了一個非常簡單的JavaBean框架,但是遵循這個框架可以設(shè)計(jì)出多種多樣的JavaBean。例如,從JSP中訪問數(shù)據(jù)通常就是通過JavaBean來實(shí)現(xiàn)的。
七、 數(shù)據(jù)庫連接
數(shù)據(jù)庫連接對動態(tài)網(wǎng)站來說是最為重要的部分,Java中連接數(shù)據(jù)庫的技術(shù)是JDBC(Java Database Connectivity)。很多數(shù)據(jù)庫系統(tǒng)帶有JDBC驅(qū)動程序,Java程序就通過JDBC驅(qū)動程序與數(shù)據(jù)庫相連,執(zhí)行查詢、提取數(shù)據(jù)等等操作。Sun公司還開發(fā)了JDBC-ODBC bridge,用此技術(shù)Java程序就可以訪問帶有ODBC驅(qū)動程序的數(shù)據(jù)庫,目前大多數(shù)數(shù)據(jù)庫系統(tǒng)都帶有ODBC驅(qū)動程序,所以Java程序能訪問諸如Oracle、Sybase、MS SQL Server和MS Access等數(shù)據(jù)庫。下面介紹如何用Access實(shí)現(xiàn)一個動態(tài)FAQ(常見問題及答案)網(wǎng)站。
首先建立一個Access數(shù)據(jù)庫faq.mdb,其中的表faqs有字段id(自動增量型,并設(shè)為主關(guān)鍵字)、subject(文字型,長度200)、answers(備注型)。這個表中可以存放一些編程知識的常見問題及答案,
如圖4。
圖 4
然后,在Control Panel(控制面板)的ODBC Datasource模塊中加入System DSN,取名faq,并指向faq.mdb。
創(chuàng)建一個JavaBean,名為faq.java,并保存在\jswdk-1.0.1\webpages\WEB-INF\jsp\beans\test目錄下。faq.java 的內(nèi)容如下:
用上一節(jié)介紹的方法編譯faq.java以后,在\jswdk-1.0.1\webpages\test目錄下創(chuàng)建JSP文件faq.jsp,其內(nèi)容如下:
在瀏覽器的地址欄中鍵入http://localhost:8080/test/faq.jsp,faq.jsp調(diào)用JavaBean,從數(shù)據(jù)庫中讀出內(nèi)容并輸出,得到結(jié)果如圖5所示. 限于篇幅,本文不能列舉JSP-JavaBean-JDBC/ODBC-數(shù)據(jù)庫的復(fù)雜例子,讀者可以從本文最后所推薦的網(wǎng)址中找到并下載到數(shù)據(jù)庫連接范例。
八、 技術(shù)分析
Microsoft 公司的 ASP 技術(shù)也是動態(tài)網(wǎng)頁開發(fā)技術(shù)。JSP和ASP從形式上非常相似,ASP程序員一眼就能認(rèn)出<% %>以及<%= %>。但是深入探究下去會發(fā)現(xiàn)它們很多的差別,其中最主要的有以下三點(diǎn):
1、 JSP的效率和安全性更高
ASP以源碼形式存放,以解釋方式運(yùn)行,每次ASP網(wǎng)頁調(diào)用都需要對源碼進(jìn)行解釋,運(yùn)行效率不高。另外,IIS的漏洞曾使得許多網(wǎng)站源程序大曝光,包括筆者以前用ASP開發(fā)的網(wǎng)站,ASP程序全部被人下載了去。 JSP在執(zhí)行以前先被編譯成字節(jié)碼 (bytecode),字節(jié)碼由Java虛擬機(jī)(Java Virtual Machine)解釋執(zhí)行,比源碼解釋的效率高;服務(wù)器上還有字節(jié)碼的Cache機(jī)制,能提高字節(jié)碼的訪問效率。第一次調(diào)用JSP網(wǎng)頁可能稍慢,因?yàn)樗痪幾g成Cache,以后就快得多了。同時,JSP源程序不大可能被下載,特別是
JavaBean程序完全可以放到不對外的目錄中。
2、 JSP的組件 (Component) 方式更方便 ASP通過COM來擴(kuò)充復(fù)雜的功能,如文件上載、發(fā)送email以及將業(yè)務(wù)處理或者復(fù)雜計(jì)算分離出來成為獨(dú)立可重復(fù)利用的模塊。JSP通過JavaBean實(shí)現(xiàn)了同樣的功能擴(kuò)充。 在開發(fā)方面,COM的開發(fā)遠(yuǎn)比JavaBean復(fù)雜和繁瑣,學(xué)會ASP不難,但學(xué)會開發(fā)COM可不簡單。而JavaBean就簡單多了,從本文上述示例中可以看出開發(fā)JavaBean很方便。 在維護(hù)方面,COM必須在服務(wù)器上注冊,如果修改了COM程序,就必須重新注冊,甚至必須關(guān)機(jī)和重新啟動。JavaBean則不需要注冊,放在CLASSPATH包含的目錄中就行了。如果JavaBean進(jìn)行了修改,則JSWDK和Tomcat現(xiàn)在還需要關(guān)閉和重新運(yùn)行(但不是關(guān)機(jī)),但開發(fā)者已經(jīng)許諾將在以后的版本中做到不需要關(guān)閉服務(wù)器。 另外JavaBean是完全的OOP,可以針對不同的業(yè)務(wù)處理功能方便地建立一整套可重復(fù)利用的對象庫,例如用戶權(quán)限控制、email自動回復(fù)等等。
3、 JSP的適應(yīng)平臺更廣
ASP目前僅適用于NT和IIS。雖然Unix下有ChiliSoft的插件來支持ASP,但是ASP本身的功能有限,必須通過ASP+COM的組合來擴(kuò)充,Unix下的COM實(shí)現(xiàn)起來非常困難。 JSP則不同,幾乎所有平臺都支持Java,JSP+JavaBean可以在所有平臺下通行無阻。NT下IIS通過一個插件,例如JRUN(http://www3.allaire.com/products/jrun/)或者ServletExec(http://www.newatlanta.
com/),就能支持JSP。著名的Web服務(wù)器Apache已經(jīng)能夠支持JSP。由于Apache廣泛應(yīng)用在NT、Unix和Linux上,因此JSP有更廣泛的運(yùn)行平臺。雖然現(xiàn)在NT操作系統(tǒng)占了很大的市場份額,但是在服務(wù)器方面Unix的優(yōu)勢仍然很大,而新崛起的Linux更是來勢不小。 從一個平臺移植到另外一個平臺,JSP和JavaBean甚至不用重新編譯,因?yàn)镴ava字節(jié)碼都是標(biāo)準(zhǔn)的與平臺無關(guān)的。筆者將在NT下實(shí)驗(yàn)的JSP網(wǎng)頁原封不動地拿到Linux下就運(yùn)行起來了,感覺非常滿意。
九、 結(jié)論
綜上所述,JSP可謂是構(gòu)建動態(tài)網(wǎng)站的一個利器,故推薦給讀者,祝愿你們掌握J(rèn)SP,開發(fā)出優(yōu)秀的網(wǎng)站。ASP程序員也請?jiān)囈幌?,JSP里也有session、request、response/out等對象,親自試試看如何。
附文
這里是關(guān)于JSP的重要參考資料,有興趣的讀者可以進(jìn)一步閱讀。
http://java.sun.com/products/jsp/faq.html
http://www.esperanto.org.nz/jsp/jspfaq.html
http://www.zdnet.com/pcweek/stories/news/0,4153,410709,00.html
http://developer.netscape.com/viewsource/kuslich_jsp
/kuslich_jsp.html
http://web2.java.sun.com/products/jsp/jsp-asp.html
http://www.asptoday.com/articles/19991022.htm
歡迎光臨www.dukejava.com!
JavaServer Pages (JSP)是基于Java的技術(shù),用于創(chuàng)建可支持跨平臺及跨Web服務(wù)器的動態(tài)網(wǎng)頁。 JSP可與微軟的Active Server Pages (ASP)相媲美,但JSP使用的是類似于HTML的標(biāo)記和Java 代碼片段而不是用VBScript。當(dāng)你使用不提供ASP本地支持的Web服務(wù)器(例如 Apache或Netscape服務(wù)器)時,你就可以考慮使用JSP了。你雖然也可以為這些服務(wù)器弄一個ASP附加軟件模塊,但是太昂貴了?,F(xiàn)在Sun公司并不會因你使用JSP向你收費(fèi)(雖然將來可能要收),況且用于Solaris、 Linux以及Windows系統(tǒng)的組件都很容易獲得。 不要把JSP與服務(wù)器端的JavaScript語言搞混了。Web服務(wù)器自動將通過JSP生成的Java代碼片段轉(zhuǎn)換成Java 片段(servlets)。 JSP也可自動控制許多功能,如過去用Perl腳本編寫功能程序或像ASP這樣的服務(wù)器專用API(應(yīng)用編程接口).我們馬上就要開始幫助你建立一個使用JSP 技術(shù)的網(wǎng)站范例了。
準(zhǔn)備好計(jì)算機(jī)以使用JSP 你需要Java2軟件開發(fā)工具箱(J2SDK),過去稱之為Java開發(fā)工具箱(JDK)、JavaServer 網(wǎng)絡(luò)開發(fā)工具箱(JSWDK)、Tomcat,或者其它能支持JSP的Web服務(wù)器。升陽公司為Windows、Solaris以及 Linux平臺提供免費(fèi)的J2SDK和JSWDK。 如果你想在現(xiàn)有的Web服務(wù)器上使用JSP,而此服務(wù)器本身不支持JSP和Java 代碼片段,可以試用Allaire公司的Jrun。它可以為Netscape的Enterprise Server和Fasttrack Server、微軟的Internet Information Server(IIS)和Personal WebServer(PWS)、Apache以及其他服務(wù)器充當(dāng)Web服務(wù)器附件。你也可以使用Apache服務(wù)器的Java版,其中包含最新的JSWDK。 下載并安裝所需的軟件 目前,版本號為1.2.2-001的J2SDK可下載版以可安裝的歸檔文件形式出現(xiàn)。這個大約20MB的下載量軟件可提供一個徹底的Java開發(fā)環(huán)境,讓你創(chuàng)造任何基于Java并且利用了而標(biāo)準(zhǔn)核心API的解決方案。其實(shí),你的Web服務(wù)器使用JSP的唯一條件是要有Java編輯器。要讓W(xué)eb服務(wù)器知道編輯器的位置,需要JAVA_HOME 環(huán)境變量設(shè)置為J2SDK安裝目錄。如果你已經(jīng)在Windows系統(tǒng)中進(jìn)行了安裝并且接受了默認(rèn)目錄, 請將“set JAVA_HOME=C:\1.2.2”添加到你的“autoexec.bat”文件中,然后重新啟動。 安裝J2SDK后,下載并安裝JSWDK或者是Tomcat β版,即基于Java的Apache Web服務(wù)器的β版。你把JSWDK放在什么地方是無關(guān)緊要的,只要你以后能找到它就行。通常,將其放在頂層目錄中,這樣你在替換JSWDK或JSDK時無需刪除另一個軟件。安裝好這個文件后,準(zhǔn)備工作已經(jīng)就緒,你可以開始JSP開發(fā)工作了。 正確地安裝JSWDK后,請運(yùn)行“startserver”腳本程序,以啟動Web服務(wù)器,使其按照默認(rèn)情況監(jiān)聽8080端口。你要在啟動服務(wù)器之后查看您是否已正確地安裝了此工具,請加載一個JSP樣本文件(http://locahost:8080/examples/jsp/)。如果你能成功地運(yùn)行這些樣本文件,說明你已經(jīng)正確地安裝了這個軟件。如果你在用來啟動服務(wù)器的控制臺窗口中看到報錯信息,你就需要做些修改。最經(jīng)常發(fā)生的問題是沒有設(shè)置或不正確地設(shè)置了JAVA_HOME環(huán)境變量。要看到當(dāng)前環(huán)境變量設(shè)置情況,要請?jiān)贒OS提示符下鍵入“set”設(shè)置。 開始 在解釋 JSP語法前,創(chuàng)建一個快捷網(wǎng)頁,顯示目當(dāng)前的日期和時間,并然后將之其保存為sample.jsp:
把這個文件以及你所有的HTML 和 JSP 頁面放在JSWDK安裝目錄下的網(wǎng)頁目錄里。你可以從http://localhost:8080/sample.jsp加載此網(wǎng)頁。該網(wǎng)頁首次被訪問時,Web服務(wù)器會把JSP編譯成Java代碼片段,這樣你就能夠看到當(dāng)前的日期和時間了。 你已經(jīng)下載、安裝并配置好了開發(fā)環(huán)境,你可以開始學(xué)習(xí)JSP語法并創(chuàng)建自己的基于JSP的解決方案了。
JSP基本語法
講完安裝問題后,現(xiàn)在進(jìn)入來討論JSP語法。一個投機(jī)取巧的辦法是下載語法卡片。如果你不熟悉Java編程,也許你想看一下Sun的指南 。然而網(wǎng)頁創(chuàng)建者并不需要進(jìn)行太多的Java開發(fā)。除了一些方法調(diào)用,在你的JSP網(wǎng)頁里應(yīng)盡可能少用Java代碼。 記住以上提示,我們首先來看一看JSP指令和腳本元素,之后我們會解釋JavaBeans和隱含對象。共有五種JSP指令和腳本元素。在JSP 1.0版中,大部分JSP被一個以“<%” 開頭和以“%>”結(jié)尾的的標(biāo)記括在其中。在更新的JSP 1.1規(guī)范出臺后,就有了與XML兼容的版本。 JSP指令和腳本元素
指令
JSP指令是為JSP引擎而設(shè)計(jì)的。他們并不直接產(chǎn)生任何可見輸出,而只是告訴引擎如何處理其余JSP頁面。這些指令始終被括在 “<%@ ?%>”標(biāo)記中。兩個最重要的指令是“pagePage”和“Include”?!癟aglib”指令不在討論之列,但是在用JSP1.1創(chuàng)建自定義標(biāo)記可以使用它。 幾乎在所有JSP頁面頂部都會看到“Page”指令。盡管不是必須的,但它可以讓你指定: 到何處查找起支持作用的Java類別:
出現(xiàn)Java運(yùn)行問題時,將網(wǎng)上沖浪者引向何處:
還有你是否需要管理用戶的會話級信息,這些信息可能來自多個網(wǎng)頁(在下面的JavaBeans一節(jié)將對此做進(jìn)一步講)述:
“Include”指令可以把你的內(nèi)容分成更多可管理的元素,比如包括一個普通頁面頁眉或頁腳的元素。包含的網(wǎng)頁可以是一個固定的HTML 頁面或更多的JSP內(nèi)容:
聲明
JSP聲明用來讓你定義頁面級變量,以保存信息或定義JSP頁面的其余部分可能需要的支持方法。如果你發(fā)現(xiàn)代碼太多,通常最好把它們寫成一個獨(dú)立的Java類別。聲明一般都在“<%! ?%>”標(biāo)記中。一定要以分號(;)結(jié)束變量聲明,因?yàn)槿魏蝺?nèi)容都必須是有效的Java語句:
表達(dá)式
有了JSP表達(dá)式,表達(dá)式評估結(jié)果會被轉(zhuǎn)換成一個字符串,并且被直接包括在輸出頁面之內(nèi)。JSP 表達(dá)式包含在“<%= ?%>” 標(biāo)記中,沒有分號,除非在加引號的字符串部分使用分號。
代碼片段/腳本片段
代碼片段/腳本片段(Scriptlets) JSP代碼片段或腳本片段是嵌在“<% ?%>”標(biāo)記中的。這種Java代碼在Web服務(wù)器響應(yīng)請求時就會運(yùn)行。在腳本片段周圍可能是原始的HTML或XML語句,在這些地方,代碼片段可以使你創(chuàng)建條件執(zhí)行代碼,或要用到另外一段代碼的代碼。例如,以下的代碼組合使用表達(dá)式和代碼片段,顯示H1、H2、H3和H4標(biāo)記中的字符串“Hello”。代碼片段并不局限于一行源代碼:
注釋
最后一個主要的JSP元素是嵌入式注釋。盡管你始終可以在文件中加入HTML注釋,但用戶在查看頁面源代碼時會看到這些注釋。如果你不想讓用戶看到它,你就應(yīng)該將其嵌入“<%-- ?--%>” 標(biāo)記中:
要改變JavaBean屬性,你必須使用“<jsp:setProperty>”標(biāo)記。對這個標(biāo)記,你需要再次識別Bean和屬性,以修改并額外提供新值。如果命名正確,這些值可以從一個已提交的表中直接獲得:參數(shù)獲得:
可以從一個參數(shù)獲得,但你必須直接命名屬性和參數(shù):
或者直接用一個名字稱和值來設(shè)置:
關(guān)于JavaBean 的最后一件事: 為了Web服務(wù)器能找到JavaBean,你需要將其類別文件放在一個特殊位置。用JSWDK,最 方便的位置是安裝目錄下的類別目錄,如\jswdk-1.0.1\classes。
JSP隱含對象
與JSP語法相關(guān)的最后的元素是一些叫做“隱含對象”的東西。在JSP代碼片段中,你可以利用這些隱含對象與JSP頁面的代碼片段執(zhí)行環(huán)境產(chǎn)生互動。應(yīng)盡量少訪問這些內(nèi)置隱含對象。但是,在一某些情況下,訪問隱含對象是可被接受的。若要充分利用隱含對象,就需了解最新的Java Servlet API。 下表列出可用的隱含對象集合。
隱含對象說明
request 客戶端請求,包括從GET/POST請求傳遞過來的參數(shù)
response 網(wǎng)頁傳回客戶端的反應(yīng)
pageContext 在此管理網(wǎng)頁屬性
session 與請求關(guān)聯(lián)的會話
application 代碼片段的運(yùn)行環(huán)境
out 傳送響應(yīng)的輸出流
config 代碼片段配置對象
page JSP網(wǎng)頁本身
exception 有錯的網(wǎng)頁中未被捕獲的例外
這些都是用來做什么的,你又如何來使用它們呢?基本上說,在你的腳本片段里,你可以用它們進(jìn)入執(zhí)行JSP代碼的代碼片段。用不著深入了解太多的Servlet API細(xì)節(jié),我們來看看能用它們來做到的某些事情: 你可以不用表達(dá)式,直接進(jìn)入“Out”隱含對象,將某些內(nèi)容輸出到響應(yīng)中:
用不著把一個參數(shù)直接送到JavaBean,你可以從請求對象獲取參數(shù)值:
在你用JSP進(jìn)行開發(fā)的過程中,進(jìn)行更多的開發(fā)的過程中,如果創(chuàng)建了JavaBeans或發(fā)現(xiàn)JSP文件中加入了太多的Java源代碼,你就需要創(chuàng)建起支持作用的Java分類(class)了,它可以協(xié)助你重復(fù)利用源代碼并減少JSP網(wǎng)頁編譯時間。當(dāng)你需要創(chuàng)建Java分類文件時,你必須: 將JDSWK installation\bin目錄添加到PATH中。在autoexec.bat文件PATH行的末尾,加入“C:1.2.2/bin”。
用這個命令將JAR文件復(fù)制到“\jre\lib\ext:”目錄中: copy c:\jswdk-1.0.1\lib\servlet.jar
c:\jdk1.2.2\jre\lib\ext.
創(chuàng)建一個JSP網(wǎng)站
現(xiàn)在該是把所有這些JSP語法派上用場的時候了。我們將創(chuàng)建一個網(wǎng)頁,它有一個輸入表單,可以使用戶輸入一個股票代號以獲得出當(dāng)前股價(有20分鐘)。如果輸入有誤,則顯示報錯網(wǎng)頁。
quote.jsp
首先,用 這個代碼 創(chuàng)建一個quote.jsp網(wǎng)頁并將其保存在JSWDK安裝目錄下的網(wǎng)頁目錄中。大多數(shù)的網(wǎng)頁是標(biāo)準(zhǔn)的HTML,其間散布著JSP代碼。第六行是一個網(wǎng)頁指示,表示將把所有錯誤發(fā)送到“errorPage.jsp”文中。第13到15行是一個腳本片段,主要說明只有提供“符號”參數(shù)才會顯示表格?!癐f”代碼段在
32到34行結(jié)束。第17行定義了要用的JavaBean,第18行從參數(shù)加載JavaBean的符號屬性。第27行到29行顯示Bean的屬性。除了"if "代碼段,實(shí)際上并不涉及其它Java代碼。
errorPage.jsp
下一步,將下列JSP源代碼保存到網(wǎng)頁目錄中的“errorPage.jsp”文件中?!斑@是一個錯誤網(wǎng)頁”的提示為第一行,它將isErrorPage網(wǎng)頁提示屬性設(shè)置為真。上一頁說了明錯誤網(wǎng)頁的位置,本頁則說明這就是錯誤網(wǎng)頁。其它JSP文件中的JSP專用代碼只有訪問隱含例外對象才用到。網(wǎng)頁只顯示其值:
你的第一個JSP網(wǎng)頁。
創(chuàng)建了這兩個JSP文件,建立了JavaBean資源文件并編輯了它后,你就可以從http://localhost:8080/quote.jsp加載“quote.jsp”文件以查看結(jié)果,假設(shè)你沒有更改JSWDK安裝設(shè)置,轉(zhuǎn)而使用別的端口。這個網(wǎng)頁當(dāng)然能做得更漂亮,但是它已實(shí)現(xiàn)了需要實(shí)現(xiàn)的功能,并且很好地展示了JSP的功能。
聯(lián)系客服