最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

EL表達(dá)式的隱式對(duì)象_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

 更新時(shí)間:2017年07月18日 11:10:20   作者:fjdingsd  
這篇文章主要介紹了EL表達(dá)式的隱式對(duì)象,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

在使用EL時(shí),其實(shí)EL是先看標(biāo)識(shí)符是否是其隱式對(duì)象之一,如果不是,才從四個(gè)域(page、request、session、application)中順序搜索(使用pageContext.findAttribute方法)。

EL總共有如下隱式對(duì)象:

而這里,EL和JSP一樣擁有pageContext對(duì)象,通過(guò)在EL中使用pageContext對(duì)象,能獲取JSP中其它幾個(gè)隱式對(duì)象,然后再獲得這些對(duì)象中的屬性。例如獲取當(dāng)前web工程的名稱(chēng)的經(jīng)典EL表達(dá)式:${ pageContext.request.contextPath },就是由pageContext先獲取request對(duì)象(因?yàn)樵贘SP的API中,我們可以看到pageContext有g(shù)etRequest方法),獲取到request對(duì)象后,因?yàn)閞equest中含有g(shù)etContextPath方法,因此我們還可以獲得request對(duì)象中contextPath屬性的值。

pageScope、requestScope、sessionScope、applicationScope這四個(gè)EL隱式對(duì)象分別代表了各自域中的Map對(duì)象(每個(gè)域以關(guān)鍵字來(lái)保存數(shù)據(jù)或?qū)ο?,肯定是使用Map集合),這Map對(duì)象保存了存在這些域中的鍵值對(duì)。通過(guò)EL表達(dá)式和這些隱式對(duì)象,我們可以直接從指定的域中獲取存儲(chǔ)的數(shù)據(jù)。

例1:

<%
      User u = new User();
      u.setUsername("fjdingsd");
      session.setAttribute("user", u);
   %>
 歡迎您:${sessionScope.user.username}

在瀏覽器中觀察:

對(duì)于用戶(hù)登錄這樣的案例來(lái)說(shuō),我們檢查用戶(hù)是否登錄肯定只需要從session域中查詢(xún),這樣使用EL表達(dá)式的sessionScope隱式對(duì)象就足夠了。

param隱式對(duì)象:表示所有請(qǐng)求參數(shù)的Map集合對(duì)象。例如表單提交,那么在請(qǐng)求參數(shù)中的數(shù)據(jù)就以鍵值對(duì)存儲(chǔ)在param對(duì)象所代表的Map集合中,下面的例子我以get方式來(lái)替代post方式來(lái)模擬表單請(qǐng)求參數(shù):

例2:

 ${param.username}

在地址欄上添加URL參數(shù),可以看到:

使用param隱式對(duì)象同樣也能作為數(shù)據(jù)回顯功能,在以前JSP頁(yè)面提交的表單如果想做出數(shù)據(jù)回顯功能,必須創(chuàng)建一個(gè)form的bean對(duì)象,當(dāng)表單校驗(yàn)失敗時(shí),重新將這個(gè)bean對(duì)象通過(guò)轉(zhuǎn)發(fā)(forward)傳回JSP頁(yè)面再取出。而使用param對(duì)象,不需要新建form的bean對(duì)象,只需要在表單校驗(yàn)失敗時(shí)轉(zhuǎn)發(fā)回表單所在的JSP頁(yè)面,通過(guò)param對(duì)象就可以從請(qǐng)求中取出之前的表單數(shù)據(jù)。

例3:表單驗(yàn)證失敗的數(shù)據(jù)回顯demo

在JSP頁(yè)面beantag.jsp中:

 <form action="${pageContext.request.contextPath}/servlet/FormHandler" method="post">
用戶(hù)名 <input type="text" name="username" value="${param.username}" />
<input type="submit" value="提交" >
</form>

在處理表單的Servlet中:

 //省略表單驗(yàn)證過(guò)程,驗(yàn)證失敗重新轉(zhuǎn)發(fā)到表單頁(yè)面
 request.getRequestDispatcher("/beantag.jsp").forward(request, response);

剛進(jìn)入表單注冊(cè)頁(yè)面:

