【正文】
tion” 對象則代表了 JSP文件運行時所產(chǎn)生的例外對象 , 此對象不能在一般 JSP文件中直接使用 , 而 只 能 在 使 用 了 “ %@ page isErrorPage=true %”的 JSP文件中使用 程序 4- 35: %@ page contentType=text/html。charset=gb2312% html headtitleapplication對象示例 /titlehead body % (Java Servlet API Version +() +.+ ()+br)。 (39。s MIME type is:+() +br)。 (URL of 39。39。 is: + (/)+br)。 (getServerInfo()=+()+br)。 (())。 (Add a Record to log_file)。 % /body /html 程序 4- 36: %@ page contentType=text/html。charset=gb2312% !DOCTYPE HTML PUBLIC - //w3c//dtd html transitional//en html head title網(wǎng)頁計數(shù)器 /title /head body % if ((counter)= =null) (counter,1)。 else{ String times=null。 times=(counter).toString()。 int icount=0。 icount=(times).intValue()。 icount++。 (counter,(icount))。 } % 您是第 %=(counter)%位訪問者! /body /html 任何一個 Java對象都有其作用域范圍, JSP的內(nèi)置對象也不例外。歸納起來,共有四種范圍: ( 1) page。 page范圍內(nèi)的對象僅在 JSP頁面范圍內(nèi)有效。超出 JSP頁面范圍,則對象無法獲取。 ( 2) request??蛻粝蚍掌靼l(fā)起的請求稱為 request(請求)。由于采用 jsp:forward和 ()等重定位計數(shù),客戶端發(fā)起的 request請求可以跨越若干個頁面。因此定義為 request范圍的 JSP內(nèi)置對象可以在 request范圍內(nèi)的若干個頁面內(nèi)有效。 ( 3) session??蛻舳伺c服務器的交互過程,稱為 session(會話)。在客戶端與服務器的交互過程中,可以發(fā)起多次請求,一個 session可以包含若干個 request。定義為 session范圍的 JSP內(nèi)置對象可以跨越若干個 request范圍有效。 ( 4) application。部署在服務器上的 Web應用程序與所有客戶端的的交互過程,稱為 application。一個 application可以包含若干個 session。定義為 application范圍的 JSP內(nèi)置對象可以跨越若干個 session范圍有效。 J S P 內(nèi)置對象 類型 作用范圍 r e qu e s t j a va x. s e r vl e t . s e r vl e t R e qu e s t r e qu e s t r e s po ns e j a va x. s e r vl e t . s e r vl e t R e s po ns e pa ge s e s s i on j a va . s e r vl e t . ht t p. H t t ps e s s i on s e s s i on a pp l i c a t i on j a va . s e r vl e t . s e r vl e t C on t e xt a pp l i c a t i on pa ge j a va . l a ng . O bj e c t pa ge O ut j a va . s e r vl e t . j s p. J s pW r i t e r pa ge pa ge c on t e xt j a va . s e r vl e t . j s p. P a ge C on t e xt pa ge C on f i g j a va . s e r vl e t . s e r vl e t C on f i g pa ge e xc e pt i on j a va . l a ng . t hr ow a bl e pa ge 一. JSP工作原理 二. JSP腳本元素 三. JSP指令元素 四. JSP動作組件 五. JSP內(nèi)置對象 六. 表達式語言 √ ? 表達式語言( Expression Language, EL)。 ? 與 JSP腳本相比, EL提供了一種更加簡化的方式來生成動態(tài) Web頁面。 ? EL的基本語法如下: ${expr} ? 其中, $為 EL語法中的輸出符號, expr 為 EL有效表達式,它包含在一對括號內(nèi)。 EL有效表達式可以包含文字、操作符、變量(對象引用)和函數(shù)調(diào)用等。 內(nèi)容類型 合法取值 Boolean true 和 false Integer 與 Java 類似。可以包含任何正數(shù)或負數(shù),例如 2 4567 Floating Point 與 Java 類似??梢园魏握幕蜇摰母↑c數(shù),例如 、 String 任何由單引號或雙引號限定的字符串。對于單引號、雙引號和反斜杠,使用反斜杠字符作為轉(zhuǎn)義序列。必須注意,如果在字符串兩端使用雙引號,則單引號不需要轉(zhuǎn)義。 Null null EL有效表達式支持的內(nèi)容類型 術語 定義 算術型 +、 (二元)、 *、 /、 div、 %、 mod、 (一元) 邏輯型 and、 amp。amp。、 or、 ||、 !、 not 關系型 ==、 eq、 !=、 ne、 gt、 =、 le、 =、 ge??梢耘c其他值進行比較,或與布爾型、字符串型、整型或浮點型文字進行比較。 空 空操作符是前綴操作,可用于確定值是否為空。 條件型 A ?B :C。根據(jù) A 賦值的結果來賦值 B 或 C。 EL有效表達式支持的操作符 ? 程序 4- 40: ? %@page contentType=text/html% ? %@page pageEncoding=UTF8% ? html ? head ? meta equiv=ContentType content=text/html。 charset=UTF8 ? titleEL有效表達式 /title ? /head ? body ? ${true} ? br ? ${23+} ? br ? ${1210} ? br ? ${(1210)amp。amp。(a!=b)} ? /body ? /html ? 說明: , EL可以應用在 JSP頁面的模版文本中,也可以作為 JSP標記的動態(tài)屬性。它唯一不能使用的場合就是 JSP的腳本元素內(nèi)部。 類別 標識符 描述 JSP pageContext JSP 頁的上下文。 作用域 pageScope 與 page作用域的屬性的名稱和值相關聯(lián)的 Map 類 requestScope 與 request作用域的屬性的名稱和值相關聯(lián)的 Map 類 sessionScope 與 session作用域的屬性的名稱和值相關聯(lián)的 Map 類 applicationScope 與 application作用域的屬性的名稱和值相關聯(lián)的 Map 類 請求參數(shù) param 存儲請求參數(shù)名稱-值對的 Map 類。 paramValues 將請求參數(shù)的所有值作為 String 數(shù)組存儲的 Map 類 請求頭 header 按名稱存儲請求頭部主要值的 Map 類 headerValues 將請求頭部的所有值作為 String 數(shù)組存儲的 Map 類 Cookie cookie 按名稱存儲請求附帶的 cookie 的 Map 類 初始化參數(shù) initParam 按名稱存儲 Web 應用程序上下文初始化參數(shù)的 Map 類 EL支持的隱式對象 ? 注意:不要將上述隱式對象與 JSP 內(nèi)置對象混淆,其中只有一個對象 pageContext是它們所共有的。 ? 說明:盡管 JSP 和 EL 隱式對象中只有一個公共對象( pageContext ),但通過 EL 也可以訪問其它 JSP 隱式對象。原因是 pageContext 擁有訪問所有其它八個 JSP 隱式對象的功能。 ? EL 提供了兩種不同的存取器 :點運算符( . )和方括號運算符( [] )。 ? 點運算符通常用于訪問對象的屬性。 ? 方括號運算符用來檢索數(shù)組和集合的元素。 ? 程序 4- 41: ? %@page contentType=text/html% ? %@page pageEncoding=UTF8% ? %@ page import=.* % ? % ? HashMap values = new HashMap()。 ? (money, 滬指今日大漲 200點! )。 ? (熱點 , 嫦娥一號發(fā)回第一幅月球照片! )。 ? (奧運 , 奧運會準備一切就緒! )。 ? String newscolor=blue。 ? (news,values)。 ? (color,newscolor)。 ? % ? html ? head ? meta equiv=ContentType content=text/html。 charset=UTF8 ? titleEL表達式的存取符和隱含對象 /title ? /head ? body ? h1 Hello ${}!/h1 ? font color=${} ? h3 ? 財經(jīng): ${}br ? 熱點: ${ }br ? 奧運: ${[奧運 ]}br ? 其它: ${} ? /h3/font ? /body ? /html