JSP內置對象及EL表達式使用
在JSP內置對象及EL表達式時我們通常會遇到一些棘手的問題,下面小編給大家提供了JSP內置對象及EL表達式使用,大家可以參考閲讀,更多詳情請關注應屆畢業生考試網。
JSP 的內置對象是為了方便, 開發 JSP 的時候,把一些對象設置為內置對象,開發者在 JSP 頁面編程的時候不必聲明這些對象就能直接使用。
本文我們具體講解一下Jsp內置對象及EL表達式的使用。
一、JSP的內置對象(9個JSP內置對象)
JSP的內置對象引用名稱 對應的類型
request HttpServletRequest
response HttpServletResponse
session HttpSession(有開關的:page指令的session屬性的取值)
application ServletContext
config ServletConfig
page this(當前Servlet對象)
exception wable(有開關:page指令的isErrorPage屬性改為true)
out JspWriter
pageContext Context非常重要
pageContext對象有三大作用:
1、本身是一個域對象,表示的域範圍是本頁面。
同時還能操作其他三個域對象(PageContext ,ServletRequest, HttpSession,ServletContext)
設置屬性:
void setAttribute(String name,Object value)
void removeAttribute(String name)
Object getAttribute(String name)
操作其他的三個域對象,設置屬性:
void setAttribute(String name,Object value,int scope)
void removeAttribute(String name,int scope)
Object getAttribute(String name,int scope)
參數int scope是由PageContext類提供的靜態變量規定的。
_SCOPE:頁面範圍(是PageContext本身中的那個Map,代號page)
EST_SCOPE:請求範圍(是ServletRequest中的那個Map,代號request)
ION_SCOPE:請求範圍(是HttpSession中的那個Map,代號session)
ICATION_SCOPE:請求範圍(是ServletContext中的那個Map,代號application)
Object findAttribute(String name):依次按照page,request, session ,application範圍搜索指定名稱的對象,找到為止。
EL表達式便是調用了此方法(非常有用)
2、獲取其他8個隱式對象
3、提供了轉發和包含的方便方法
若不用pageContext對象:
RequestDispatcher rd = equestDispatcher("/url");
ard(request,response);
用pageContext對象:
ard("url");
ude("url");
四大域對象(兩個資源之間互傳數據)
JSP中隱式對象的名稱 範圍名稱 具體的類型
pageContext page Context
request request letRequest
session session Session
application application letContext (如果使用,必須同步處理)
二、EL表達式
它只是JSP中的表達式,不是一種開發語言。
基本語法:${EL表達式}
1. 獲取數據
EL表達式只能獲取四大域中的數據。
EL表達式獲取的對象如果是null,頁面不會顯示數據。因此,EL表達式中永遠不會出現空指針異常
"."運算符:
${}:調用域中名稱為p對象的getName方法,點運算符是用於獲取屬性的取值的。
[]運算符:
(.運算符能做的,[]也能做。[]能做的,.不一定能做)
比如${}===${p['name']}==${p["name"]}
優秀在可以取不符合Java命名規範的東東。
2. 數學邏輯運算:
empty運算符:
如果判斷的對象是null或者空字符串,都返回true。
對於集合,即使集合對象本身不是null,沒有任何元素,也返回true。
EL表達式不支持字符串連接操作。
三、EL內置對象(11大EL內置對象)
獲取JSP的內置對象(11大EL內置對象):難點,不要與JSP的內置對象和範圍名稱搞混
11大EL隱式對象中,其中一個是表示自身對象外,其餘都是表示的Map結構
EL隱式對象名稱 Java類型 備註
pageContext Context 與JSP中的內置對象完全相同
剩餘的都是代表的集合
pageScope 代表着PageContext頁面範圍域那個Map
requestScope 代表着ServletRequest請求範圍域那個Map
sessionScope 代表着HttpSession會話範圍域那個Map
applicationScope 代表着ServletContext應用範圍域那個Map
param 代表着請求參數。key:請求參數的名稱。value:請求參數的值,它是一個字符串。
paramValues 代表着請求參數。key:請求參數的名稱。value:請求參數的值,它是一個字符串數組。
header 代表着請求消息頭。key:頭名稱。value:頭值,它是一個字符串。
headerValues 代表着請求消息頭。key:頭名稱。value:頭值,它是一個字符串數組。
cookie 代表客户端提交的Cookie的Map。key:cookie的name。value:cookie對象本身
initParam 代表着全局初始化參數(中context-param):參數名稱。value:參數值
EL表達式與JSP內置對象問題
問:
${est}和${request}有區別嗎?這裏的request都是HttpServletRequest類嗎?
我在Action中有ttribute("key",key);
key變量是集合時在jsp用${key}能拿到,但是key是個字符串時${key}就是null,為什麼呢?
還有Attribute和Parameter有什麼區別?可以分別有同名的嗎?(比如Parameter中有個"key",Attribute也有個"key")
可以的話,EL中區分嗎?先找哪個?
回覆一:
有區別吧
request對象有若干個內部信息,其中一個是attribute(key, value)隊列。
${est}表示的是request對象本身,能取得request的所有信息。
${request}表示的是request對象內部的attribute(key, value)隊列,只能取得該隊列內的信息
回覆二:
key變量是集合時在jsp用${key}能拿到,但是key是個字符串時${key}就是null,為什麼呢?
你在頁面<%arameter(‘key’)>可以取到!
Attribute和Parameter有什麼區別:
getParameter(String name)獲得客户端傳送給服務器的參數值,該參數是由name指定的,通常是表單中的參數.
getAttribute(String name):返回有name 指定的屬性值,如果指定的屬性值不存在,則會返回一個null值.
-
計算機二級Java備考習題及答案
練習可以幫助我們加深對知識的記憶和理解,下面是本站小編整理的2017計算機二級Java備考練習題及答案,歡迎學習!備考練習題一1、下列敍述中,錯誤的是______。A、Applet的默認佈局管理器是FlowLayoutB、JApplet中增加構件是加到JApplet的內容面板上,不是直接加到JApp...
-
2017上半年計算機二級Java練習題及答案
計算機等級證書是我們找工作的敲門磚,現在越來越多人重視計算機等級考試。下面是本站小編為大家帶來的2017上半年計算機二級Java練習題及答案,希望對大家的學習有幫助!一、單選題1、結構化程序設計主要強調的是______。A、程序的規模B、程序的易讀性C、程序的執...
-
講述java中enum的用法
本文實例講述了java中enum的用法。分享給大家供大家參考。具體分析如下:1.基本用法複製代碼代碼如下:enumDay{SUNDAY,MONDAY,TUESDAY,WENDSDAY,THURSDAY,FRIDAY,SATURDAY;}枚舉是常量,所以應該用大寫。2.枚舉是對象枚舉隱含地繼承了,所以它具有的.屬性和方法。遍...
-
java中JVM虛擬機內存模型詳細説明
以下是本站小編為大家收集的java中JVM虛擬機內存模型詳細説明內容,歡迎閲讀學習!JVM的內部結構如下圖:java中JVM虛擬機內存模型詳細説明-天涯草-天涯草一個優秀Java程序員,必須瞭解Java內存模型、GC工作原理,以及如何優化GC的性能、與GC進行有限的交互,有一些應用程...