九大內置對象
[if !supportLists]1、????????[endif]request對象
request 對象是 javax.servlet.httpServletRequest 類型的對象。該對
象代表了客戶端的請求信息柴钻,主要用于接受通過 HTTP 協(xié)議傳送到服務器的數據。
(包括頭信息. 系統(tǒng)信息. 請求方式以及請求參數等)性雄。request 對象的作用域為一次請求
[if !supportLists]2怀读、????????[endif]response對象
response 代表的是對客戶端的響應褐耳,主要是將 JSP 容器處理過的對象傳回
到客戶端迟赃。response 對象也具有作用域脯倒,它只在 JSP 頁面內有效。
[if !supportLists]3捺氢、????????[endif]session對象
session 對象是由服務器自動創(chuàng)建的與用戶請求相關的對象。服務器為每個用戶都生成一個 session 對象剪撬,用于保存該用戶的信息摄乒,跟蹤用戶的操作狀態(tài)。
session 對象內部使用 Map 類來保存數據残黑,因此保存數據的格式為
“Key/value”馍佑。 session 對象的 value 可以是復雜的對象類型,而不僅僅局限于字符串類型梨水。
[if !supportLists]4拭荤、????????[endif]application對象
application 對象可將信息保存在服務器中,直到服務器關閉疫诽,否則
application 對象中保存的信息會在整個應用中都有效舅世。
與 session 對象相比,application 對象生命周期更長奇徒,類似于系統(tǒng)的“全局變量”
[if !supportLists]5雏亚、????????[endif]out對象
out 對象用于在 Web 瀏覽器內輸出信息,并且管理應用服務器上的輸出緩
沖區(qū)摩钙。在使用 out 對象輸出數據時罢低,可以對數據緩沖區(qū)進行操作,及時清除緩沖區(qū)中的殘余數據胖笛,為其他的輸出讓出緩沖空間网持。待數據輸出完畢后,要及時關閉輸出流长踊。
[if !supportLists]6功舀、????????[endif]pageContext對象
pageContext 對象的作用是取得任何范圍的參數,通過它可以獲取 JSP
頁面的 out. request.
reponse. session. application 等對象之斯。
pageContext 對象的創(chuàng)建和初始化都是由容器來完成的日杈,在 JSP 頁面中可
以直接使用 pageContext 對象遣铝。
[if !supportLists]7、????????[endif]config對象
config 對象的主要作用是取得服務器的配置信息莉擒。通過 pageConext 對象
的getServletConfig() 方法可以獲取一個 config 對象酿炸。
當一個 Servlet 初始化時,容器把某些信息通過 config 對象傳遞給這個
Servlet涨冀。
開發(fā)者可以在web.xml 文件中為應用程序環(huán)境中的Servlet程序和JSP頁
面提供初始化參數填硕。
[if !supportLists]8、????????[endif]page對象
page 對象代表 JSP 本身鹿鳖,只有在 JSP 頁面內才是合法的扁眯。 page 隱含對
象本質上包含當前 Servlet 接口引用的變量,類似于 Java 編程中的 this 指針翅帜。
[if !supportLists]9姻檀、????????[endif]exception對象
exception 對象的作用是顯示異常信息,只有在包含 isErrorPage="true"
的頁面中才可以被使用涝滴,在一般的JSP 頁面中使用該對象將無法編譯 JSP 文件绣版。
excepation 對象和 Java 的所有對象一樣,都具有系統(tǒng)提供的繼承結構歼疮。
exception 對象幾乎定義了所有異常情況杂抽。
如果在 JSP 頁面中出現沒有捕獲到的異常,就會生成 exception 對象韩脏,并
把 exception 對象傳送到在 page 指令中設定的錯誤頁面中缩麸,然后在錯誤頁面中處理相應的 exception 對象。
EL表達式
EL(Expression
Language)是為了使 JSP 寫起來更加簡單赡矢。表達式語言的
靈感來自于 ECMAScript 和 XPath 表達式語言杭朱,它提供了在 JSP 中簡化表達式
的方法,讓 Jsp 的代碼更加簡化济竹。
語法結構非常簡單: ${expressio}
EL 表達式一般操作的都是域對象中的數據痕檬,操作不了局部變量。域對象的
概念在 JSP 中一共有四個:pageContext, request, session,
application送浊;范圍依次
是梦谜,本頁面,一次請求袭景,一次會話唁桩,整個應用程序。而 EL 默認的查找方式為
從小到大查找耸棒,找到即可荒澡。當域對象全 找完了還未找到則返回空字符串””。
當需要指定從某個特定的域對象中查找數據時可以使用四個域對象對應的
空間對象与殃,分別是:pageScope,
requestScope, sessionScope, applicationScope单山。
EL運算
使用 EL 表達式可以用來判斷集合中是否有元素 ${empty list}
List遍歷
<%
List<String> list = new
ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
request.setAttribute("list",
list);
%>
${empty list}
<br /> ${list[1] }
<br />
? 訪問 map
這里使用到了 el 的另一種取值方式[“”]
<%
Map map = new HashMap();
map.put("aaa", "111");
map.put("bbb", 2222);
map.put("ccc-a", 333);
request.setAttribute("map", map);
%>
${empty map} ${map.aaa }
<br /> ${map["bbb"]}
<br /> ${map["ccc-a"]}
? 做+ 碍现、- 、* 米奸、/( 也可以使用div? 來表示) 昼接、% 、==
注意:String 也使用==比較
page?范圍
page 范圍是通過 pageContext 對象設置的悴晰,之前研究過的 page 屬性范圍中使用的是
pageContext 進行屬性設置的慢睡,但是從 javax.servlet.jsp.PageContext 類中可以發(fā)現,有以下的
一種設置屬性的方法:
public void setAttribute(String name, Object
value, int scope)
在 PageContext 類中存在四個表示屬性范圍的常量铡溪,可以直接通過這些常量指定 scope:
pageContext.PAGE_SCOPE
pageContext.REQUEST_SCOPE
pageContext.SESSION_SCOPE
pageContext.APPLICATION_SCOPE
在其它頁面取值時漂辐,需要指定對應的作用域,或者通過 EL 表達式
<%=pageContext.getAttribute("a",pageContext.SESSION_SCOPE)
%>