01.EL表示式
學習目的:jsp頁面儘量不要寫java程式碼,實現前後端分離。可以使用EL和JSTL替代java程式碼。
概念:Expression Language表示式語言。
作用:替換和簡化jsp頁面中的java程式碼的編寫。
語法:
${表示式}${3>4} 結果為:true1234
jsp預設支援EL表示式,可以在首行配置資訊中忽略EL表示式。
1.設道jsp中page指令中:isELIgnored="true”忽略當前jsp頁面中所有的el表示式。
2.\${表示式}:忽略當前這個el表示式。
1.EL運算1.運算
算數運算子:+ - * /(div) %(mod)1
比較運算子:> < >= <= == !=1
邏輯運算子:&&(and) ||(or) !(not)1
空運算子:empty判斷字串,集合,陣列物件是否為null並且長度為0取反:not empty${empty list}12345
2.EL獲取值
JSP主要開發任務:將域物件中資料讀取並寫入到響應體。
在JSP檔案上使用Java命令,將域物件中資料讀取並寫入到相應開發步驟。
<%request.getAttribute(“key”);%>
el表示式獲取值。
1.el表示式只能從域物件中獲取值
2.語法︰
1.${域名稱.鍵名}∶從指定域中獲取指定鍵的值1
域名稱:
1.pageScope ---> pageContext2.requestScope -->request3.sessionScope --->session4.applicationScope --->application(servletContext)1234
在request域中儲存了name=張三
獲取:${requestScope.name}沒有該值會輸出空字串12
域名稱可以省略。因此可以寫成這樣:
${鍵名}1
表示依次從最小的域中查詢是否有該鍵對應的值,直到找到為止。
3.獲取物件,list集合,map集合的值。
物件的值:透過物件的屬性來獲取${user.name}1234
值為list集合:${鍵名[0]}12
值為map${鍵名.map的鍵名}${鍵名["map的鍵名"]}1234
3.El隱式物件類似於jsp的內建物件。el表示式中有11個隱式物件。
pageContext1.獲取jsp其他八個內建物件。${pageContext.request}${pageContext.request.contextPath}//在jsp動態獲取虛擬目錄123456
02.JSTL標籤
1.概念:JavaServer Pages Tag Library JSP標準標籤庫。是由Apache組織提供的開源的免費的jsp標籤。
2.作用:使用者簡化和替換jsp頁面上的java程式碼。
使用步驟:1.匯入jstl相關jar包。
2.引入標籤庫:taglib指令:
<% taglib %>1
使用標籤。
3.常用的JSTL標籤。
1.if 2.choose(相當於switch)3.foreach123
屬性:
test 必須屬性,接受boolean表示式。
如果表示式為true,則顯示if標籤體內容,如果為false,則不顯示標籤體內容
—般情況下, test屬性值會結合el表示式一起使用
注意∶
c:if標籤沒有else情況,想要else情況,則可以在定義一個c:if標籤1
2.choose相當於java的switch語句。
3.foreach:相當於java的for迴圈
1.完成重複的操作。
屬性:begin:開始值。
end:結束值。
var:臨時變數。
step:步長。
varStatus:迴圈狀態物件。
index:容器中元素的索引,從0開始。
count:迴圈次數,從1開始。
<c:forEach begin=“1” end="10" var=“i" step="2" varStatus="s">${i}<h3>${s.index}<h3> <h4>${s.count}</h4><br></c:forEach>123
2.遍歷容器
for(User user:list){}屬性:items:容器物件。
var:容器中元素的臨時變數。
varStatus:迴圈狀態物件。
index:容器中元素的索引,從0開始。
count:迴圈次數,從1開始。
<c:forEach item="${list}" var="str" varStatus="s">${s.index} ${s.count} ${str}<br></c:forEach>1234
練習: