[05] EL表达式


1、概述

EL = Expression Language 表达式语言,用来在JSP中替代<%=%>的数据表达方式,EL更简洁,它的语法如下:
${...}  
1
 
1
${...}  

例如输出名为username的参数的值,使用JSP表达式为<%=request.getParameter("username")%>,而使用EL表达式则只需要${param.username},更贴心的在于,若该属性对应的值为null,前者会输出null,而EL则不显示任何内容。

2、EL内置对象

为了方便数据在不同情况下的输出,EL提供了11个内置对象。

2.1 param、paramValues

param用来输出 请求参数的值,格式为 ${param.请求参数的名称}
  • 获取请求参数名为name的值
  • <%=request.getParameter("name")%>
  • ${param.name} 

paramValues用来输出 一对多的请求参数值,返回的是数组,格式和param类似:
  • 获取请求参数名为hobbies的通过checkbox传递的第一个值
  • <%=request.getParameterValues("hobbies")[0]%>
  • ${paramValues.hobbies[0]}

2.2 pageScope、requestScope、sessionScope、applicationScope

  • pageScope  页面范围,即pageContext范围
  • requestScope  请求范围
  • sessionScope  会话范围
  • applicationScope  上下文范围

如获取名为user的请求属性的pwd属性值:
  • <%=((User)request.getAttribute("user")).getPwd() %>
  • ${requestScope.user.pwd}

当不指定范围时,将自动从pageScope开始查找直到applicationScope,如果没找到则不显示
  • ${user.pwd}

2.3 header、headerValues

这两个的用法则和param、paramValues用法相似,不过它们针对的是请求头的相关信息:
  • header输出某个请求头的值,如 ${header.accept} 输出请求头accept的值
  • headerValues返回“包含多个值的请求头”的值数组,如 ${headerValues.cookie[0]} 获取cookie中的第一个值

2.4 cookie、initParam

cookie用来获取cookie的值:
  • ${cookie.JSESSIONID.value}

initParam用来获取上下文参数的值:
  • ${initParam.path}
<context-param>
    <param-name>path</param-name>
    <param-value>/WEB-INF/props</param-value>
</context-param>
 
1
<context-param>
2
    <param-name>path</param-name>
3
    <param-value>/WEB-INF/props</param-value>
4
</context-param>

3、运算符

EL中支持五种基本的算术运算符:
  • ${19+2}
  • ${19-2}
  • ${19*2}
  • ${19/2}
  • ${19%2}

EL中支持六种比较运算符,返回值为true或false:
  • ${19 == 2}
  • ${19 != 2}
  • ${19 < 2}
  • ${19 > 2}
  • ${19 <= 2}
  • ${19 >= 2}

EL中支持三种逻辑运算符,对布尔型值进行运算,同样返回true或false:
  • ${19>2 && 19>3}
  • ${19>2 || 19<3}
  • ${!19>2}

EL中还有两种其他类型的运算符:
  • ${empty param.name} 判断请求参数名为name的值是否为null或"",如果是则返回true,否则false
  • ${a?b:c} 三元运算符

4、其他

EL中提供 . 和 [] 两种操作符号来获得数据,如下面两行代码效果等同:
  • ${requestScope.cust2.custname}
  • ${requestScope["cust2"]["custname"]}

但在以下情况,只能使用[]:
  • 数组或集合的索引(${paramValues.hobbies[0]})
  • 属性名包含_或者.等非字母或数字的字符(${param["user_name"]})
  • 属性名是变量(${param[paramName]})

另外,EL可以方便地进行数据类型转换,如  ${param.count + 10} 会String转换后和10做数学运算

转载于:https://www.cnblogs.com/deng-cc/p/8390721.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值