摘要:概念表達(dá)式全名為,就是為了替代腳本表達(dá)式。作用獲取數(shù)據(jù)表達(dá)式主要用于替換頁(yè)面中的腳本表達(dá)式,以從各種類(lèi)型的域中檢索對(duì)象獲取數(shù)據(jù)。調(diào)用方法表達(dá)式允許用戶(hù)開(kāi)發(fā)自定義函數(shù),以在頁(yè)面中通過(guò)表達(dá)式調(diào)用類(lèi)的方法。
概念
EL表達(dá)式:EL 全名為Expression Language,就是為了替代<%= %>腳本表達(dá)式。
作用獲取數(shù)據(jù):
EL表達(dá)式主要用于替換JSP頁(yè)面中的腳本表達(dá)式,以從各種類(lèi)型的web域中檢索java對(duì)象、獲取數(shù)據(jù)。(某個(gè)web域 中的對(duì)象,訪(fǎng)問(wèn)javabean的屬性、訪(fǎng)問(wèn)list集合、訪(fǎng)問(wèn)map集合、訪(fǎng)問(wèn)數(shù)組)
執(zhí)行運(yùn)算:
利用EL表達(dá)式可以在JSP頁(yè)面中執(zhí)行一些基本的關(guān)系運(yùn)算、邏輯運(yùn)算和算術(shù)運(yùn)算,以在JSP頁(yè)面中完成一些簡(jiǎn)單的邏輯運(yùn)算。${user==null}
獲取web開(kāi)發(fā)常用對(duì)象
EL 表達(dá)式定義了一些隱式對(duì)象,利用這些隱式對(duì)象,web開(kāi)發(fā)人員可以很輕松獲得對(duì)web常用對(duì)象的引用,從而獲得這些對(duì)象中的數(shù)據(jù)。
調(diào)用Java方法
EL表達(dá)式允許用戶(hù)開(kāi)發(fā)自定義EL函數(shù),以在JSP頁(yè)面中通過(guò)EL表達(dá)式調(diào)用Java類(lèi)的方法。
其實(shí)感覺(jué)這個(gè)地方是應(yīng)該會(huì)很好玩的!例如自定標(biāo)簽和自定義函數(shù)!
使用EL表達(dá)式獲取數(shù)據(jù)使用EL表達(dá)式獲取數(shù)據(jù)語(yǔ)法:“${標(biāo)識(shí)符}”
EL表達(dá)式語(yǔ)句在執(zhí)行時(shí),會(huì)調(diào)用pageContext.findAttribute方法,用標(biāo)識(shí)符為關(guān)鍵字,分別從page、request、session、application四個(gè)域中查找相應(yīng)的對(duì)象,找到則返回相應(yīng)對(duì)象,找不到則返回””
(注意,不是null,而是空字符串)。
示例:${user}
<%=((HttpServletRequest)pageContext.getRequest()).getContextPath() %> 在獲取后對(duì)象后要加括號(hào)才能繼續(xù)調(diào)用對(duì)象身上的方法
${pageContext.request.contextPath} 這個(gè)還是需要記憶下有用
EL表達(dá)式也可以很輕松獲取JavaBean的屬性或獲取數(shù)組、Collection、Map類(lèi)型集合的數(shù)據(jù),例如:
${strs[1]} //獲取數(shù)組中的元素 ${user.address.city}//鏈?zhǔn)讲僮鳙@取值 ${user.list[0]}:訪(fǎng)問(wèn)有序集合某個(gè)位置的元素 ${map.key} : 獲得map集合中指定key的值
EL表達(dá)式執(zhí)行運(yùn)算[重點(diǎn)中的重點(diǎn)]通過(guò)JSTL標(biāo)簽中的C標(biāo)簽的foreach進(jìn)行迭代,這個(gè)我們已經(jīng)做過(guò)了!
(1) 算數(shù)運(yùn)算:所有參與元算的元素都會(huì)被轉(zhuǎn)成數(shù)字,如果不能轉(zhuǎn)就報(bào)錯(cuò),空元素參與運(yùn)算當(dāng)作沒(méi)參與。 (2) 關(guān)系運(yùn)算:必須記憶下來(lái) == ---> eq 例如:${5==5}或${5 eq 5} != ---> ne < ---> lt > ---> gt <= ---> le >= ---> ge (3) **邏輯運(yùn)算:** && ---> and 例如:${A&&B}或${A and B} || ---> or ! ---> not (4) empty/not empty 判斷一個(gè)對(duì)象或集合或數(shù)組是否為null或長(zhǎng)度為0 (5) 條件表達(dá)式 ${user!= null ? user.name : "";//三元運(yùn)算符 (6) []和.號(hào)運(yùn)算符使用EL表達(dá)式獲得Web開(kāi)發(fā)常用對(duì)象
EL表達(dá)式語(yǔ)言中定義了 11個(gè)隱含對(duì)象 ,使用這些隱含對(duì)象可以很方便地獲取web開(kāi)發(fā)中的一些常見(jiàn)對(duì)象,并讀取這些對(duì)象的數(shù)據(jù)。
語(yǔ)法:${隱式對(duì)象名稱(chēng)} :獲得對(duì)象的引用
隱藏對(duì)象 | 描述 |
---|---|
pageContext | 代表pageContext對(duì)象,注意和pageScope進(jìn)行區(qū)分 |
pageScope | 代表page域,可以用來(lái)獲取page域中的屬性 |
reqeustScope | 代表reqeust域,可以用來(lái)獲取reqeust域中的屬性 |
sessionScope | 代表session域,可以用來(lái)獲取session域中的屬性 |
applicationScope | 代表application域,可以用來(lái)獲取application域中的屬性 |
param | 代表請(qǐng)求參數(shù)組成的map集合${param.userName} 相當(dāng)于 request.getParameter("userName") |
paramValues | 代表請(qǐng)求參宿組成的map集合,但是此集合的value是String[],用來(lái)獲取一名多值的param 相當(dāng)于 request.getParameterValues("userName") |
cookie | 獲取cookie組成的map對(duì)象,此map的值是一個(gè)cookie對(duì)象${cookie.cookieName.cookieValue} |
header | 獲取所有HTTP請(qǐng)求字段的map對(duì)象 |
headerValues | 同上,獲取請(qǐng)求頭組成的map,但是value是一個(gè)String[] |
initParam | 以map封裝的web.xml中配置的整個(gè)web應(yīng)用的初始化參數(shù) |
示例測(cè)試代碼:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%-- ${pageContext } ${pageScope } ${requestScope } ${sessionScope } ${applicationScope } --%> 獲取請(qǐng)求參數(shù) ${param.name }
獲取請(qǐng)求頭 <%= request.getHeader("Host") %> ${header.Host } ${header["Accept-Language"] }
el表達(dá)式獲取cookie信息
<% Cookie cookie = new Cookie("host","localhost"); response.addCookie(cookie); %> <% Cookie [] cs = request.getCookies(); if(cs!=null){ for(Cookie c : cs){ if("host".equals(c.getName())){ out.write(c.getValue()); } } } %>
cookie.host.value: ${cookie.host.value}
整個(gè)web應(yīng)用的初始化參數(shù)
<%= application.getInitParameter("data1") %>
initParam: ${initParam.data1 }
pageContext.request:${pageContext.request }
pageScope.request:${pageScope.request }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/65047.html
摘要:前言由于寫(xiě)的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 前言 由于寫(xiě)的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 由于更新比較頻繁,因此隔一段時(shí)間才會(huì)更新目錄導(dǎo)航哦~想要獲取最新原創(chuàng)的技術(shù)文章歡迎關(guān)注我的公眾號(hào):Java3y Java3y文章目錄導(dǎo)航 Java基礎(chǔ) 泛型就這么簡(jiǎn)單 注解就這么簡(jiǎn)單 Druid數(shù)據(jù)庫(kù)連接池...
摘要:前言月份開(kāi)始出沒(méi)社區(qū),現(xiàn)在差不多月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議那么今天我就把看過(guò)的一些學(xué)習(xí)資源主要是博客,博文推薦分享給大家。 1.前言 6月份開(kāi)始出沒(méi)社區(qū),現(xiàn)在差不多9月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了!一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議!那么今天我就...
摘要:擴(kuò)展及應(yīng)用介紹與區(qū)別介紹支持開(kāi)發(fā)者為其編寫(xiě)各種各樣的擴(kuò)展與應(yīng)用來(lái)擴(kuò)充其功能。用處安裝擴(kuò)展之后,就會(huì)讀取擴(kuò)展中的文件。結(jié)語(yǔ)以上就是第一章的總結(jié),接下來(lái)的筆記,敬請(qǐng)期待原書(shū)項(xiàng)目代碼下載擴(kuò)展及其應(yīng)用開(kāi)發(fā) 讀書(shū)筆記介紹 寒假想自己做一個(gè)chrome擴(kuò)展,便從圖書(shū)館借了這本書(shū)。同時(shí),為了培養(yǎng)自己的好習(xí)慣,做沉淀,便讀一章寫(xiě)一篇總結(jié),全書(shū)總共10章,將會(huì)分為10篇博文。歡迎大家多多指正,也希望大家...
閱讀 539·2021-11-22 12:05
閱讀 1619·2021-11-17 09:33
閱讀 3698·2021-11-11 16:54
閱讀 2818·2021-10-14 09:49
閱讀 4242·2021-09-06 15:01
閱讀 1885·2019-08-29 17:23
閱讀 770·2019-08-29 14:09
閱讀 792·2019-08-29 12:28