天天看點

el表達式裡面fn的用法

頭部加入标簽庫 

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

使用: 

截取字元串長多 

${fn:substring(wjcd.lrsj, 0, 16)} 

使用 functions函數來擷取list 的長度 

${fn:length(list)} 

函數名 函數說明 使用舉例 

fn:contains 判斷字元串是否包含另外一個字元串 <c:if test="${fn:contains(name, searchstring)}"> 

fn:containsignorecase 判斷字元串是否包含另外一個字元串 (大小寫無關) <c:if test="${fn:containsignorecase(name, searchstring)}"> 

fn:endswith 判斷字元串是否以另外字元串結束 <c:if test="${fn:endswith(filename, ".txt")}"> 

fn:escapexml 把一些字元轉成xml表示,例如 <字元應該轉為< ${fn:escapexml(param:info)} 

fn:indexof 子字元串在母字元串中出現的位置 ${fn:indexof(name, "-")} 

fn:join 将數組中的資料聯合成一個新字元串,并使用指定字元格開 ${fn:join(array, ";")} 

fn:length 擷取字元串的長度,或者數組的大小 ${fn:length(shoppingcart.products)} 

fn:replace 替換字元串中指定的字元 ${fn:replace(text, "-", "•")} 

fn:split 把字元串按照指定字元切分 ${fn:split(customernames, ";")} 

fn:startswith 判斷字元串是否以某個子串開始 <c:if test="${fn:startswith(product.id, "100-")}"> 

fn:substring 擷取子串 ${fn:substring(zip, 6, -1)} 

fn:substringafter 擷取從某個字元所在位置開始的子串 ${fn:substringafter(zip, "-")} 

fn:substringbefore 擷取從開始到某個字元所在位置的子串 ${fn:substringbefore(zip, "-")} 

fn:tolowercase 轉為小寫 ${fn.tolowercase(product.name)} 

fn:touppercase 轉為大寫字元 ${fn.uppercase(product.name)} 

fn:trim 去除字元串前後的空格 ${fn.trim(name)} 

函數描述 

?fn:contains(string, substring) 如果參數 string中包含參數substring ,傳回true 

?fn:containsignorecase(string, substring) 如果參數 string中包含參數substring (忽略大小寫),傳回 true 

?fn:endswith(string, suffix) 如果參數 string 以參數suffix 結尾,傳回 true 

?fn:escapexml(string) 将有特殊意義的 xml (和html) 轉換為對應的 xml character entity code,并傳回 

?fn:indexof(string, substring) 傳回參數 substring在參數string 中第一次出現的位置 

?fn:join(array, separator) 将一個給定的數組 array用給定的間隔符separator串在一起,組成一個新的字元串并傳回。 

?fn:length(item) 傳回參數item 中包含元素的數量。參數 item類型是數組、collection或者 string。如果是string 類型,傳回值是 string中的字元數。 

?fn:replace(string, before, after) 傳回一個 string對象。用參數after字元串替換參數 string中所有出現參數before字元串的地方,并傳回替換後的結果 

?fn:split(string, separator) 傳回一個數組,以參數 separator 為分割符分割參數string,分割後的每一部分就是數組的一個元素 

?fn:startswith(string, prefix) 如果參數 string以參數prefix 開頭,傳回 true 

?fn:substring(string, begin, end) 傳回參數 string部分字元串, 從參數begin開始到參數 end位置,包括end 位置的字元 

?fn:substringafter(string, substring) 傳回參數 substring在參數string 中後面的那一部分字元串 

?fn:substringbefore(string, substring) 傳回參數 substring在參數string 中前面的那一部分字元串 

?fn:tolowercase(string) 将參數string所有的字元變為小寫,并将其傳回 

?fn:touppercase(string) 将參數string所有的字元變為大寫,并将其傳回 

?fn:trim(string) 去除參數string 首尾的空格,并将其傳回 

二、jsp el 簡介 

1、文法結構 ${expression} 2 、[ ]與 .運算符 el 提供“.“和“ [ ]“兩種運算符來存取資料。 當要存取的屬性名稱中包含一些特殊字元,如 .或? 等并非字母或數字的符号,就一定要使用“ [ ]“。例如: ${user.my-name} 應當改為 ${user["my-name"] } 如果要動态取值時,就可以用“ [ ]“來做,而“.“無法做到動态取值。例如: ${sessionscope.user[data]}中data 是一個變量 3、變量 el 存取變量資料的方法很簡單,例如: ${username}。它的意思是取出某一範圍中名稱為 username的變量。 因為我們并沒有指定哪一個範圍的 username,是以它會依序從page、 request、session 、application範圍查找。 假如途中找到username,就直接回傳,不再繼續找下去,但是假如全部的範圍都沒有找到時,就回傳 null。 屬性範圍在 el中的名稱 page pagescope request requestscope session sessionscope application applicationscope 

二、 jsp el 中的有效表達式 

  有效表達式可以包含文字、操作符、變量(對象引用)和函數調用。我們将分别了解這些有效表達式中的每一種: 

1、文字 

jsp 表達式語言定義可在表達式中使用的以下文字:  

文字 文字的值 

boolean 

true 和 false 

integer 

與 java 類似。可以包含任何正數或負數,例如 24、-45 、567 

floating point 

與 java 類似。可以包含任何正的或負的浮點數,例如 -1.8e-45、4.567 

string 

任何由單引号或雙引号限定的字元串。對于單引号、雙引号和反斜杠,使用反斜杠字元作為轉義序列。必須注意,如果在字元串兩端使用雙引号,則單引号不需要轉義。 

null null 

2、操作符 

jsp 表達式語言提供以下操作符,其中大部分是 java 中常用的操作符: 

術語 定義 

算術型 

+、- (二進制)、 *、/ 、div、 %、mod 、-(一進制) 

邏輯型 

and、&& 、or、 ||、! 、not 

關系型 

==、eq 、!=、 ne、、gt 、<=、 le、>= 、ge。可以與其他值進行比較,或與布爾型、字元串型、整型或浮點型文字進行比較。 

空 

空操作符是字首操作,可用于确定值是否為空。 

條件型 a ?b :c。根據 a 指派的結果來指派 b 或 c 。  

3、隐式對象 

jsp 表達式語言定義了一組隐式對象,其中許多對象在 jsp scriplet 和表達式中可用: 

pagecontext 

jsp 頁的上下文。它可以用于通路 jsp 隐式對象,如請求、響應、會話、輸出、 servletcontext 等。例如,${pagecontext.response} 為頁面的響應對象指派。 

此外,還提供幾個隐式對象,允許對以下對象進行簡易通路:  

param 

将請求參數名稱映射到單個字元串參數值(通過調用 servletrequest.getparameter (string name) 獲得)。 getparameter (string) 方法傳回帶有特定名稱的參數。表達式 $(param.name) 相當于 request.getparameter (name)。 

paramvalues 

将請求參數名稱映射到一個數值數組(通過調用 servletrequest.getparameter (string name) 獲得)。它與 param 隐式對象非常類似,但它檢索一個字元串數組而不是單個值。表達式 ${paramvalues.name) 相當于 request.getparamtervalues(name)。 

header 

将請求頭名稱映射到單個字元串頭值(通過調用 servletrequest.getheader(string name) 獲得)。表達式 ${header.name} 相當于 request.getheader(name)。 

headervalues 

将請求頭名稱映射到一個數值數組(通過調用 servletrequest.getheaders(string) 獲得)。它與頭隐式對象非常類似。表達式 ${headervalues.name} 相當于 request.getheadervalues(name)。 

cookie 将 cookie 名稱映射到單個 cookie 對象。向伺服器發出的用戶端請求可以獲得一個或多個 cookie。表達式 ${cookie.name.value} 傳回帶有特定名稱的第一個 cookie 值。如果請求包含多個同名的 cookie,則應該使用 ${headervalues.name} 表達式。  

initparam 将上下文初始化參數名稱映射到單個值(通過調用 servletcontext.getinitparameter(string name) 獲得)。   

除了上述兩種類型的隐式對象之外,還有些對象允許通路多種範圍的變量,如 web 上下文、會話、請求、頁面: 

pagescope 

将頁面範圍的變量名稱映射到其值。例如, el 表達式可以使用 ${pagescope.objectname} 通路一個 jsp 中頁面範圍的對象,還可以使用 ${pagescope.objectname.attributename} 通路對象的屬性。 

requestscope 

将請求範圍的變量名稱映射到其值。該對象允許通路請求對象的屬性。例如, el 表達式可以使用 ${requestscope.objectname} 通路一個 jsp 請求範圍的對象,還可以使用 ${requestscope.objectname.attributename} 通路對象的屬性。 

sessionscope 

将會話範圍的變量名稱映射到其值。該對象允許通路會話對象的屬性。例如: 

$sessionscope.name} 

applicationscope 

将應用程式範圍的變量名稱映射到其值。該隐式對象允許通路應用程式範圍的對象。 

三、特别強調: 

1、注意當表達式根據名稱引用這些對象之一時,傳回的是相應的對象而不是相應的屬性。例如:即使現有的 pagecontext 屬性包含某些其他值,${pagecontext} 也傳回 pagecontext 對象。  

2、 注意 <%@ page iselignored="true" %> 表示是否禁用el語言 ,true表示禁止.false 表示不禁止 .jsp2.0中預設的啟用el語言。 

特别說明:尊重作者的勞動成果,轉載請注明出處哦~~~http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp31

上一篇: git使用記錄
下一篇: 詳解session