1. 程式人生 > >Javaweb學習筆記6—EL表示式與JSTL及自定義標籤

Javaweb學習筆記6—EL表示式與JSTL及自定義標籤



前幾天部落格被黑了,導致部落格登陸不上,把前幾天應該發的東西的東西重新發一遍

今天來講javaweb的第六階段學習。

EL表示式與JSTL及自定義標籤是對上篇文章介紹的JSP的擴充套件,不能說是很重要的東西,但是也要了解。

老規矩,首先先用一張思維導圖來展現今天的部落格內容。

ps:我的思維是用的xMind畫的,如果你對我的思維導圖感興趣並且想看到你們跟詳細的備註資訊,請點選下載

另外:如果圖看不清的話請右擊---在新視窗中開啟會清楚很多。


一、EL表示式

    1EL簡介

Expression Language。它不是一種語言,只是一個表示式。

     用於將資料顯示到JSP上。它的出現是替代

java表示式的,從jsp2.0開始。

     特點就是簡單易用:

            java表示式

                <%List<Book> list = new ArrayList();%>

                <%=list.get(0).getBookName() %>

            EL表示式:

                ${list[0].bookname}E

    2EL表示式基本語法

${表示式}

            注意:EL表示式是從四大域物件中獲取資料(application,session,request,pagecontext);

            細節:EL表示式中沒有空指標異常,沒有陣列下標越界,沒有字串拼接。

    3EL表示式的資料獲取

    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的名稱,valuecookie物件

        

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:國際化有關。

        FunctionsEL函式

        SQL:操作資料庫。不用

        XML:操作XML。不用

    3 JSTLCore

            分類

功能分類

標籤名稱

Core

表示式操作

out

set

remove

catch

流程控制

if

choose

when

otherwise

迭代操作

forEach

forTokens

URL操作

import

param

url

param

redirect

param

                詳情請參考【CORE核心標籤.doc

    4 JSTLFunctions介紹

使用taglib指令匯入:詳情請看【第18JSTL 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

                            

                第二步:建立一個.tldxml檔案在裡面配置tag的資訊。

                            

        第三步:在jsp中引入自定義標籤

                            

    3自定義標籤的作用4

a、控制主體內容是否顯示。

                

        b、控制結束標籤後的JSP內容不執行。

                

        c、控制主體內容重複執行。

                

                

        d、改變主體內容後再輸出。

            

            

    4自定義標籤配置的body-cotent說明

    <body-content>取值:

JSPjsp中能出現啥,標籤主體內容就能出現啥。給傳統標籤用的。簡單標籤一用就報錯。

            empty:沒有主體內容。簡單和傳統標籤都能用。

            scriptless:給簡單標籤用的,說明主體內容是非指令碼。

                tagdependent:把主體內容的EL表示式當做普通字串對待。

    5自定義標籤的案例

        a.模擬for