EL表达式:${EL表达式}
1、获取数据:
1、EL表达式只能获取四大域中的数据。
2、执行时会调用pageContext.findAttribute(),分别从page,request,session,application中查找相应的对象,找到则返回该对象,找不到则返回”“,不是返回null。EL表达式中永远不会出现空指针异常。
3、p.name:调用域中名称为p对象的getName方法,点运算符是用于获取属性的取值的。
4、.运算符>[]运算符:.运算符能做的,[]也能做。[]能做的,.不一定能做。
如:
p.name==
{p[‘name’]}==${p[“name”]}
[]运算符优秀在可以取不符合Java命名规范的东西。
2、数学逻辑运算:
1、empty运算符:如果判断的对象是null或者空字符串,都返回true。对于集合,即使集合对象本身不是null,没有任何元素,也返回true。
2、EL表达式不支持字符串连接操作。
3、获取JSP的内置对象(11大EL内置对象):
1、不要与JSP的内置对象和范围名称搞混;
2、11大EL隐式对象中,其中一个(pageContext)是表示自身对象外,其余都是表示的Map结构
3、内置对象如下:
EL隐式对象名称 Java类型 备注
pageContext javax.servlet.jsp.PageContext 与JSP中的内置对象完全相同
剩余的都是代表的Map集合
pageScope java.util.Map 代表着PageContext页面范围域那个Map
requestScope java.util.Map 代表着ServletRequest请求范围域那个Map
sessionScope java.util.Map 代表着HttpSession会话范围域那个Map
applicationScope java.util.Map 代表着ServletContext应用范围域那个Map
param java.util.Map 代表着请求参数。key:请求参数的名称。value:请求参数的值,它是一个字符串。
paramValues java.util.Map 代表着请求参数。key:请求参数的名称。value:请求参数的值,它是一个字符串数组。
header java.util.Map 代表着请求消息头。key:头名称。value:头值,它是一个字符串。
headerValues java.util.Map 代表着请求消息头。key:头名称。value:头值,它是一个字符串数组。
cookie java.util.Map 代表客户端提交的Cookie的Map。key:cookie的name。value:cookie对象本身
initParam java.util.Map 代表着全局初始化参数(web.xml中context-param)key:参数名称。value:参数值
4、调用普通类的静态方法(EL函数—自定义标签):
a、编写一个普通的java类,提供一个静态方法,如:
public class FunctionDemo {
public static String toUpperCase(String str){
return str.toUpperCase();
}
}
b、在JavaWeb应用的WEB-INF目录下建立一个扩展名是tld(taglib definition)的XML文件(参考Tomcat中的示例)。
<?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.itcast.cn/myfn</uri>
<function><!-- 定义函数 -->
<name>toUppercase</name>
<function-class>cn.itcast.el.FunctionDemo</function-class>
<function-signature>java.lang.String toUpperCase( java.lang.String )</function-signature>
</function>
</taglib>
c、(可选步骤)前提是把tld文件放到了WEB-INF目录下。
告知应用,tld文件和tld中的uri的对应。修改web.xml,增加以下内容:
<jsp-config>
<taglib>
<taglib-uri>http://www.itcast.cn/myfn</taglib-uri>
<taglib-location>/WEB-INF/myfn.tld</taglib-location>
</taglib>
</jsp-config>
d、在JSP中使用。
用taglib指令,引入自定义的EL函数库
<%@ taglib uri="http://www.itcast.cn/myfn" prefix="myfn"%>
${myfn:toUppercase(p)}