糯米文學吧

位置:首頁 > 計算機 > java語言

JSP內置對象及EL表達式使用

java語言4.38K

在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值.

標籤:JSP EL 內置 表達式