EL基础知识

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

相关文章
相关标签/搜索