EL基础知识

EL:
EL表达式:向界面输出内容,只能输出,不能设置。
基本语法:${}


1获取数据:替代jsp中的<%%>
只能获取四大域对象中的数据


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"]}
点运算符可以处理的,可以用[]运算符来处理,效果相同

获取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'] }

${empty p}判断对象是否为null或者空字符串,如果是则返回true,如果不是则返回false,
还能判断一个集合是否有元素,如果没有返回true,反之返回false


三元运算符:${判断?为真时执行的语句:为假时执行的语句}

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对象 没有

前面5个就是从不同的域中查询:
代码:
${sp}从所有域中查询
${sessionScope.sp}从回话中查询

param:获取单个的请求参数
${param.name}获取请求参数中name的属性
${paramValues.password[0]}
${paramValues.password[1]}
获取的是请求参数中所有的name的属性,返回的是一个Map集合

header:获取请求消息头
${header['Accept-Language']}请求消息头里有“-”,不能用点运算符。
headerValues:获取重名的请求消息头
${headerValues['Accept-Language'][0]}

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)}//含头不含尾

转载于:https://my.oschina.net/u/1589656/blog/271453

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值