JSP頁面基本組成
在 HTML 頁面文件中加入 Java 程序段和 JSP 標(biāo)簽,即可構(gòu)成一個(gè) JSP 頁文件,JSP 頁面由 5 種元素組合而成。
1.普通的 HTML 標(biāo)記符。
2.JSP 標(biāo)簽,如指令標(biāo)簽、動(dòng)作標(biāo)簽。
3.變量和方法的聲明。
4.Java 程序段。
5.Java 表達(dá)式。
當(dāng)服務(wù)器上的 JSP 頁面被第一次請求執(zhí)行時(shí),服務(wù)器上的 JSP 引擎首先將 JSP 頁面文件轉(zhuǎn)譯成 Java 文件,再將 Java 文件編譯,生成字節(jié)碼文件,然后通過執(zhí)行字節(jié)碼文件響應(yīng)客戶的請求,這個(gè)字節(jié)碼文件的任務(wù)如下。
• 把 JSP 頁面中普通的 HTML 標(biāo)記符號交給客戶的瀏覽器執(zhí)行并顯示。
• JSP 標(biāo)簽、數(shù)據(jù)和方法聲明、Java 程序段由服務(wù)器負(fù)責(zé)執(zhí)行,將需要顯示的結(jié)果發(fā)送給客戶的瀏覽器。
• Java 表達(dá)式由服務(wù)器負(fù)責(zé)計(jì)算,并將結(jié)果轉(zhuǎn)化為字符串,然后交給客戶的瀏覽器負(fù)責(zé)顯示。
Java Server Pages(JSP)能夠分離頁面的靜態(tài) HTML 和動(dòng)態(tài)部分。HTML 可以用任何通常使用的 Web 制作工具編寫,編寫方式也和原來的一樣;動(dòng)態(tài)部分的代碼放入特殊標(biāo)記之內(nèi),大部分以“<%”開始,以“%>”結(jié)束。
例如,下面是一個(gè) JSP 頁面的片斷,如果用http://host/test.jsp?title=Core+Web+Programming 這個(gè) URL 打開該頁面,則結(jié)果顯示 “Thanks for ordering Core Web Programming”。 test.jsp 源程序如下:
Thanks for ordering
<i><%= request.getParameter("title") %></i>
JSP 頁面文件通常以 .jsp 為擴(kuò)展名,而且可以安裝到任何能夠存放普通 Web 頁面的地方。雖然從代碼編寫來看,JSP 頁面更像普通 Web 頁面而不像 Servlet,但實(shí)際上,JSP 最終會(huì)被轉(zhuǎn)換成正規(guī)的 Servlet,靜態(tài) HTML 直接輸出到和 Servlet service 方法關(guān)聯(lián)的輸出流。
JSP 到 Servlet 的轉(zhuǎn)換過程一般在出現(xiàn)第一次頁面請求時(shí)進(jìn)行。因此,如果希望第一個(gè)用戶不會(huì)由于 JSP 頁面轉(zhuǎn)換成 Servlet 而等待太長的時(shí)間,并且希望確保 Servlet 已經(jīng)正確地編譯并裝載,你可以在安裝 JSP 頁面之后自己請求這個(gè)頁面,這樣 JSP 頁面就轉(zhuǎn)換成 Servlet 了。
另外也請注意,許多 Web 服務(wù)器允許定義別名,所以一個(gè)看起來指向 HTML 文件的 URL 實(shí)際上可能指向 Servlet 或 JSP 頁面。
除了普通 HTML 代碼之外,嵌入 JSP 頁面的其他成分主要有三種:腳本元素(Scripting Element)、指令(Directive)和動(dòng)作(Action)。
腳本元素用來嵌入 Java 代碼,這些 Java 代碼將成為轉(zhuǎn)換得到的 Servlet 的一部分;JSP 指令用來從整體上控制 Servlet 的結(jié)構(gòu);動(dòng)作用來引入現(xiàn)有的組件或者控制 JSP 引擎的行為。為了簡化腳本元素,JSP 定義了一組可以直接使用的變量(預(yù)定義變量)。