Javaweb學習筆記6—EL表示式與JSTL及自定義標籤
前幾天部落格被黑了,導致部落格登陸不上,把前幾天應該發的東西的東西重新發一遍
今天來講javaweb的第六階段學習。
EL表示式與JSTL及自定義標籤是對上篇文章介紹的JSP的擴充套件,不能說是很重要的東西,但是也要了解。
老規矩,首先先用一張思維導圖來展現今天的部落格內容。
ps:我的思維是用的xMind畫的,如果你對我的思維導圖感興趣並且想看到你們跟詳細的備註資訊,請點選下載
另外:如果圖看不清的話請右擊---在新視窗中開啟會清楚很多。
一、EL表示式
1,EL簡介
Expression Language。它不是一種語言,只是一個表示式。
用於將資料顯示到JSP上。它的出現是替代
特點就是簡單易用:
java表示式
<%List<Book> list = new ArrayList();%>
<%=list.get(0).getBookName() %>
EL表示式:
${list[0].bookname}E
2,EL表示式基本語法
${表示式}
注意:EL表示式是從四大域物件中獲取資料(application,session,request,pagecontext);
細節:EL表示式中沒有空指標異常,沒有陣列下標越界,沒有字串拼接。
3,EL表示式的資料獲取
3.1獲取資料
3.2 EL運算子
3.21empty運算子:
判斷一個字串是否為""或其他物件是否為null,同時還能判斷集合中是否有元素。
3.22三元運算子:
4 EL中的隱式物件(共11個)
EL中的隱式物件 |
型別 |
對應JSP隱式物件 |
備註 |
PageContext |
Javax.serlvet.jsp.PageContext |
PageContext |
完全一樣 |
ApplicationScope |
Java.util.Map |
沒有 |
應用層範圍 |
SessionScope |
Java.util.Map |
沒有 |
會話範圍 |
RequestScope |
Java.util.Map |
沒有 |
請求範圍 |
PageScope |
Java.util.Map |
沒有 |
頁面層範圍 |
Header |
Java.util.Map |
沒有 |
請求訊息頭key,值是value(一個) |
HeaderValues |
Java.util.Map |
沒有 |
請求訊息頭key,值是陣列(一個頭多個值) |
Param |
Java.util.Map |
沒有 |
請求引數key,值是value(一個) |
ParamValues |
Java.util.Map |
沒有 |
請求引數key,值是陣列(一個名稱多個值) |
InitParam |
Java.util.Map |
沒有 |
全域性引數,key是引數名稱,value是引數值 |
Cookie |
Java.util.Map |
沒有 |
Key是cookie的名稱,value是cookie物件 |
5 EL表示式定義和使用函式
EL不支援字串操作。
定義和使用函式的四步:
a.寫一個普通的java類
(注意,普通Java類實現功能的方法必須是靜態的,因為EL只能呼叫靜態的方法)
b.在WEB-INF下建立一個xml,檔案的副檔名為.tld
c.在jsp中使用taglib指令引入
d.在jsp中使用
二、JSTL
1 JSTL簡介
JSP Standard Tag Libary:JSP中標準的標籤庫。
該標籤庫是由Apache實現的。
匯入jar包:JavaEE的jar包中包含。
2 JSTL的組成
Core:核心標籤庫。通用邏輯處理
Fmt:國際化有關。
Functions:EL函式
SQL:操作資料庫。不用
XML:操作XML。不用
3 JSTL的Core
分類 |
功能分類 |
標籤名稱 |
Core |
表示式操作 |
out set remove catch |
流程控制 |
if choose when otherwise |
|
迭代操作 |
forEach forTokens |
|
URL操作 |
import param url param redirect param |
詳情請參考【CORE核心標籤.doc】
4 JSTL的Functions介紹
使用taglib指令匯入:詳情請看【第18章JSTL Functions標籤庫.doc】
fn:contains函式:用於判斷在源字串中是否包含目標字串。
fn:containsIgnoreCase函式:用於判斷在源字串中是否包含目標字串,並且在判斷時忽略大小寫。
fn:startsWith函式:用於判斷源字串是否以指定的目標字串開頭。
fn:endsWith函式:用於判斷源字串是否以指定的目標字串結尾。
fn:indexOf函式:用於在源字串中查詢目標字串,並返回源字串中最先與目標字串匹配的第一個字元的索引。
fn:replace函式:用於把源字串中的一部分替換為另外的字串,並返回替換後的字串。
fn:substring函式:用於獲取源字串中的特定子字串。
fn:substringBefore函式:用於獲取源字串中指定子字串之前的子字串。
fn:substringAfter函式:用於獲取源字串中指定子字串之後的子字串
fn:split函式:用於將源字串拆分為一個字串陣列。
fn:join函式:用於將源字串陣列中的所有字串連線為一個字串。
fn:toLowerCase函式:用於將源字串中的所有字元改為小寫。
fn:toUpperCase函式:用於將源字串中的所有字元改為大寫。
fn:trim函式:用於將源字串中的開頭和末尾的空格刪除。
fn:escapeXml函式:用於將源字串中的字元"<"、">"、"""和"&"等轉換為轉義字元。
fn:length函式:用於返回字串中的字元的個數,或者集合和陣列的元素的個數
三、自定義標籤
1自定義標籤的作用
自定義Jsp中的程式處理,替換掉JSP中的Java指令碼。
2自定義標籤的編寫步驟
實現標籤自定義需要實現javax.servlet.jsp.tagext.SimpleTag或者繼承javax.servlet.jsp.tagext.SimpleTagSupport
javax.servlet.jsp.tagext.SimpleTag中的方法:
void doTag():遇到自定義標籤時由伺服器呼叫執行。
JspTag getParent():得到父標籤的引用。
void setJspBody(JspFragment jsp):由伺服器呼叫,傳入JSP的片段
void setJspContext(JspContext jc):由伺服器呼叫,傳入當前頁面的PageContext
void setParent(JspTag parent):由伺服器呼叫,傳入他的父標籤
第一步:寫一個類繼承SimpleTagSupport
第二步:建立一個.tld的xml檔案在裡面配置tag的資訊。
第三步:在jsp中引入自定義標籤
3自定義標籤的作用4個
a、控制主體內容是否顯示。
b、控制結束標籤後的JSP內容不執行。
c、控制主體內容重複執行。
d、改變主體內容後再輸出。
4自定義標籤配置的body-cotent說明
<body-content>取值:
JSP:jsp中能出現啥,標籤主體內容就能出現啥。給傳統標籤用的。簡單標籤一用就報錯。
empty:沒有主體內容。簡單和傳統標籤都能用。
scriptless:給簡單標籤用的,說明主體內容是非指令碼。
tagdependent:把主體內容的EL表示式當做普通字串對待。
5自定義標籤的案例
a.模擬for