EL表达式语言简介:
Expression Language 表达式语言
- 最初定义为JSTL1.0部分
- 在JSP2.0中,EL从JSTL中剥离出来,放置在JSP规范中,称为JSP2.0规范的一部分
- 在JSP中使用EL表达式,可以简化对象和变量的访问
-
- 如:在jsp中我们可以通过以下办法获取user对象的userName属性:
- <%=user.getUserName()%>
- <jsp:getProperty name=“user” property=“userName”/>
- 但是使用EL表达式我们可以这样获取
- ${user.userName}
- EL表达式优点
- 语法简单,所有的EL都是以”${”开始以”}”结束
- 使用方便,功能强大
- EL表达式使用范围
- 可以在模板数据中使用,如
- <div>${user.userName}</div>
- <input type=“text” name=“userName” value=“${user.userName}”>
- 可以在JavaScript和自定义标签中使用
- 但是不能在JSP脚本元素中使用
- EL基本语法
- 语法格式:${表达式}
- 注意:
- 当表达式没有指定变量或者对象的范围时,那么容器会依次从page—>request—>session—>application中查找该变量或对象
- 当然在访问对象或者变量时,可以指定对象或者变量的范围如
- ${pageScope.userName} 从pageContext中取出变量userName值
- ${requestScope.userName} 从request范围中取出变量userName值
- ${sessionScope.userName} 从session范围中取出变量userName值
- ${application.userName} 从application范围中取出变量userName值
- EL使用 [] 和 . 操作符来访问数据
- ${user.userName}
- ${user[“userName”]}
- [] 和 . 操作符的区别
- []左边的变量可以是Map,JavaBean,List或者数组
- . 左边的变量只能是一个JavaBean
-
- 在EL表达式中支持以下种类的运算符
- empty
- 算术运算符
- 比较运算符
- 逻辑运算符
- 条件运算符
- empty运算符,用于判断对象是不是null或者空(长度为0)
- 如 :当集合对象list是null或者元素个数为0时,${empty list}运算结果为true
-
- EL表达式语言中支持的算术运算符有:
运算符 |
作用说明 |
表达式实例 |
实例结果 |
+ |
加法 |
${1+3} |
4 |
- |
减法 |
${1-3} |
-2 |
* |
乘法 |
${1*3} |
3 |
/ (也可用div关键字) |
除法 |
${1/3} |
0.3333333333333 |
% (也可用mod关键字) |
取模 |
${1%3} |
1 |
- EL表达式支持的比较运算符有:
运算符 |
作用说明 |
表达式实例 |
实例结果 |
> 或关键字gt |
大于 |
${ 1 > 2 } |
false |
< 或关键字lt |
小于 |
${ 1 < 2 } |
true |
>= 或关键字ge |
大于等于 |
${ 1 >= 2 } |
false |
<= 或关键字le |
小于等于 |
${ 1 <= 2 } |
true |
== 或关键字eq |
等于 |
${ 1 == 2 } |
false |
!= 或关键字ne |
不等于 |
${ 1 != 2 } |
true |
- EL表达式语言中支持的逻辑运算符有
运算符 |
作用说明 |
表达式实例 |
实例结果 |
&& 或 and |
与运算 |
${false && true} |
false |
|| 或 or |
或运算 |
${false || true} |
true |
! 或 not |
非运算 |
${!false} |
true |
- EL表达式语言支持条件运算符的使用
- 条件表达式使用语法
- ${条件 ? 表达式 : 表达式}
- 条件表达式的实例:
-
- EL表达式语言内置对象:
- 为了在JSP中方便使用EL表达式,EL表达式语言提供了以下内置对象
对象名 |
对象作用说明 |
pageScoe |
用于表示当前页面范围的对象 |
requestScope |
用于表示当前请求范围的对象 |
sessionScope |
用于表示当前会话范围的对象 |
applicationScope |
用于表示当前应用范围的对象 |
pageContext |
用于表示JSP中的pageContext对象 |
param |
用于表示请求参数对象,作用同request.getParameter(String name) |
paramValues |
用于表示请求参数对象,作用同request.getParameterValues(String name) |
- EL内置对象的使用
- 请求参数的自动类型转换
- JSTL
- JavaServer Pages Standard Tag Libray
- 中文翻译为:JSP标准标签库
- JSTL由sun公司制定,Apache的Jakarta小组负责实现,最新的JSTL版本为1.2,JSTL1.2需要至少支持Servlet2.5、JSP2.1的Servlet容器
- JSTL的目标是简化JSP页面的开发
- JSTL标签库根据用途不同分为:
- 核心标签库
- 国际化标签库
- SQL标签库
- xml标签库
- 函数库
- 如果需要在JSP中使用JSTL,需要使用JSP的taglib指令元素将JSTL引入到当前页面中,引入taglib指令元素的语法:
<%@ taglib uri=“标签库的URI” prefix =“标签库前缀” %>
- 不同标签库的uri和prefix如下表:
功能范围 |
uri |
prefix |
核心标签库 |
http://java.sun.com/jsp/jstl/core |
c |
国际化标签库 |
http://java.sun.com/jsp/jstl/fmt |
fmt |
SQL标签库 |
http://java.sun.com/jsp/jstl/sql |
sql |
xml标签库 |
http://java.sun.com/jsp/jstl/xml |
x |
函数库 |
http://java.sun.com/jsp/jstl/function |
fn |
- 核心(core)标签库使用前首先通过指令元素taglib引入,core标签库引入的方式为:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- 核心标签库中标签分类:
- 一般用途的标签:out/set/remove/catch
- 条件标签:if/choose/when/otherwise
- 迭代标签:forEach/forTokens
- URL相关的标签:import/url/redirect/param
- 一般用途的核心标签(不常用)
- 标签中的value属性一般都可以使用EL表达式从指定范围中取值,也可以是普通字符串,如果为普通字符串可直接将字符串常量值作为value属性值即可
- 条件标签<c:if>
- 用于做逻辑判断,选择执行某块代码或者输出HTML内容
- c:if>标签属性:
- test :必须属性,为条件表达式,当条件表达式为true时执行<c:if>标签中内容,否则不执行。
- var :可选属性,为变量名,该变量中存放test条件表达式运算结果
- scope : 可选属性,为范围选项,指定var变量存储的范围
- 多分支选择结构标签<c:choose>/<c:when>/<c:otherwise>
- 以上三个标签配合使用,<c:when>和<c:otherwise>必须出现在<c:choose>中
- <c:choose>无属性,仅仅用于将多分支选择结构包裹起来
- 迭代标签<c:forEach>
- 用于对集合或者数组进行迭代,重复执行它的标签体,或者重复迭代固定次数
-
- items属性: 用于指定待迭代的集合或者数组
- var属性:用于存储迭代出的元素的变量
- varStatus属性:用于存储迭代状态对象,迭代状态对象有index、count、odd、even、first、last属性
- 迭代标签<c:forEach>
- <c:forEach>可以充当普通for选项
-
- 常用核心标签<c:import>
- <c:import>用于包含网络资源到当前JSP页面,类似<jsp:include>
- 国际化(fmt)标签库使用前首先通过指令元素taglib引入,fmt标签库引入的方式为:
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
- 常用的国际化标签有:
- 格式化日期:<fmt:formatDate value=“Date对象” pattern=“模式”>
- 格式化数字:<fmt:formatNumber value=“数字” pattern=“模式”>
- JSTL包含一系列标准函数(注意不是标签),大部分是通用的字符串处理函数。引用JSTL函数库的语法如下:
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/fn" %>
- 常用的函数有:
- fn:length()
- fn:endsWith()
- fn:indexOf()
- fn:replace()
- fn:substring()
- 函数库使用实例
-