EL表达式和JSTL

EL表达式

什么是EL表达式

EL(Expression Language):是JSP 2.0增加的技术规范,表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化,。

JSP中使用Java脚本的局限:

在JSP页面中嵌入大量的Java代码,访问结构比较复杂的数据时代码烦琐,且经常需要强制类型转换。

EL 特点

自动转换类型:

在 JSP EL 表达式内可以使用整型数、浮点数、字符串、常量 true、false 以及 null。

EL得到某个数据时可以自动转换类型。

EL 语法

${ EL expression}

在EL表达式中,如果属性值为首字母大写,则需要将首字母进行小写书写。属性内部大写没有影响。

  • 通过变量名取值
  • 获取对象的属性值
  • 获取集合元素
  • 执行表达式

作用域

按照page → request → session → application的作用域顺序依次查找,找到即返回,最终找不到返回null。

属性范围 EL中的名称
page pageScope,例如${pageScope.username}表示在page作用域查找变量username,找不到返回null
request requestScope
session sessionScope
application applicationScope

[ ]与.运算符

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

当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。例如:
{user.My-Name}应当改为{user["My-Name"] }

如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如:
${sessionScope.user[data]}中data 是一个变量

没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。

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

EL表达式

执行表达式

关系操作符

关系操作符 说明 示例 结果
==(或eq) 等于 ${23==5}${23 eq 5} ${"a" =="a"}${"a" eq "a"} false true
!=(或ne) 不等于 ${23!=5}${23 ne 5} true
<(或lt) 小于 ${23<5}${23 lt 5} false
>(或gt) 大于 ${23>5}${23 gt 5} true
<=(或le) 小于等于 ${23<=5}${23 le 5} false
>=(或ge) 大于等于 ${23>=5}${23 ge 5} ture

逻辑操作符

逻辑操作符 说明 示例 结果
&&(或and) 逻辑与 如果A为true,B为false,则${ A && B } (或${ A and B } ) false
||(或or) 逻辑或 如果A为true,B为false,则${ A || B} (或 ${ A or B } ) true
! (或not) 逻辑非 如果A为true,则${ ! A } ( 或${ not A } ) false

Empty操作符

若变量 a为null,或长度为零的String,或size为零的集合
${ empty a }返回的结果为true
${ not empty a }${ ! empty a }返回的结果为false

EL隐式对象

EL隐式对象分类

隐式对象:

  • 作用域访问对象
    • pageScope
    • requestScope
    • sessionScope
    • applicationScope
  • 参数访问对象
    • param
    • paramValues
  • JSP隐式对象
    • pageContext

EL隐式对象介绍

对象名称 说 明
pageScope 与page作用域相关联的Map对象
requestScope 与request作用域相关联的Map对象
sessionScope 与session作用域相关联的Map对象
applicationScope 与application作用域相关联的Map对象
param 按照请求参数名称返回单一值的Map对象
paramValues 按照请求参数名称返回String数组的Map对象
pageContext 提供对页面信息和JSP内置对象的访问

JSTL

为什么使用JSTL

EL表达式封装了数据访问的功能,而JSTL标签库则封装了逻辑控制、循环控制以及数据格式化等功能,二者结合使用才能完整实现动态页面的开发需求。

什么是JSTL?

Java server pages standarded tag library,即 JSP标准标签库

JSTL的优点:

  • 提供一组标准标签库
  • 可用于编写各种动态功能

JSTL通常会与EL表达式合作实现JSP页面的编码。

基础标签

c:out

<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>

c:out 标签有如下属性:

上一篇:maven中使用jstl


下一篇:JavaWeb实战,凌尚书城项目,使用 jsp+jQuery+EL+jstl+Ajax+MySql+JDBC+Tomcat+Java