欧美日韩不卡一区二区三区,www.蜜臀.com,高清国产一区二区三区四区五区,欧美日韩三级视频,欧美性综合,精品国产91久久久久久,99a精品视频在线观看

java語言

JSP內(nèi)置對象及EL表達式使用

時間:2025-01-24 09:27:52 java語言 我要投稿
  • 相關(guān)推薦

JSP內(nèi)置對象及EL表達式使用

  在JSP內(nèi)置對象及EL表達式時我們通常會遇到一些棘手的問題,下面小編給大家提供了JSP內(nèi)置對象及EL表達式使用,大家可以參考閱讀,更多詳情請關(guān)注應(yīng)屆畢業(yè)生考試網(wǎng)。

  JSP 的內(nèi)置對象是為了方便, 開發(fā) JSP 的時候,把一些對象設(shè)置為內(nèi)置對象,開發(fā)者在 JSP 頁面編程的時候不必聲明這些對象就能直接使用。

  本文我們具體講解一下Jsp內(nèi)置對象及EL表達式的使用。

  一、JSP的內(nèi)置對象(9個JSP內(nèi)置對象)

  JSP的內(nèi)置對象引用名稱   對應(yīng)的類型

  request      HttpServletRequest

  response         HttpServletResponse

  session      HttpSession(有開關(guān)的:page指令的session屬性的取值)

  application    ServletContext

  config       ServletConfig

  page        this(當前Servlet對象)

  exception     java.lang.Throwable(有開關(guān):page指令的isErrorPage屬性改為true)

  out        JspWriter

  pageContext    javax.servlet.jsp.PageContext非常重要

  pageContext對象有三大作用:

  1、本身是一個域?qū)ο,表示的域范圍是本頁面?/strong>

  同時還能操作其他三個域?qū)ο螅≒ageContext ,ServletRequest, HttpSession,ServletContext)

  設(shè)置屬性:

  void setAttribute(String name,Object value)

  void removeAttribute(String name)

  Object getAttribute(String name)

  操作其他的三個域?qū)ο,設(shè)置屬性:

  void setAttribute(String name,Object value,int scope)

  void removeAttribute(String name,int scope)

  Object getAttribute(String name,int scope)

  參數(shù)int scope是由PageContext類提供的靜態(tài)變量規(guī)定的。

  PageContext.PAGE_SCOPE:頁面范圍(是PageContext本身中的那個Map,代號page)

  PageContext.REQUEST_SCOPE:請求范圍(是ServletRequest中的那個Map,代號request)

  PageContext.SESSION_SCOPE:請求范圍(是HttpSession中的那個Map,代號session)

  PageContext.APPLICATION_SCOPE:請求范圍(是ServletContext中的那個Map,代號application)

  Object findAttribute(String name):依次按照page,request, session ,application范圍搜索指定名稱的對象,找到為止。

  EL表達式便是調(diào)用了此方法(非常有用)

  2、獲取其他8個隱式對象

  3、提供了轉(zhuǎn)發(fā)和包含的方便方法

  若不用pageContext對象:

  RequestDispatcher rd = request.getRequestDispatcher("/url");

  rd.forward(request,response);

  用pageContext對象:

  pageContext.forward("url");

  pageContext.include("url");

  四大域?qū)ο?兩個資源之間互傳數(shù)據(jù))

  JSP中隱式對象的名稱  范圍名稱  具體的類型

  pageContext    page    javax.servlet.jsp.PageContext

  request      request  javax.servlet.ServletRequest

  session     session  javax.servlet.http.HttpSession

  application    application  javax.servlet.ServletContext (如果使用,必須同步處理)

  二、EL表達式

  它只是JSP中的表達式,不是一種開發(fā)語言。

  基本語法:${EL表達式}

  1. 獲取數(shù)據(jù)

  EL表達式只能獲取四大域中的數(shù)據(jù)。

  EL表達式獲取的對象如果是null,頁面不會顯示數(shù)據(jù)。因此,EL表達式中永遠不會出現(xiàn)空指針異常

  "."運算符:

  ${p.name}:調(diào)用域中名稱為p對象的getName方法,點運算符是用于獲取屬性的取值的。

  []運算符:

  (.運算符能做的,[]也能做。[]能做的,.不一定能做)

  比如${p.name}===${p['name']}==${p["name"]}

  優(yōu)秀在可以取不符合Java命名規(guī)范的東東。

  2. 數(shù)學邏輯運算:

  empty運算符:

  如果判斷的對象是null或者空字符串,都返回true。

  對于集合,即使集合對象本身不是null,沒有任何元素,也返回true。

  EL表達式不支持字符串連接操作。

  三、EL內(nèi)置對象(11大EL內(nèi)置對象)

  獲取JSP的內(nèi)置對象(11大EL內(nèi)置對象):難點,不要與JSP的內(nèi)置對象和范圍名稱搞混

  11大EL隱式對象中,其中一個是表示自身對象外,其余都是表示的Map結(jié)構(gòu)

  EL隱式對象名稱     Java類型              備注

  pageContext    javax.servlet.jsp.PageContext   與JSP中的內(nèi)置對象完全相同

  剩余的都是代表的Map集合

  pageScope    java.util.Map   代表著PageContext頁面范圍域那個Map

  requestScope    java.util.Map   代表著ServletRequest請求范圍域那個Map

  sessionScope   java.util.Map   代表著HttpSession會話范圍域那個Map

  applicationScope    java.util.Map   代表著ServletContext應(yīng)用范圍域那個Map

  param       java.util.Map   代表著請求參數(shù)。key:請求參數(shù)的名稱。value:請求參數(shù)的值,它是一個字符串。

  paramValues   java.util.Map   代表著請求參數(shù)。key:請求參數(shù)的名稱。value:請求參數(shù)的值,它是一個字符串數(shù)組。

  header      java.util.Map  代表著請求消息頭。key:頭名稱。value:頭值,它是一個字符串。

  headerValues   java.util.Map   代表著請求消息頭。key:頭名稱。value:頭值,它是一個字符串數(shù)組。

  cookie     java.util.Map  代表客戶端提交的Cookie的Map。key:cookie的name。value:cookie對象本身

  initParam   java.util.Map   代表著全局初始化參數(shù)(web.xml中context-param).key:參數(shù)名稱。value:參數(shù)值

  EL表達式與JSP內(nèi)置對象問題

  問:

  ${pageContex.request}和${request}有區(qū)別嗎?這里的request都是HttpServletRequest類嗎?

  我在Action中有request.setAttribute("key",key);

  key變量是集合時在jsp用${key}能拿到,但是key是個字符串時${key}就是null,為什么呢?

  還有Attribute和Parameter有什么區(qū)別?可以分別有同名的嗎?(比如Parameter中有個"key",Attribute也有個"key")

  可以的話,EL中區(qū)分嗎?先找哪個?

  回復(fù)一:

  有區(qū)別吧

  request對象有若干個內(nèi)部信息,其中一個是attribute(key, value)隊列。

  ${pageContex.request}表示的是request對象本身,能取得request的所有信息。

  ${request}表示的是request對象內(nèi)部的attribute(key, value)隊列,只能取得該隊列內(nèi)的信息

  回復(fù)二:

  key變量是集合時在jsp用${key}能拿到,但是key是個字符串時${key}就是null,為什么呢?

  你在頁面<%request.getparameter(‘key’)>可以取到!

  Attribute和Parameter有什么區(qū)別:

  getParameter(String name)獲得客戶端傳送給服務(wù)器的參數(shù)值,該參數(shù)是由name指定的,通常是表單中的參數(shù).

  getAttribute(String name):返回有name 指定的屬性值,如果指定的屬性值不存在,則會返回一個null值.

【JSP內(nèi)置對象及EL表達式使用】相關(guān)文章:

JSP中九大內(nèi)置對象06-03

JSP中9個隱含對象09-10

如何使用JSP來發(fā)送郵件07-04

Word 2013如何使用內(nèi)置的主題和樣式集08-05

java對象持久化的使用技巧09-23

在PHP中使用正則表達式進行查找替換11-05

jsp試題及答案05-07

JSP的基礎(chǔ)原理05-30

PHP內(nèi)置函數(shù)有哪些11-04