【JavaEE】JSP表示式--EL表示式用法
1、JSP中EL表示式的概述
EL表示式,全名是Expression Language,它原本是JSTL1.0為了方便存取資料所自定義的語言。
當時EL只能在JSTL標籤中使用,JSP2.0 後,EL成為JSP規範的一部分,並增加了新的特性。
在JSP頁面中使用EL表示式,可以獲取並顯示頁面資料,並可以簡化對變數和物件的訪問。
可得到PageContext屬性值
可直接訪問JSP內建物件,如Page,request, session, application
1.1語法結構:${expression}
1.2[]與.運算子
EL 提供”.”和”[ ]”兩種運算子來存取資料。注意:當要存取的屬性名稱中包含一些特殊字元,如.或?等並非字母或數字的符號,就一定要使用”[ ]”。如果要動態取值時,就可以用”[ ]”來做,而”.”無法做到動態取值。
1.3變數的訪問
${name}, 取出某一範圍中名稱為name的變數資料。
在沒有指定範圍的name,所以它會依序從Page、Request、Session、Application範圍查詢;
如果找到username,就直接返回,不再繼續找下去,但是假如全部的範圍都沒有找到時,就返回null。
屬性範圍在EL表示式中名稱:
Page PageScope
Request RequestScope
Session SessionScope
Application ApplicationScope
2、Jsp EL中的有效表示式
有效表示式可以包含:文字、操作符、變數(物件引用)和函式呼叫。
2.1 Jsp表示式語言定可以在表示式中使用的文字
Boolean:true 和 false
Integer:與 Java 類似
Floating Point:與 Java 類似
String:任何由單引號或雙引號限定的字串
Null:null
2.2 操作符
JSP 表示式語言提供以下操作符,其中大部分是 Java 中常用的操作符
算術型、邏輯型、關係型、空和條件型。
2.3 隱式物件
Jsp表示式語言定義了一組隱式物件,其中許多物件在 JSP script 和表示式中可用
①pageContext:JSP 頁的上下文
它可以用於訪問 JSP 隱式物件,如請求request、響應response、會話session、輸出out、servletContext 等。
例如,${pageContext.response} 為頁面的響應物件賦值。
②param:將請求引數名稱對映到單個字串引數值,通過呼叫 ServletRequest.getParameter (String name) 獲得
表示式 $(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。表示式
⑦initParam :將上下文初始化引數名稱對映到單個值,
通過呼叫 ServletContext.getInitparameter(String name) 獲得。
2.4 訪問範圍的變數
如 Web 上下文、會話、請求、頁面。
①pageScope將頁面範圍的變數名稱對映到其值。
例如,EL 表示式可以使用
②requestScope
將請求範圍的變數名稱對映到其值。該物件允許訪問請求物件的屬性。
例如,EL 表示式可以使用
③sessionScope
將會話範圍的變數名稱對映到其值。該物件允許訪問會話物件的屬性。
例如:${sessionScope.name}
④applicationScope
將應用程式範圍的變數名稱對映到其值。該隱式物件允許訪問應用程式範圍的物件。
3、定義EL函式的開發步驟
EL不支援字串操作,字串操作在使用中比較多的,所以我們定義EL函式
EL函式是對El表示式的不足之處進行補充。
3.1 定義一個普通類,提供實現功能的靜態方法(EL函式只能呼叫靜態方法)
package cn.edu.jsp;
public class MyFunctions {
public static String toUppercase(String s){
return s.toUpperCase();
}
}
3.2 EL函式進行配置:
在WEB-INF目錄下建立一個副檔名為tld [Tag Libary Definition] (標籤庫定義)的xml檔案。
short-name:最好與檔名一致
uri:名稱空間
:函式的定義
name:函式名
function-class:類的全路徑
function-signature:函式方法
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>myfn</short-name>
<uri>http://www.itheima.com/jsp/functions</uri>
<function>
<name>toUppercase</name>
<function-class>com.itheima.jsp.MyFunctions</function-class>
<function-signature>java.lang.String toUppercase( java.lang.String )</function-signature>
</function>
</taglib>
3、在JSP中使用自定義的EL函式
首先:通過taglib指令引入外部的函式庫,prefix對應的是short-name
<%@ taglib uri=”http://www.it.com/jsp/functions” prefix=”myfn”%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.it.com/jsp/functions" prefix="myfn"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>使用EL函式</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
pageContext.setAttribute("s", "abcdefg");
%>
${myfn:toUppercase(s)}
<hr/>
${fn:contains("Tomcat","cat")}
<hr/>
${fn:split("2008-09-08","-")[0] }<br/>
${fn:split("2008-09-08","-")[1] }<br/>
${fn:split("2008-09-08","-")[2] }<br/>
<hr/>
<%
pageContext.setAttribute("data", "<h1>Java EE</h1>");
%>
${fn:escapeXml(data)}
</body>
</html>
相關文章
- JSP EL表示式(轉)JS
- jsp中EL表示式JS
- JSP表示式語言(EL)JS
- EL 表示式對照 JSP 內建物件表JS物件
- JSp頁面使用El表示式取不到值JS
- jsp頁面EL表示式不生效,不可用JS
- Jsp El表示式使用問題javax.el.ELException: Failed to parse the expressionJSJavaExceptionAIExpress
- Java Web(六) EL表示式JavaWeb
- JSP和El表示式和JSTL標籤庫使用JS
- EL表示式 與JSTL標籤JS
- java_web:EL表示式的使用JavaWeb
- Spring EL表示式使用詳解Spring
- SpringMVC中JSP頁面不顯示EL表示式的原因SpringMVCJS
- JSP 表示式語言概述JS
- IDEA解決JSP頁面無法使用EL表示式問題IdeaJS
- El表示式獲取專案名稱
- resin與jetty解析el表示式差異Jetty
- JS中使用EL表示式的問題JS
- 正規表示式?:用法詳解
- js正規表示式基本用法JS
- Oracle正規表示式的用法Oracle
- Struts標籤、ognl表示式、el表示式、jstl標籤庫這四者之間JS
- 【JavaWeb】EL表示式&過濾器&監聽器JavaWeb過濾器
- java中Lamdba表示式的用法整理Java
- DMSFrame 之查詢表示式用法(一)
- QT 正規表示式 通常用法QT
- Python中lambda表示式的用法Python
- 表示式
- JSP(JSTL EL表示式 三個指令 六個動作標籤 九個JSP內建物件)JS物件
- python--表示式(運算表示式)Python
- EL表示式怎麼獲取Map的動態key?
- JavaWeb基礎Day17 (JSP EL表示式 jstl標籤庫 beanutil工具類)JavaWebJSBean
- 中綴表示式轉為逆波蘭表示式
- JavaScript 表示式JavaScript
- JavaScript表示式JavaScript
- lambda 表示式
- cron表示式
- 表示式樹