EL 表達式&JSTL

基礎目標:

使用 EL 獲取 web 四個容器(page、 request、 session、 serveltContext)中的數(shù)據(jù)

使用 EL 解析復雜數(shù)據(jù)(List、 Map、數(shù)組、自定義對象)

使用 EL 執(zhí)行運算(算數(shù)運算、邏輯運算、比較運算)

使用 EL 的內(nèi)置對象(快速操作常用的 javaweb 對象)

需求:需要一種新的 jsp 頁面使用 java 代碼的方式,方便直接輸出內(nèi)容。 EL 全稱:Expression Language 作用:代替 jsp 中腳本表達式的功能,簡化對 java 代碼的操作。

具體簡化的內(nèi)容

獲取數(shù)據(jù)(獲取四個容器中數(shù)據(jù))

執(zhí)行運算(EL 執(zhí)行運算)

快速操作常用的 javaweb 對象(11 個內(nèi)置對象)

EL 表達式&EL 的內(nèi)置對象(重點:必須掌握)

EL 表達式是什么:

EL 表達式是 jsp 中的技術,書寫格式為:${ 表達式}

表達式作用:要獲取數(shù)據(jù)的名稱、執(zhí)行的運算、要獲取的 web 常用對象。

注:表達式中放的是域?qū)ο笾械膶傩裕绾问牵?/p>

基本類型:則自動放入page域中

引用類型:如果存在則取出,不存在不顯示(不存在還.成員會報錯)

pageContext:上下文?

抽象概念:研究他的作用,使用作用代替文本概念:可以獲取其他八個內(nèi)置對象,

可以給四個容器設置和獲取數(shù)據(jù),這個就是上下文對象。

細節(jié):使用 pageContext 的 getAttribute 方法或者 findAttribute 方法從 4 個

容器中取出數(shù)據(jù)的時候,如果指定的 key 不存在會得到 null,而使用 el 表達式

取出的時候指定的 key 不存在,頁面上什么都沒有

EL 使用——執(zhí)行運算

支持算術運算符:

+? -? *? /(div)? %(mod)

<%--

1 div 2=${1 div 2}? ? //0.5

1 mod 2=${1 mod 2}--%>? ? //1

2、 支持邏輯運算符:&&(and)? ?||(or)? ? ? ? ?<!-- 沒有短路&| -->

3、支持比較運算符:>(gt)? ? <(lt)? ? >=(ge)? ? <=(le)? ?==(eq)? ?!=(ne)

注:()中是英文表達方式,在eclipse中部分會報錯,不過運行還顯示

empty 運算符:檢查對象是否為 null 或“空”

:對于自定義對象,檢查是否為 null對于集合檢查,是否為空(集合存在,但是沒有數(shù)據(jù))

代碼

<%

User user = new User();

user.setName("張三");

pageContext.setAttribute("user", user);

%>

${empty user }? ? ? ? //域中是否存在”user"對象

效果:

顯示:false

${user!=null?user.name : “”}三元運算

${user!=null?user.name:"" }

效果:

顯示:張三

<%-- 演示El執(zhí)行運算 --%>

<%

int x = 3;

int y = 4;

pageContext.setAttribute("x", x);

pageContext.setAttribute("y", y);

%>

<%-- 使用EL表達式獲取數(shù)據(jù),最終都是講數(shù)據(jù)轉(zhuǎn)換成字符串,根據(jù)字符

串,格式化數(shù)字,在進行計算 --%>

<%-- z的數(shù)據(jù)不存在,不存在的數(shù)據(jù),加減,乘除(Infinity) 0--%>

<h3>1%2=${z*2}</h3>

${x+y }? //7

${x-y } //-1

${x*y } //12

${x/y } //0.75

${x%y } //3

<hr>

<%

boolean flag = true;

boolean info = false;

pageContext.setAttribute("flag", flag);

pageContext.setAttribute("info", info);

%>

${flag && info} //false

<%-- ${ !info} --%>

${flag || info} //true

<hr>

${x < y }? //true

${x <= y }? //true

${x > y }? //false

${x >= y }? //false

${x == y }? //fales

${x != y }? //true

注意:當算術運算的時候,如果字符串內(nèi)容不能解析成數(shù)據(jù),則報數(shù)字格式化異

常。

EL11 個內(nèi)置對象使用

EL 表達式它也有自己的內(nèi)置(直接使用)對象可以直接在 EL 表達式中使用:從不同的容器中取值

pageScope? :頁面

requestScope? ? :一次請求

sessionScope? ? :一次回話

applicationScope? ? :項目中? ?

剩下 7 個介紹:

param: 獲取用戶提交的請求參數(shù)? ? ? ?如: ${param.參數(shù)名 }

paramValues: 獲取某個 key 對應的多個 value 值????????

header: 獲取請求頭中的信息

headerValues: 某個請求頭中的多個 value 值

cookie: 它獲取到的一個 cookie 數(shù)組,獲取所

有的 cookie 數(shù)據(jù)

pageContext: 它就和 JSP 內(nèi)置對象 pageContext 功

能一致(獲取其他內(nèi)置對象:jsp)

initParam: 獲取的項目的全局配置參數(shù)

JSTL的核心標簽庫使用(重點:必須 掌握)

將 jar 包導入工程? ;

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

prefix 表示的是 標簽的小名。? (任意名,常用c表示)

uri 表示的是 引入那個標簽庫?

JSTL 標簽庫提供 5 大功能(了解):

core:jstl 的核心標簽庫,使用最多(必須掌握)

