JSP&&EL&&JSTL

莊嘉豪發表於2020-07-14

JSP

  1. 全稱:Java Server Page,使用java語言編寫的執行在伺服器端上的頁面。

  2. 原理:JSP本質上就是一個Servlet。

  3. 指令碼:

    <%  程式碼 %>:定義的java程式碼,在service方法中。service方法中可以定義什麼,該指令碼中就可以定義什麼。
    <%! 程式碼 %>:定義的java程式碼,在jsp轉換後的java類的成員位置。
    <%= 程式碼 %>:定義的java程式碼,會輸出到頁面上。輸出語句中可以定義什麼,該指令碼中就可以定義什麼。
  4. 九個內建物件

    變數名真實型別作用
    pageContext PageContext 當前頁面共享資料,還可以獲取其他八個內建物件
    request HttpServletRequest 一次請求訪問的多個資源(轉發)
    response HttpServletResponse 響應物件
    session HttpSession 一次會話的多個請求間
    application ServletContext 所有使用者間共享資料
    page Object 當前頁面(Servlet)的物件 this
    out JspWriter 輸出物件,資料輸出到頁面上
    config ServletConfig Servlet的配置物件
    exception Throwable 異常物件
  5. 指令

    • 作用:用於配置JSP頁面,匯入資源性檔案。

    • 格式:<%@ 指令名稱 屬性名1=屬性值1 屬性名2=屬性值2 ... %>

    • 分類:

      • page:配置JSP頁面的

        • contentType:等同於response.setContentType()

          • 設定響應體的mime型別以及字符集

          • MIME(Multipurpose Internet Mail Extensions)多用途網際網路郵件擴充套件型別 : 大範圍型別/小範圍型別 text/html

        • import:導包

        • errorPage:當前頁面發生異常,會自動跳轉到指定的錯誤頁面。

        • isErrorPage:標識當前也是是否是錯誤頁面。

          • true:是,可以使用內建物件exception

          • false:否。預設值。不可以使用內建物件exception

      • include:頁面包含的。匯入頁面的資原始檔

      • taglib:匯入資源

        • prefix:字首,自定義的

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

  6. 註釋:

    1. <!-- html註釋 -->:在原始碼級別可以看到

    2. <%-- java註釋 --%>:在原始碼級別不可見

EL表示式

  1. 概念:Expression Language 表示式語言

  2. 作用:替換和簡化jsp頁面中java程式碼的編寫

  3. 注意:

    1. jsp預設支援el表示式的。如果要忽略el表示式

      1. 設定jsp中page指令中:isELIgnored="true" 忽略當前jsp頁面中所有的el表示式。

      2. \${表示式} :忽略當前這個el表示式

  4. 語法:${表示式} --->表示式是一個具體的值。

    1. 運算子

      1. 算數運算子: + - * /(div) %(mod)

      2. 比較運算子:> < >= <= == !=

      3. 邏輯運算子:&&(and) ||(or) !(not)

      4. 空運算子:empty

        1. 功能:用於判斷字串、集合、陣列物件是否為null或者長度是否為0

        2. ${empty list}:判斷字串、集合、陣列物件是否為null或者長度為0

        3. ${not empty str}:表示判斷字串、集合、陣列物件是否不為null 並且 長度>0

    2. 獲取值

      1. el表示式只能從域物件中獲取值

      2. 預設從小範圍向大範圍查詢獲取值

      3. 語法:

        1. ${域名稱.鍵名}:從指定域中獲取指定鍵的值

          1. pageScope --> pageContext

          2. requestScope --> request

          3. sessionScope --> session

          4. applicationScope --> application(ServletContext)

        2. ${鍵名}:表示依次從最小的域中查詢是否有該鍵對應的值,直到找到為止。

        3. 獲取物件、List集合、Map集合的值

          1. 物件:${域名稱.鍵名.屬性名} 本質上會去呼叫物件的getter方法

          1. List集合:${域名稱.鍵名[索引]}

          2. Map集合:

            • ${域名稱.鍵名.key名稱}

            • ${域名稱.鍵名["key名稱"]}

    3. 隱式物件:

      • el表示式中有11個隱式物件

      • pageContext:

        • 獲取jsp其他八個內建物件

          • ${pageContext.request.contextPath}:動態獲取虛擬目錄

JSTL

  1. 概念:JavaServer Pages Tag Library JSP標準標籤庫

    • 是由Apache組織提供的開源的免費的jsp標籤 <標籤>

  2. 作用:用於簡化和替換jsp頁面上的java程式碼

  3. 常用的JSTL標籤:

    1. if:相當於java程式碼的if語句

      1. test 必須屬性,接受boolean表示式

      2. c:if標籤沒有else情況,想要else情況,則可以在定義一個c:if標籤

    2. choose:相當於java程式碼的switch語句

      1. 使用choose標籤宣告相當於switch宣告

      2. 使用when標籤做判斷相當於case

      3. 使用otherwise標籤做其他情況的宣告相當於default

    3. 使用otherwise標籤做其他情況的宣告 相當於default使用otherwise標籤做其他情況的宣告 相當於default

    4. foreach:相當於java程式碼的for語句。