EL表達式和標準標籤庫

EL表達式(exc..sion language): 語法 ${...}
jsp中page指令有一個屬性叫isELIgnored, 用來標記此頁面是否忽略EL表達式, 默認爲false
舉個栗子:
常規寫法: <%=session.getAttribute("test")%>
EL表達式寫法: ${sessionScope.test}或者${sessionScope["test"]}
[]和. 大多數狀況下能夠通用, 除了兩種狀況中
1, 表達式中含有特殊字符
錯誤: ${sessionScope.test_name} vs 正確: ${sessionScope["test_name"]}
2, 須要動態獲取屬性
sessionScope["test"]
[] 中能夠放一個變量名, 可是點的後面不行
在EL表達式中[]也能夠用來表示數組或者集合中的索引值
EL變量
當前面不指定哪一個做用域下面的值的時候, 會默認按照下面的順序去找, 若是都找不到, 就輸出一個空字符串
pageScope --> requestScope --> sessionScope --> applicationScope
EL自動類型轉換
String num = request.getParameter("num");
int a = 20;
int b = Integer.parseInt(num != null ? num : "0");
out.print(a + b);java

${param.num + a}
EL隱式對象
上面說到的各類Scope和param都是EL表達式中的隱式對象
paramValues--->全部請求參數做爲String類型的數組的Map類
Header--->按照名稱存儲請求頭主要值的Map類
HeaderValues--->將請求頭的全部值做爲String數組存儲的Map類
cookie將名稱存儲請求附帶的cookies的Map類
獲取cookie:
${cookie.username.name}
${cookie.username.value}
initParam按名稱存儲web應用程序上下文初始化參數的Map類
EL運算符
算術運算符: + - * /或者div %或者mod
關係運算符: ==或者eq !=或者ne <或者lt >或者gt <=或者le >=或者ge
邏輯運算符: &&或者and ||或者or !或者not
驗證運算符: empty( empty 對於 null和"" 的判斷都是返回true)
判斷某個變量是否爲空
JSTL(JSP Standard Tag Library)標準標籤庫:
1, 核心標籤(最經常使用, 最重要的)
表達式控制標籤
out
輸出常量
value---直接賦值
輸出變量
default---默認值
escapeXml---控制轉義字符(默認爲true, 若是須要轉義, 設置爲false)
set
三個屬性: var value scope---將一個值存到*scope中(默認是pageContext)
賦值的時候能夠將值放在value後面, 也能夠放在兩個標籤中間
<c:set var="t" value="山東淄博" />
<c:set var="t1">安徽黃山</c:set>
target 對應javaBean的name值
property 對應定義的類裏面的屬性
remove----只能用於頁面內的變量移除
移除某個變量
var: 指定須要remove的那個變量名
scope: 兩個scope中的變量名有重複的時候, 能夠經過這個屬性來肯定移除的是哪一個
catch
至關於try...catch...
能夠在這個標籤中放其餘標籤, 只有一個屬性var
流程控制標籤
if
<c:if test="EL表達式" var="變量名" scope="" ></c:if>
choose---如下三個標籤一般一塊兒使用, 相似於switch
when
otherwise--能夠不寫
循環控制標籤
forEach
var: 設定一個變量值來存儲從數組或者集合中遍歷出來的值
items: 指定須要遍歷的數組或者集合
begin, end: 指定須要遍歷的起始位置
step: 每次遍歷跳過的個數, 默認值是1
varStatus: 經過index(在原集合中的索引值), count(當前第幾個), first(是不是第一個), last(是不是最後一個)來描述begin和end子集中的狀態
注意first和last, 是判斷的是否在輸出結果中的第一個或者最後一個, 並非原來的集合中
forTokens(回憶一下字符串的split()方法)
輸出的結果中一樣也有index, count, first, last這四個屬性
url操做標籤
import
將另外一個頁面的內容引入到這個頁面上來, 與include指令的區別: 這個標籤能夠引入其餘項目中甚至網絡上的資源
<c:import
url="被導入的路徑(能夠寫網絡資源, 能夠寫本地文件)"
context="相同服務器下的其餘項目, 必須以'/'開頭"
var="以String類型存入被包含文件的內容"
scope="四個做用域"
charEncoding="被導入文件的編碼格式"
varReader="以Reader類型存儲被導入的文件"></c:import>
url
通常用來動態生成超連接
<c:url value="https://www.baidu.com" var="newurl"></c:url>
<a href="${newurl}">新的url</a>
redirect
頁面重定向
<c:redirect url="重定向的頁面">
<c:param name="username">admin</c:param>
<c:param name="password">123456</c:param>
</c:redirect>
2, 格式化標籤
3, sql標籤
4, xml標籤
5, jstl函數
contains
startWith
endWith
escapeXmlweb

相關文章
相關標籤/搜索