假設(shè)表單驗(yàn)證失敗,則轉(zhuǎn)發(fā)請(qǐng)求到表單注冊(cè)頁(yè)面,并回顯數(shù)據(jù):

 paramValues隱式對(duì)象:也是表示一個(gè)保存所有的請(qǐng)求參數(shù)的Map集合對(duì)象,但是paramValues對(duì)象和param對(duì)象的區(qū)別是,對(duì)任何一個(gè)參數(shù),paramValues都是以字符串?dāng)?shù)組(String[])作為保存數(shù)據(jù)的類(lèi)型,因此paramValues對(duì)象適合在有同名參數(shù)的情況下使用。

例4:

 ${paramValues.name[0]}

瀏覽器中觀察:

例5:

${paramValues.name[1]}

瀏覽器中觀察:

header隱式對(duì)象:表示一個(gè)保存了該JSP頁(yè)面發(fā)出請(qǐng)求的請(qǐng)求頭字段的Map集合對(duì)象。

注意:這個(gè)對(duì)象只能獲取請(qǐng)求頭字段的信息,不能獲取響應(yīng)頭字段的信息。另外如果頭字段中含有小橫線(xiàn)的”-”,例如”Accept-Encoding”,則要使用中括號(hào)加引號(hào)的EL取數(shù)據(jù)形式,例如 ${ header[‘a(chǎn)ccept-encoding'] }。

例6:

${header.connection}

在瀏覽器中觀察:

例7:

${header['accept-encoding']}

在瀏覽器中觀察:

headerValues隱式對(duì)象功能類(lèi)似于header隱式對(duì)象,但以字符串?dāng)?shù)組封裝每個(gè)保存的請(qǐng)求頭字段信息,這點(diǎn)跟paramValues隱式對(duì)象是一樣的。     

cookie隱式對(duì)象:表示一個(gè)保存了該請(qǐng)求中所有的Cookie的Map集合對(duì)象。

假設(shè)在請(qǐng)求中有一個(gè)cookie,cookie的鍵值對(duì)為:

JSESSIONID=E9546AE9C86FB722BDBD7AF947157379

例8:

 ${cookie.JSESSIONID}

在瀏覽器中觀察:

可以看到,cookie隱式對(duì)象的名稱(chēng)(cookie)是Map集合的名稱(chēng),而在這個(gè)Map集合中,有一個(gè)鍵值對(duì)的key命名為JSESSIONID,而通過(guò)${cookie.JSESSIONID}獲取到的是一個(gè)Cookie對(duì)象,那么我們?nèi)绾潍@取該Cookie的值呢?

之前說(shuō)過(guò)EL表達(dá)式都是通過(guò)對(duì)象的具有的屬性來(lái)獲取屬性值,能被稱(chēng)為屬性的都有g(shù)etXXX方法,而Cookie正是具有g(shù)etName()方法和getValue()方法,因此在EL表達(dá)式中獲取了Cookie對(duì)象后可以再獲取這兩個(gè)屬性:

例9:

${cookie.JSESSIONID.name} <br>
${cookie.JSESSIONID.value}  <br> 

在瀏覽器中觀察:

initParam隱式對(duì)象:表示一個(gè)保存了所有web應(yīng)用初始化參數(shù)(context-param)的Map集合對(duì)象。

<context-param>標(biāo)簽用于配置全局性的web參數(shù),在Servlet中可以使用 ServletContext.getInitParameter方法獲取指定參數(shù)的值。

而在JSP頁(yè)面中,我們可以同EL表達(dá)式的initParam方法來(lái)獲取為web應(yīng)用配置的全局性參數(shù)。

例10:

在web.xml文件中配置:

 <context-param>

<param-name>username</param-name>

 <param-value>fjdingsd</param-value>

</context-param>

在JSP頁(yè)面中:

${initParam.username }

在瀏覽器中觀察:

