Java學習路線-53:EL(表達式語言)入門及 EL 函數庫

第 8 章 : EL(表達式語言)入門及 EL 函數庫

課時 27 EL 入門

EL 是 JSP 內置的表達式語言

jsp2.0 開始,EL 表達式和動態標籤來替代 java 腳本
EL 替代 <%=%>

<% pageContext.setAttribute("name", "pageContext");%>
<% request.setAttribute("name", "request");%>
<% session.setAttribute("name", "session");%>
<% application.setAttribute("name", "application");%>

<!-- 全域查找 -->
${name} <br/>
<!-- pageContext -->

<!-- 指定域查找 -->
${requestScope.name} <br/>
${pageScope.name} <br/>
${sessionScope.name} <br/>
${applicationScope.name} <br/>

課時 28 EL 11 個內置對象

無需創建即可使用

pageScope
requestScope
sessionScope
applicationScope
param
paramValues
header
haderValues
iniParam
cookie
pageContext
<jsp:useBean id="person" class="com.pengshiyu.bean.Person" scope="page" />

<jsp:setProperty name="person" property="name" value="Tom" />


<jsp:getProperty name="person" property="name"  />

<!-- 等價於 -->
${person.name}

1、param 和 paramValues
param 獲取單值
paramValues 獲取多值

請求地址 /?name=Tom&numbers=1&numbers=2

${param.name}

${paramValues.numbers[0]}
${paramValues.numbers[1]}

2、header 和 haderValues

${header['user-agent']}
${header["User-Agent"]}

3、iniParam
iniParam 可以獲取 <context-param> 配置參數

<context-param>
    <param-name>key1</param-name>
    <param-value>value1</param-value>
</context-param>
<context-param>
    <param-name>key2</param-name>
    <param-value>value2</param-value>
</context-param>

4、cookie

<!-- 獲取cookie對象再獲取值 -->
${cookie.JSESSIONID.value}

<!-- 等價於 -->
${pageContext.session.id}

5、pageContext

${pageContext.request.contextPath}

課時 29 EL 函數庫

由 JSTL 提供
引人

<%@ taglib prefix="fn"
           uri="http://java.sun.com/jsp/jstl/functions" %>

函數

函數	描述
fn:contains()	測試輸入的字符串是否包含指定的子串
fn:containsIgnoreCase()	測試輸入的字符串是否包含指定的子串,大小寫不敏感
fn:endsWith()	測試輸入的字符串是否以指定的後綴結尾
fn:escapeXml()	跳過可以作爲XML標記的字符
fn:indexOf()	返回指定字符串在輸入字符串中出現的位置
fn:join()	將數組中的元素合成一個字符串然後輸出
fn:length()	返回字符串長度
fn:replace()	將輸入字符串中指定的位置替換爲指定的字符串然後返回
fn:split()	將字符串用指定的分隔符分隔然後組成一個子字符串數組並返回
fn:startsWith()	測試輸入字符串是否以指定的前綴開始
fn:substring()	返回字符串的子集
fn:substringAfter()	返回字符串在指定子串之後的子集
fn:substringBefore()	返回字符串在指定子串之前的子集
fn:toLowerCase()	將字符串中的字符轉爲小寫
fn:toUpperCase()	將字符串中的字符轉爲大寫
fn:trim()	移除首尾的空白符

使用實例

<%@ taglib prefix="fn"
           uri="http://java.sun.com/jsp/jstl/functions" %>

${fn:toUpperCase("hello")}
<!-- HELLO -->

課時 30 EL 自定義函數庫

1、定義函數

com/pengshiyu/fn/MyFunctions.java

package com.pengshiyu.fn;

public class MyFunctions {
    public static String hello(){
        return "hello";
    }
}

2、配置函數

webapp/WEB-INF/custom.tld

<?xml version="1.0" encoding="utf-8"?>

<taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>2.0</jsp-version>
    <short-name>Example TLD with Body</short-name>

    <function>
        <name>hello</name>
        <function-class>com.pengshiyu.fn.MyFunctions</function-class>
        <function-signature>java.lang.String hello()</function-signature>
    </function>
</taglib>

3、使用函數
webapp/demo.jsp

<%@ taglib prefix="fn"
           uri="/WEB-INF/custom.tld" %>

${fn:hello()}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章