fmt:格式化的標簽(對頁面顯示數(shù)據(jù),格式化,現(xiàn)在都交給前端去做)

functions:jstl 中提供對字符串操作的函數(shù)庫(建議,在數(shù)據(jù)顯示在頁面之前,在后臺程序中,先格式化好字符串,然后直接顯示,不再頁面做處理,如果有前端,交給前端處理javascript 解析 json 格式數(shù)據(jù)))

sql:jstl 提供的在 jsp 頁面上書寫 sql,操作數(shù)據(jù)庫,目前已經(jīng)不再(不允許)使用(jsp 開發(fā)模式二(MVC),這個開發(fā)模式不允許,在頁面操作數(shù)據(jù)庫)

xml:jstl 操作 xml 文件的。目前已經(jīng)不再使用(頁面?zhèn)鬟f數(shù)據(jù),頁面解析數(shù)據(jù),json 格式字符串。)

c:if 標簽(重點: 必須掌握)

使用 c:if 標簽,在 JSP 頁面上可以完成 if 判斷。 注意:在 JSTL 核心標簽庫中沒有 c:else.

只有 if(){}結構 沒有 if(){}else{}結構

<%--

if標簽---

test 判斷條件:? 通常使用EL語言 計算??

var????? test條件判斷的結果存儲到變量

scope???? test條件判斷的結果存儲到變量 存放到作用域?

<c:if test="" var="" scope="">?

</c:if>

--%>

<!-- EL表達式的運算符 empty

? 當變量不存在? 返回 true

? 變量存在,但是變量的值為 null? ,? 返回 true

? 變量存在,但是變量是一個數(shù)組或集合,沒有元素? ,? 返回 true

c:choose c:when c:otherwise(重點:必須掌握)

c:choose c:when c:otherwise 相當于:if(){}else if(){} else if(){}

<c:choose>標簽它必須與<c:when>和<c:otherwise>標簽一起使用,它表示

哪些 when 和 otherwise 是在一組的

?

c:setc:out 標簽

<!-- JSTL 區(qū)分大小寫 -->

<!--

? set標簽: 定義,修改 作用域變量(只能修改作用域變量)

? var 變量名

? value 變量的值

? scope 作用域(取值:page,request,session,application),如果不寫默認page

? target=""? 對象

? property="" 屬性

-->

<!-- 刪除

remove標簽

? var 刪除的變量名稱

? scope 刪除作用域,如果不指定,四大作用域的名稱相同的變量全部刪除

-->

c:out 作用:它可以把數(shù)據(jù)輸出到頁面上,相當于 JSP 的內(nèi)置對象 out

?注:set標簽定義基本變量(默認page)。當處理對象時,只可以處理域中存在的對象

c:forEach 標簽(重點:必須掌握)

<!-- 使用forEach標簽迭代

? var? 臨時的變量,接收每次從集合中取得值

? items? 迭代的集合或數(shù)組

? begin? 表示集合或數(shù)組,的哪個索引位置開始 ,0表示第一個元素

? end? 結束位置

? step? 步長 ? 默認1

? varStatus 狀態(tài)? 取得迭代的順序的值

-->

迭代標簽 forTokens

<!-- forTokens迭代字符串,類似拆分字符串

? var? 臨時的變量,接收每次 取得值

? items? 迭代的字符串

? delims? 按照什么字符拆分

? begin? 表示集合或數(shù)組,的哪個索引位置開始 ,0表示第一個元素

? end? 結束位置

? step? 步長 ? 默認1

? varStatus 狀態(tài)? 取得迭代的順序的值


-->

開發(fā)模式&JavaBean

JavaBean?簡單介紹

JavaBean:它是一個簡單的 Java 類。 屬性要求是 private 這個類中擁有 get 或 set 方法即可,但要求這個類必須有一個公開的空參數(shù)的構造函數(shù) ?

特點:

1、一定要有一個無參數(shù)的構造函數(shù)---public 無參的構造函數(shù)

2、屬性必須是 private 的。

3、為這個私有的屬性,提供公有的訪問方法 getter ,setter。

提示:后期開發(fā)中,這些類一般會保存在名稱為 domain 或者 beans.或者 entity

或者 pojo 包中,這是一個開發(fā)的習慣,你在公司,拿到公司項目的所有封裝數(shù)

據(jù)的 Javabean 一般都會在這里包中。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,556評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,463評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,778評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,218評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,436評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,969評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,795評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,993評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,229評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,687評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,990評論 2 374

推薦閱讀更多精彩內(nèi)容

  • 一、jsp介紹 jsp作用jsp全稱java server pages(java服務器頁面),本質(zhì)是一個servl...
    圣賢與無賴閱讀 1,260評論 0 14
  • EL表達式 1、EL簡介 1)語法結構 ${expression} 2)[]與.運算符 EL 提供.和[]兩種運算...
    二把刀9527閱讀 12,912評論 0 2
  • 今天,我有幸參加了朵朵班的助教活動,昨天收到通知后,就一直緊張又興奮,緊張的是我第一次參加這樣的活動,不知道如何應...
    moon_01d2閱讀 528評論 0 1
  • 以前我和朋友說過自己的一個觀點:在我的概念里,親情第一位,友情第二位,愛情第三位。雖然很多人嘲笑我沒經(jīng)歷過愛情才這...
    粥星夷是我閱讀 1,684評論 0 0
  • 抓不住你我用白瓷燒制的丈夫抓不住你我的沒有瑕疵的男子 抓不住你丈夫擦拭白瓷瑣事紛紛落下 其他的家庭成員躲在底座里抓...
    ChatGPTplugin閱讀 730評論 3 4