EL:
EL表达式:向界面输出内容,只能输出,不能设置。
基本语法:${}html
1获取数据:替代jsp中的<%%>
只能获取四大域对象中的数据java
2执行简单的数学和逻辑运算
"."运算符 根据对象获取属性
[] 获取有索引的元素,如集合,也能实现点运算符的功能
获取list元素:
<%
List list=new ArrayList();
list.add(new Person("djw"));
list.add(new Person("www"));
pageContext.setAttribute("p", list);
%>
${p[1].name }=${p[1]["name"]}
点运算符能够处理的,能够用[]运算符来处理,效果相同web
获取map中的元素:
<%
Map m=new HashMap();
m.put("djw", new Person("sss"));
m.put("www", new Person("ddd"));
pageContext.setAttribute("p", m);
%>
${p.djw.name}=${p["djw"]['name'] }cookie
${empty p}判断对象是否为null或者空字符串,若是是则返回true,若是不是则返回false,
还能判断一个集合是否有元素,若是没有返回true,反之返回falsesession
三元运算符:${判断?为真时执行的语句:为假时执行的语句}app
3 EL的11个隐式对象
EL表达式内置对象 表示类型 备注 对应的jsp内置对象
pageContext javax.servlet.jsp.PageContext 和JSP的内置对象彻底同样 pageContext
requestScope java.util.Map<String,Object> 表明者ServletRequest中的那个Map 没有
pageScope java.util.Map<String,Object> 表明者PageContext中的那个Map 没有
sessionScope java.util.Map<String,Object> 表明者HttpSessiont中的那个Map 没有
applicationScope java.util.Map<String,Object> 表明者ServletContext中的那个Map 没有
param java.util.Map<String,String> 表明一个请求参数 没有
paramValues java.util.Map<String,String[]> 表明重名的请求参数 没有
header java.util.Map<String,String> 表明一个请求消息头 没有
headerValues java.util.Map<String,String[]> 表明重名的请求消息头 没有
initparam 表明xml配置文件中的全局参数 没有
cookie java.util.Map<String,cookie> key表明cook的name,value表明cookie对象 没有jsp
前面5个就是从不一样的域中查询:
代码:
${sp}从全部域中查询
${sessionScope.sp}从回话中查询函数
param:获取单个的请求参数
${param.name}获取请求参数中name的属性
${paramValues.password[0]}
${paramValues.password[1]}
获取的是请求参数中全部的name的属性,返回的是一个Map集合url
header:获取请求消息头
${header['Accept-Language']}请求消息头里有“-”,不能用点运算符。
headerValues:获取重名的请求消息头
${headerValues['Accept-Language'][0]}xml
initparam
${initparam.encoding} utf-8
cookie:
${cookie.JSESSIONID.value}cookie的值
${cookie.JSESSIONID.name}cookie的名称
4 调用java中的静态方法
EL表达式没法直接对字符串进行操做:
jsp中的代码:
<%
pageContext.setAttribute("s","abvs");
%>
${myfun:toUppercase(s)}
建立java类用以封装方法:
public class MyFunctions {
public static String toUppercase(String str){
return str.toUpperCase();
}
}
建立tld文件
<?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>
//短名称和下行的url命名空间功能相同,用以与jsp文件关联,并无实际意义
<short-name>myfun</short-name>
<uri>www.daijiawei.cn</uri>
<function>
//方法名
<name>toUppercase</name>
//类全名
<function-class>text.jsp.MyFunctions</function-class>
//类的签名
<function-signature>java.lang.String toUppercase( java.lang.String )</function-signature>
</function>
</taglib>
EL标准函数:
举例:
1 toLowerCase
${fn:toLowerCase(x)}
大写变小写
2 toUpperCase
小写变大写
3 trim
去掉两端空格
4 esCapeXml
html转义字符
5 length
字符长度
6 split
分割字符串
pageContext.setAttribute("p", "2009-10-21");
${fn:split(p,"-")[0]}
${fn:split(p,"-")[1]}
7 join
链接字符串
pageContext.setAttribute("p", new String[]{"2001","2","21"});
${fn:join(p,"-")}
8indexOf
字符索引
pageContext.setAttribute("p", "asdadsaf);
${fn:indexOf(p,"f")}
9contains
是否包含字符
10substring截取字符串${fn:substring(p,0,4)}//含头不含尾