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做数学运算

[05] EL表达式的更多相关文章

  1. EL表达式 JSTL中的常用EL函数 动态数据的国际化

    ELppt: EL 全名为Expression Language.EL主要作用: 获取数据: •EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数据.( ...

  2. EL表达式(转)

    转自:http://www.cnblogs.com/Fskjb/archive/2009/07/05/1517192.html EL 全名为Expression Language EL 语法很简单,它 ...

  3. 访问前台页面${pageContext.request.contextPath}/el表达式失效问题解决

    访问前台页面${pageContext.request.contextPath}/el表达式失效问题解决 2017年05月09日 10:54:18 AinUser 阅读数:922 标签: el表达式4 ...

  4. EL表达式格式化日期

    在EL表达式中要显示"yyyy-MM-dd"格式的日期: 使用<fmt:>格式化标签     1 在页面上导入   <%@ taglib prefix=" ...

  5. js中“使用”el表达式

    在说相关内容前,一定要先熟悉jsp运行原理: http://blog.csdn.net/lmsnju/article/details/4813488 http://hi.baidu.com/mingf ...

  6. jsp页面无法识别el表达式的解决方案

    今天在写一个springmvc的小demo时,碰到一个问题,在jsp页面中书写为${user.username}的表达式语言,在浏览器页面中仍然显示为${user.username},说明jsp根本不 ...

  7. El表达式的关系运算符

    El表达式的关系运算符: ==  对应  eq !=   对应  ne >    对应  gt <    对应  It

  8. java web学习总结(三十一) -------------------EL表达式

    一.EL表达式简介 EL 全名为Expression Language.EL主要作用: 1.获取数据 EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数 ...

  9. EL表达式的算术运算

    一个例子--乘法运算 ${book.bookCount * book.bookPrice } 两个不同对象的EL表达式的算术运算同理 ${student.studentNum * book.bookP ...

随机推荐

  1. unity相机跟随Player常用方式

    固定跟随,无效果(意义不大) public class FollowPlayer : MonoBehaviour { public Transform Player; private Vector3 ...

  2. 2017-10-29 用中文命名API的意义和途径

    "中文编程"知乎专栏原链 在前文对在代码中使用中文命名的质疑与回应中阐述了在代码中使用中文命名的益处. 此文将从软件使用者的角度阐述对API中文化的意义并探讨实现途径. 当然, 文 ...

  3. 【工具相关】Web-Sublime Text2-注释

    按Command+/ 会出现<!----> 如图所示: 参考资料:<菜鸟教程>

  4. 不用Visual Studio,5分钟轻松实现一张报表

    常规的报表设计,如RDLC.水晶报表等,需要安装Visual Studio,通过VS提供的报表设计界面来设计报表,通过VS设计报表对.NET开发者而言非常方便,但是对于非开发人员,要安装4G的一个VS ...

  5. Java虚拟机(一)结构原理与运行时数据区域

    我们来学习Java虚拟机的结构原理与运行时数据区域. 1.Java虚拟机概述 Oracle官方定义的Java技术体系主要包括以下几个部分: Java程序设计语言 各种平台的Java虚拟机 Class文 ...

  6. 慕学在线网0.5_xadmin的全局配置

    全局配置包括了以下修改: 开启主题功能: 修改左上角的"django Xadmin"和主界面的"我的公司": App菜单收叠: App名字修改(汉化). 1.把 ...

  7. sql server 运维时CPU,内存,操作系统等信息查询(用sql语句)

    我们只要用到数据库,一般会遇到数据库运维方面的事情,需要我们寻找原因,有很多是关乎处理器(CPU).内存(Memory).磁盘(Disk)以及操作系统的,这时我们就需要查询他们的一些设置和内容,下面讲 ...

  8. iOS 多线程之GCD的简单使用

    在iOS开发中,遇到耗时操作,我们经常用到多线程技术.Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法,只需定义想要执行的任务,然后添加到适当的调度队列 ...

  9. 第七章 鼠标(CONNECT)

    /* CONNECT.C -- Connect-the-Dots Mouse Demo Program (c) Charles Petzold,1998 */ #include <Windows ...

  10. 离群点检测与序列数据异常检测以及异常检测大杀器-iForest

    1. 异常检测简介 异常检测,它的任务是发现与大部分其他对象不同的对象,我们称为异常对象.异常检测算法已经广泛应用于电信.互联网和信用卡的诈骗检测.贷款审批.电子商务.网络入侵和天气预报等领域.这些异 ...