EL表达式


EL(Expression Language)是jsp2.0的一个主要组件,在jsp页面中提供了简化访问数据和静态方法的机制。EL表达式的语法格式为${expression},在使用EL表达式时不需要引入JSTL标签,除非使用迭代标签.

1、存取数据

EL提供”.”和”[]”两种运算符来存取数据。

当要存取的属性名称中包含一些特殊字符,如.、?或全部是数字时,就一定要使用”[]”来存取数据,例如${user.myname}必须要改为${user[“myname”]}

如果要动态取值时,就可以使用”[]”,而”.”无法做到动态取值。例如

{sessionScope.user[data]} 中data是一个变量。

 

2、变量

EL表达式中主要的隐式对象:

l  pageScope

l  requestScope

l  sessionScope

l  applicationScope  

EL表达式默认查找变量的顺序是按照以上顺序从隐式对象中取值,为了提高效率,我们可以直接指定搜索域.

2.1、获取属性

后台  request.setAttribute("a","hello");

前台   ${requestScope.a}

此外EL表达式可以级联获取对象属性的值

后台: request.setAttribute("user",user);

前台:   ${user}     取得user对象

${user.userName}    取得user对象的userName属性的值

${user.group.name}   取得user对象所属组的组名   

2.2、访问数组元素

后台:String[]  str= newString[]{"a","b",”c“};

       request.setAttribute("str",str);

 前台:   ${str[1]}           //通过下标来访问数组元素,下标从0开始

 注意:使用EL表达式,只能获得数组、集合或Map中的某一元素,若要遍历集合中的元素,则需结合JSTL

2.3、访问集合元素

     后台: ArrayList list = new ArrayList();

while(i < 10)

{

User user = new User();

                   user.setId(i);

user.setUserName("user"+i);

list.add(user);

}

           request.setAttribute("user",list);

      前台:

           ${user[3].userName} //通过下标来访问数组元素,下标从0开始

 

2.4、访问Map元素

  后台:Map map = new HashMap();

      map.put("user","user");

            request.setAttribute("map",map);

    前台:   ${map.user.name}  

 

2.5、运算符

    

运算符类别

运算符

算术运算符

+ - * (/ div)  (% mod)

关系运算符

(== eq)  (!= ne)  (<  lt)  (<=  le)  (>= ge)

逻辑运算符

&&(或and)  or(或or)  ! (或not)

判空运算符

empty,如${empty name}

举例:

${100%66}

${3<5}

${ssl==’ssl’}

 

2.6、表达式判空

 后台:request.setAttribute("value2","");

request.setAttribute("value3",newArrayList());

      request.setAttribute("value4","123456");

request.setAttribute("value5",null);

 前台:

${empty value1}

${empty value2}

${empty value3}

${empty value4}

${empty value5}

 结果

True

True

true       

false

true

2.7、总结

EL存取变量数据的方法很简单,例如${username},意思是取出某一域内名称为username的变量。因为我们并没有指定哪一个范围的username,所以它会依序从PageRequestSessionApplication范围查找。

假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传””,即空的字符串,而不是NULL

EL隐含对象

类别

隐含对象

描述

jsp页面

pageContext

代表此jsp页面的pageContext对象

作用范围

pageScope

用于读取page范围内的属性

requestScope

用于读取request范围内的属性

sessionScope

用于读取session范围内的属性

applicationnScope

用于读取application范围内的属性

请求参数

param

用于读取请求参数中的参数值,${param[“name”]}

等同于request.getParameter(“name”)

paramValues

用于获取请求参数中的参数值数组

请求头

header

用于获取指定的请求头

${header.host}

headerValues

用于获取指定请求头的值数组,

等同于request.getHeaders(String name)

Cookie

cookie

用于获取请求中的cookie

初始化参数

initParam

用于获取web应用程序上下文中的初始化参数,等同于

application.getInitParameter(String name)

 

注意 <%@ page isELIgnored="true" %> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值