




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、java面試筆試題:JSP中動態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?日期:2008-09-15來源:作者:志偉I 動態(tài) I NC LU DE 用 js p :i nc lu de 動 作實 現(xiàn) <js p :i nc lu de pag e ="i nc lud ed.js p" fl us h =" tr ue" /> 它 總是會檢查所含文件中的變化,適合用于包含動態(tài)頁面,并且可以帶參數(shù).靜態(tài)I N C LU DE用inc lu de偽碼實現(xiàn),定不會檢查所含文件的變化,適用于包含靜態(tài)頁面<% i nc lu de fil e =
2、 "i nc lu ded.ht m" % >下面非常詳 細地解 析了有 關JSP動態(tài)I NC LU DE和靜態(tài)IN CLU DE的使 用方法 及其區(qū) 別:我們都知道 在js p中inc l ude有兩種形式,分別是<% i nc lu de file =""% ><js p:i nc lu de p age ="" flus h ="t rue" />前者是指令元素、后者是行為元素.具體它們將在何處用?如何用及它們有什么區(qū)別?這應該是很多人看到它都 會想到的問題.下面一起來看看吧.通
3、常當應用程序中所有的頁面的某些部分(例如標題、頁腳和導航欄)都相同的時候,我們就可以考慮用inc l ude.具體在 哪些時 候用 <% inc lud e file =""% >,哪 些 時候 用 <js p :i nc lu de p age ="" flus h ="t rue" />.這 種形式.首先要明白的是它們之間的區(qū)別.只有了解了它們用法的不同才理解該在何時去用以及如何選擇.<% i nc lu de file =""% >,js p的inc l ude指令元素讀入
4、指定頁面的內容.并把這些內容和原來的頁面融合到一起.(這個過程是在翻譯階段:也就是js p被轉化成s e rvlet的階段進行的.這里對翻譯階段進行一下說明:我們知道,js p頁面不能原封不動地被傳送給瀏覽器,所有的js p元素都必須首 先由服務器進行處理.這是通過將js p頁面轉達化成se rvle t,然后 執(zhí)行這 個servl et來完成的.服務器 需要一個js p容器 來處理js p頁面.js p容器通 常以se rvlet的形式 來實現(xiàn),這個se rvl et經(jīng)過配置,可以處 理對js p頁面 的所有 請求.Js p容器負責將js p頁面轉化成serv let (稱為js p頁面實現(xiàn)
5、類?JSP P age im ple me nta tio n c las s),并編譯這個ser vlet.這兩步就構成了翻譯階段.由此我們就會知道:js p頁面是把i nc lu de指令元素所指定的頁面的實際內容(也就是代碼段)加入到引入它的js p 頁 面中 , 合成一 個 文件 后被 js p 容器 將它 轉 化 成 servl et. 可以 看 到這 時會產(chǎn) 生 一個 臨 時 clas s 文 件 和一 個 jav a 文 件. 下面舉個例 子.服務器用to me at ,引入頁面的js p文件叫t es t.js p.被引入的頁面叫d ate.js p.這個js p文件里存放的是
6、一個有關時間的js p代碼,當前的上下 文根設 為tes t/=da te.js p 的 源 文件/<% p agelan g uage =" java" co nte ntT yp e ="te xt /h tml ;c ha rs et =gb2 3 12"% ><%java.util.Date da te =ne wjava.uti l.Date ();St ri ngdatc n =""St ri ngdateSt rs witch(date.getDay ()as0 :date=" 日"
7、 ;reak;as1 :datereak;as2 :datereak;as3 :date=" 三 " ;reak;as4 :date=" 四 " ;reak;as5 :date=" 五 " ;reak;as6 :date=" 六" ;reak;d ateS tr(1 9 00 +dat e.ge tY ear () + " 年 " + (date.ge tM ont h ()+1 ) + " 月" + da te.getDa te ()日 ( 星期 " + da t
8、e_c n + " )" ;%> d oc u men t.writ e(" <% =da teSt r% >" );/= = 以 下 是 tes t.js p 的 源文 件 = = =/<% p age lan g uage =" java" co nte ntT yp e ="te xt /h tml ;c ha rs et =gb2 3 1 2"% ><h tml ><h ea d><t itl e >i nc lude 的 兩種 用 法 &l
9、t;/t itle ><js p:i nc lu de p age ="da te.js p" fl us h="t r ue" /><% - inc lud e file =" da te.js p" % - >/ 我們在這 里用 inc lude 的兩 種不同形式來引入 dat e.js p 這個文件.<h ea d><b od y ><t abl e><tr ><t d >有 關 js p 中 i nc lude 的 兩種 用 法 . 敬
10、請 關注</t d ></tr ></t abl e ></b od y ></h t ml >在 tes t.js p 文 件 中 , 我 們 只輸 出 了一 行 文本 " 有關 js p 中 inc lu de 的 兩 種用 法 . 敬 請關 注 ." , 現(xiàn)在 讓 我們 先 用<% i nclu de fil e ="d ate.js p" % > 這種 形 式引 入 d ate.js p 這 個 文件 . 你 想 會出 現(xiàn) 什么 問 題了 嗎 ?此 時 出現(xiàn) 了 錯誤 提 示
11、:H TT P Sta tus 5 0 0 ?o rg.apac he.jas pe r.Jas pe rE xc ept io n: /dat e.js p(0 ,0 ) Page dir ec tive : c an 't have m ulti ple oc cu r r enc es o f cont en tT ype以下還有一 堆錯誤,但我們只要看這里就知道問題的所在了.狀態(tài)碼為 htt p 500 服務器內部錯 誤.再看下面的 提 示 . 在 d ate.js p 頁 面 中不 能 指定 多個 c onte ntT yp e.原因就在這里了 是因為在翻譯階段,date.j
12、s p文件的代碼被原封不動 地加入到了 t es t.js p頁面從而合成一個 文件.合成后 的文件 中就會 相同的 :<% p age lan g uage =" java"co nte ntT yp e ="te xt /h tml ;c ha rs et =gb2 3 1 2"% >這句代碼.解決的辦法是把 date.jsp 文件中的這句刪掉.刷新后再請求 test.js p 頁面請 求 tes t.js p 在頁 面 顯示 如 下2 0 03 年 12 月 10 日 1 3:1 2 :4 0有關 js p 中 inc lude 的 兩
13、種 用 法 .敬 請 關注 .這時我們還 不能發(fā)現(xiàn)什么 .還是去查看 tomcat 下的臨時 文件吧.到那里去看看 date.js p 文件的內容是否已被 加 入 到了 tes t.js p 文件中 .< 注 . 此 處 的 to mc at 裝在 E 盤根 目 錄下 >目錄E :to mc at wo rk S tan dal on eloc al hos t tes t.在這個目錄 下會看到tes t _js p.java 和 tes t_js p.c l ass 兩 個文 件 .這里的java 文件就是js p容器將js p轉化成了 se rvlet而得到的tes t_ js
14、 p.java 這個文件.相對 應的tes t_ js p.c las s這個文 件就是 編譯tes t_ js p.java 這個s ervl et文件 產(chǎn)生的 類文件了 .打開 所 產(chǎn)生 的 ser vlet 文件(tes t_ js p.java)此時 我們會 發(fā)現(xiàn),在t es t.js p文 件被 轉 化成se rvlet 文件時,在 輸出 的vhae d >之 間加 入了一些不是tes t.js p頁面里面的代碼,新加入的內容就是 dat e.js p里面的代碼:新加入了哪些內容或是否真的加入了 新的內容請自己測試去看一下就會一目了然了 .在這里不 再詳述.以上就是我 們用&l
15、t;% include file =" dat e.js p"% >這種形式 得到的 結果.下面我們換 用 <js p :i nc lu de p age 二"da e.js p" flus h ="t rue" /> 也就是將<% i nc lu de file ="da te.js p"% > 換成 <js p :inc l udepag e ="d ae.js p" fl us h ="t r ue" />, 然后 請求 tes
16、t.js p.2 0 03 ? e 1 2 ?10 ? 13:30:1 3有關 js p 中 i nc lude 的 兩種 用 法 .敬 請 關注 .此時會在頁 面上看見.我們所引入 date.js p 輸出 的日期中中文出現(xiàn)了 亂碼.什么原因?是因為 include 行為元 素是在請求 處理階段執(zhí)行的(此處 要對請 求處理階段進 行說明一下.Js p容器 除了上 面提到 的負責將js p頁面轉化成serv let外,還負責調用jsp頁面實現(xiàn)類以處理 每個請 求并產(chǎn)生應答.這個階 段我們 就稱為請求處理階段.請求處理階段 僅執(zhí)行 類文件).所以在我們 作inc lu de行為元素引入頁面時,實
17、際只是引用了 d ate.js p這個文件 被轉化 并被編 譯后產(chǎn)生的se rvlet類文件.既如此,da te.js p就是作為一個 單獨的 文件在執(zhí) 行后才 被tes t.js p文件運行 時調用.由于da te.js p文件 中沒有指定字符編碼.所以出現(xiàn)了 亂碼.解決辦法是在 date.js p 文件中重新把剛才去掉的<% page lan guage =" java" conte ntT ype="te xt/h tml ;cha rset=gb2 312"% >這行語句加 入后刷新重新 運行.此時頁面顯示正確,并跟用 include
18、 指令正常運行時一樣.再查看 tomcat 下的 臨時文件會 發(fā)現(xiàn).此時多出了 一個 da te_ js p.java 文件和一個da te _ js p.c lass文件.這兩個文 件得來 的方式 跟tes t_ js p.java 和 tes t_js p.c lass 文件得 來的方 式一樣 .再查看 一下此時 tes t_jsp.java 文件 的代碼會發(fā)現(xiàn).此時只新增加了 一 句代碼:Js pR unt im eLib ra ry.i nc lu de (r eq ues t , res po ns e, "da te.js p" , out , tr ue );
19、 它并 沒有把 d ate.js p 文件 的代碼 加入到 tes t.js p.只是在運行 時引入了 da te.js p頁面 執(zhí)行后 所產(chǎn)生 的應答.這意味著我們可以指定任何能夠產(chǎn)生應答的Web資 源,(例如一個servlet或一個js p頁面),只要這些 資源所 產(chǎn)生的類型和js p頁面產(chǎn)生 的內容 類型相 同.JSP容器將通過一 個內部的函數(shù)調用來執(zhí)行指定的 資源.因此,這些被引入的 資源可 以幫助處理原 來的請 求,所以 這些資 源可以 訪問請求作 用域內的所有對象.以及所有原來 的請求參數(shù).由于在主頁 面被請求時,這些頁面還沒有被引入到主頁面中,所以你可以對 pa ge 屬性使用一
20、個請 求時屬性值, 以便根據(jù)運行時的情況來決定要引 入哪一個頁面.還可以 添加一 些將被 引入的 頁面讀取的請求參數(shù).<jsp:i nc lu depage="<% =p ageSelec te dA tRun ti me% >"flus h ="t r ue" ><jsp:p ar amname="fits tP ara mer" va lue =" fi rs tV alue" ><jsp:p ar amname="las tP ara mer" va lue ="las tV alue" ></js p :i nclu de >如果修改了 被引入的 jsp 頁面 ,那么可以 立刻使用該頁面的最新版本 ,這是因為對待被引入的頁面 的方式 與對 待由瀏覽器直接調用的 jsp 頁面 的方式完全相 同.即容 器檢測頁面的 變化,并自動進入翻譯階段,以得 到頁面 的最新版本.(注意,i nc lu de行為元素同js p其它元素一樣,沒有行為體時要以"/"結束.就像下面這樣.<js p:i nc lu de p age =" <% =p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西省上饒市2024-2025學年高一上學期1月期末英語試題【含答案】
- 江蘇省常州市2024-2025學年高三(上)期末生物試卷(含解析)
- 青貯池施工方案
- 排澇水系改造施工方案
- 生物觀察池施工方案
- co2加氫制甲醇總反應
- 4年級數(shù)學手抄報內容
- 地平關環(huán)機理
- 青海墻面防水施工方案
- 2025年廣西農業(yè)職業(yè)技術大學單招職業(yè)技能測試題庫匯編
- 2025口腔科年度工作計劃
- 商業(yè)辦公樓網(wǎng)絡改造施工方案
- 2024年中國主題公園競爭力評價報告-中國主題公園研究院
- 2023年湖北省生態(tài)環(huán)保有限公司招聘考試真題
- 化療藥物外滲的預防及處理-2
- DB35T 1933-2020 熔融沉積3D打印品幾何精度評價規(guī)范
- 《大氣污染物控制工程》-揮發(fā)性有機物污染控制
- 2024-2030年冷凍面團產(chǎn)品行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- LED基礎知識題庫100道及答案(完整版)
- 新版高中物理必做實驗目錄及器材-(電子版)
- 涉密項目保密工作方案
評論
0/150
提交評論