${expression}
點(.) : 一般用來訪問對象的屬性java
${user.id}
方括號([""]) : 一般用於檢索數組或集合的元素(當屬性名中包含特殊字符,如.或?等並不是字母或數字的符號,就必定要使用[])web
${user["my-name"]} ${user.name}
查找順序:express
①EL表達式中,若不包含任何EL隱式對象的標識符,都被自動假定爲引用存儲在某個做用域中。數組
②EL會依次檢查page request session application瀏覽器
③找到對應值,則當即返回,不在繼續查找cookie
④若沒有找到對應值,返回nullsession
pageContext |pageContext取得用戶請求或頁面的詳細信息 | |-- ${pageContext.request.queryString} 取得請求參數 |-- ${pageContext.request.requestURL} 取得請求的URL,不包括請求參數(http://localhost:8080/Demo/index.jsp) |-- ${pageContext.request.requestURI} 取得URL的後半部分(/Demo/index.jsp) |-- ${pageContext.request.contextPath} 取得服務的web application 的名稱(/Demo) |-- ${pageContext.request.method} 取得HTTP 的方法(GET、POST) |-- ${pageContext.request.protocol} 取得使用的協議(HTTP/1.一、HTTP/1.0) |-- ${pageContext.request.remoteUser} 取得用戶名稱 |-- ${pageContext.request.remoteAddr } 取得用戶的IP 地址 |-- ${pageContext.session.new} 判斷session 是否爲新的 |-- ${pageContext.session.id} 取得session 的ID |-- ${pageContext.servletContext.serverInfo} 取得主機端的服務信息(Apache Tomcat/5.0.28) | pageScope requestScope sessionScope applicationScope |與做用域一一對應的四個隱式對象 | |--例:session.getAtribute("username") == ${sessionScope.username} param paramValues |與輸入有關的兩個對象 | |--例1:request.getParameter(String name) == ${param.name} |--例2:request.getParameterValues(String name) == ${paramValues.name} header headerValues |header 儲存用戶瀏覽器和服務端用來溝通的數據 |headerValues 同一標頭名稱擁有不一樣的值,此時必須改成使用headerValues 來取得這些值 | |-- ${header["User-Agent"]} 取得瀏覽器版本 cookie initParam |web.xml中配置: |<context-param> | <param-name>testname</param-name> | <param-value>testvalue</param-value> |</context-param> | |${initParam["testname"]}
算術運算符有五個: +、-、*或$、/或div、%或modapp
關係運算符有六個: ==或eq、!=或ne、<或lt、>或gt、<=或le、>=或gejsp
邏輯運算符有三個: &&或and、||或or、!或not函數
其它運算符有三個: Empty運算符、三目運算符
|-${empty param.name} |-${A?B:C}
須要引入
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
例:${fn:toUpperCase("Www.baidu.Com")}
更多須要查看jstl.jar中的fn.tld文件
1:建立EL表達式函數處理類, 每一個函數對應類中的一個靜態
2:建立tld文件,定義表達式函數
3:在web.xml中配置(可省略)
4:在jsp中導入並使用
//能夠選擇繼承TagSupport public class ELtag{ public static String reverse(String str){ return new StringBuffer(str).reverse.toString(); } }
<?xml version="1.0" encoding="GBK"?> <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>el</short-name> <!-- 定義函數:reverse --> <function> <name>reverse</name> <function-class>com.java.main.util.Eltag</function-class> <!-- 定義函數的對應方法 --> <function-signature> java.lang.String reverse(java.lang.String) </function-signature> </function> </taglib>
<jsp-config> <taglib> <!-- 配置標籤的引用地址 JSP頁面中引用時使用--> <taglib-uri>/eltag</taglib-uri> <!-- 配置標籤的TLD文件地址 --> <taglib-location>/WEB-INF/Eltag.tld</taglib-location> </taglib> </jsp-config>
<%@ taglib uri="/eltag" prefix="el" %> ${el:reverse("ad") }
<%@ page isELIgnored="true"%> 表示是否禁用EL語言,JSP2.0中默認的啓用EL語言.
還能夠在web.xml中配置<el-ignored>元素
<jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <el-ignored>true</el-ignored> </jsp-property-group> </jsp-config>