EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。
The Java Unified Expression Language is a special purpose programming language mostly used in Java web applications for embedding expressions into web pages. The Java specification writers and expert groups of the Java web-tier technologies have worked on a unified expression language which was first included in the JSP 2.1 specification (JSR-245), and later specified by itself in JSR-341, part of Java EE 7. ——Wikipedia
EL基本用法
- 语法结构
${expression}
- [ ]与.运算符
EL 提供“.“和“[ ]“两种运算符来存取数据。
当要存取的属性名称中包含一些特殊字符,如 . 或 - 等并非字母或数字的符号,就一定要使用“[ ]“。 例如:${ user. My-Name}应当改为${user["My-Name"]}
如果要动态取值时,就可以用“[ ]“来做,例如: ${sessionScope.user[data]}中data 是一个变量
- 变量
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传""。
EL的特点
EL除了具有语法简单、使用方便的特点,还有以下特点:
- EL可以与JSTL结合使用,也可以也JavaScript语句结合使用
<%-- EL与JSTL结合使用:遍历集合 --%>
<c:forEach var="productFor" items="${productList}">
${productFor.name} : ${productFor.price}<br>
</c:forEach>
<script type="text/javascript">
//EL与JavaScript语句结合使用:注意,只有在JSP页面的EL表达式才能生效,js文件中的EL表达式会原样输出,并不会解析
var productName ='${productList[0].name}';
console.log(productName);
</script>
-
EL中会自动进行类型转换,如果想通过EL输入两个字符串数值(如n1和n2)的和,可以直接通过“+”进行连接(如${n1+n2})
-
EL不仅可以访问一般变量,还可以访问JavaBean中的属性及嵌套属性和集合对象
-
EL中可以执行算术运算、逻辑运算、关系运算和条件运算等操作
-
EL中可以获取命名空间(PageContext对象,他是页面中所有其他内置对象的最大范围的继承对象,通过他可以访问其他内置对象)
-
在EL中可以访问JSP的作用域(request、session、application、page)
-在使用EL进行除法运算的时候,如果0作为除数,则返回无穷大Infinity,而不是返回错误
- 扩展函数可以与Java类的静态方法进行映射
实例源码 :https://github.com/ijiangtao/tao-jsp/blob/master/src/main/webapp/pages/product/product.jsp