EL表達式
1.EL是jsp內(nèi)置的表達式語言
jsp2.0開始笨篷,不讓再使用java腳本,而是使用EL表達式和動態(tài)標簽來代替java腳本
EL替代的式<%= ...... %>丹拯,也就是說EL只能做輸出
2.EL表達式來讀取四大域
${xxx},全域查找名為xxx的屬性,如果不存在,輸出空字符串球凰,而不是null
{requestScope.xxx}腿宰、
{applicationScope.xxx}缘厢,指定域獲取屬性
3.JavaBean導航
<%@page import="Demo_01."* %>
<body>
<%
arr a = **new** arr();
a.setS("XXX");
Person p = **new** Person();
p.setAge(22);
p.setName("李四");
p.setArr(a);
request.setAttribute("per", p);
%>
<h2>使用el獲取request域的值</h2>
${requestScope.per.arr.s}<!-- request.getAttribute("per").getArr().getS() -->
</body>
4.EL的11個內(nèi)置對象
EL可以輸出的東西都在11個內(nèi)置對象中吃度,其中有10個事Map類型,pageContext不是Map贴硫,它就是PageContext類型椿每。
param:對應(yīng)參數(shù),key為參數(shù)名英遭,value為參數(shù)值间护,適用于單值的參數(shù)。
paranValues:對應(yīng)參數(shù)挖诸,key為參數(shù)名汁尺,value為多個參數(shù)值,適用于多值的參數(shù)多律。
header:對應(yīng)請求頭痴突,key為頭名稱,value為頭值狼荞,適用于單值請求頭辽装。
headerValues:對應(yīng)請求頭,key為頭名稱相味,value為多個頭值拾积,適用于多值請求頭。
initParam:獲取<context-param>內(nèi)的參數(shù)
cookie:Map<String,Cookie>類型丰涉,其中key事cookie的name拓巧,value事cookie對象。
${cookie.uesrname.value}
- pageContext:它事PageContext類型一死,${pageContext.request.contextPath}(項目名-以后的表單還要超鏈接都以它開頭)
5.El的函數(shù)庫(由JSTL提供)
- 導入標簽庫<%@taglib prefix=”fn” uri=”http://java.sun/jsp/jstl/functions”%>
寫法:${fn:length(xxx)}
6.自定義函數(shù)類
寫一個java類玲销,類中可以定義0~N個方法,但必須事static摘符,而且有返回值
在WEB-INF目錄下創(chuàng)建一個tld文件贤斜,要在jstl.jar中復制開頭和結(jié)尾策吠,并且在Java文件中有幾個方法,就要在tld文件中寫幾個function瘩绒。
<function>
<description> // 方法說明(可不寫)
Tests if an input string contains the specified substring in a case insensitive way.
</description>
<name>fun</name> // 方法名(自己起名字)
<function-class>cn.itcast.MyFunction</function-class>
/ / Java文件的位置
<function-signature>java.lang.String fun()</function-signature>
// 對應(yīng)的方法
<example> // 例子(可不寫)
<c:if test="${fn:containsIgnoreCase(name, searchString)}">
</example>
</function>
- 在jsp頁面導入標簽庫
<%@ taglib prefix=”xx” uri=”/WEB-INF/tlds/Xxx.tld” %>
- 在jsp頁面使用自定義函數(shù):${xx:fun() }