相關(guān)文章

  • MyBatis實(shí)現(xiàn)兩種查詢(xún)樹(shù)形數(shù)據(jù)的方法詳解(嵌套結(jié)果集和遞歸查詢(xún))

    MyBatis實(shí)現(xiàn)兩種查詢(xún)樹(shù)形數(shù)據(jù)的方法詳解(嵌套結(jié)果集和遞歸查詢(xún))

    樹(shù)形結(jié)構(gòu)數(shù)據(jù)在開(kāi)發(fā)中十分常見(jiàn),比如:菜單數(shù)、組織樹(shù), 利用 MyBatis 提供嵌套查詢(xún)功能可以很方便地實(shí)現(xiàn)這個(gè)功能需求。本文主要介紹了兩種方法,感興趣的可以了解一下
    2021-09-09
  • Spring事務(wù)失效問(wèn)題分析及解決方案

    Spring事務(wù)失效問(wèn)題分析及解決方案

    這篇文章主要介紹了Spring事務(wù)失效問(wèn)題分析及解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Java通過(guò)BCrypt加密過(guò)程詳解

    Java通過(guò)BCrypt加密過(guò)程詳解

    這篇文章主要介紹了Java通過(guò)BCrypt加密過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • java線(xiàn)程同步操作實(shí)例詳解

    java線(xiàn)程同步操作實(shí)例詳解

    這篇文章主要介紹了java線(xiàn)程同步操作,結(jié)合實(shí)例形式分析了Java線(xiàn)程同步與鎖機(jī)制相關(guān)原理、操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-09-09
  • Maven添加reactor依賴(lài)失敗的解決方案

    Maven添加reactor依賴(lài)失敗的解決方案

    起初是自己在學(xué)spring boot3,結(jié)果到了reactor這一部分的時(shí)候,在項(xiàng)目的pom.xml文件中添加下列依賴(lài)報(bào)錯(cuò),接下來(lái)通過(guò)本文給大家介紹Maven添加reactor依賴(lài)失敗的解決方案,需要的朋友可以參考下
    2024-06-06
  • Spring中的模塊與應(yīng)用場(chǎng)景詳解

    Spring中的模塊與應(yīng)用場(chǎng)景詳解

    這篇文章主要介紹了Spring中的模塊與應(yīng)用場(chǎng)景詳解,Spring 框架可以為 Java 應(yīng)用程序開(kāi)發(fā)提供全面的基礎(chǔ)設(shè)施支持,它是現(xiàn)在非常流行的 Java 開(kāi)源框架,對(duì)于一個(gè) Java 開(kāi)發(fā)人員來(lái)說(shuō),熟練掌握 Spring 是必不可少的,需要的朋友可以參考下
    2023-09-09
  • Java下載遠(yuǎn)程服務(wù)器文件到本地(基于http協(xié)議和ssh2協(xié)議)

    Java下載遠(yuǎn)程服務(wù)器文件到本地(基于http協(xié)議和ssh2協(xié)議)

    這篇文章主要介紹了Java下載遠(yuǎn)程服務(wù)器文件到本地的方法(基于http協(xié)議和ssh2協(xié)議),幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-01-01
  • Java關(guān)于桶排序的知識(shí)點(diǎn)總結(jié)

    Java關(guān)于桶排序的知識(shí)點(diǎn)總結(jié)

    這篇文章給大家總結(jié)了關(guān)于JAVA中J桶排序的相關(guān)知識(shí)點(diǎn)和用法分享,有興趣的讀者跟著學(xué)習(xí)下。
    2018-04-04
  • 基于restTemplate遇到的編碼問(wèn)題及解決

    基于restTemplate遇到的編碼問(wèn)題及解決

    這篇文章主要介紹了restTemplate遇到的編碼問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java中為什么要實(shí)現(xiàn)Serializable序列化

    Java中為什么要實(shí)現(xiàn)Serializable序列化

    在Java編程中,Serializable序列化是一個(gè)常見(jiàn)的概念,它允許對(duì)象在網(wǎng)絡(luò)上傳輸或持久化到磁盤(pán)上,本文將深入探討為什么在Java中要實(shí)現(xiàn)Serializable序列化,并通過(guò)示例代碼來(lái)解釋其重要性
    2023-10-10

最新評(píng)論

永登县| 璧山县| 甘南县| 和林格尔县| 迁安市| 皋兰县| 南乐县| 商南县| 从化市| 林芝县| 宁武县| 牙克石市| 五华县| 云南省| 镇康县| 和静县| 临潭县| 大荔县| 金昌市| 兴国县| 绥宁县| 迁安市| 郧西县| 胶南市| 沁源县| 高雄市| 泸州市| 青川县| 海城市| 镇原县| 铅山县| 黎城县| 封丘县| 廊坊市| 九龙县| 南京市| 弥勒县| 萨迦县| 平乡县| 南阳市| 左贡县|