EL表达式是Expression Language(表达式语言)可以替代JSP页面中数据访问时的复杂编码可以自动转换类型,并且使JSP的开发变得更加简单。
语法:${变量名}
// 在Servlet或JSP中保存数据
request.setAttribute("username", "LiYang");
// 在JSP中访问数据
姓名: ${username}
按照page → request → session → application的作用域顺序依次查找,找到即返回,最终找不到返回null。
点操作符———> ${user.name}
[ ]操作符———>${user["name"]}
Empty操作符
Empty操作符是一个前缀操作符,用于检测一个变量值是否为null或者为empty
例如:变量a不存在,则${empty a}返回的结果为true,${not empty a}返回的结果是false.
EL隐式对象介绍
JSTL是JSP标准标签库(JSP Standard Tag Library),提供一组标准标签,可用于编写各种动态功能.JSTL通常会与EL表达式合作实现JSP页面的编码.
JSTL常用标签有:set out remove if choose forEach
set:设置指定范围内的变量值
1将value值存储到范围为scope的变量variable中
<c:set var="variable" value="value" scope="scope"/>
—var属性值是设置的变量名
—value属性的值是富裕变量的值
—scope属性对应的是变量的作用域
2将value值设置到对象的属性中
<c:settarget="target" property="property" value="value"/>
—target属性是操作的JavaBean对象,可以用EL表达式来表示
—proprety属性对应JavaBean对象的属性名
—value属性是赋予JavaBean对象属性的值
out:计算表达式并将结果输出显示,类似于JSP中<%= %>,但功能更强大,代码更简洁
1不指定默认值
<c:out value="value" />
—value属性指需要输出的表达式的结果,可以通过EL表达式获取。
2指定默认值
<c:out value="value" default="default" />
—default属性是value属性的值为空时输出的默认值
remove:删除指定范围内的变量
<c:remove var="variable" scope="scope" />
—var属性是指待移除的变量名称
—scope属性是指移除的变量所在的范围。
if:实现Java语言中if语句的功能
<c:if test="codition" var="variable" scope="scope" >
…
</c:if>
—test属性是判断条件,当condition(可用EL表达式)的结果为true时,会执行主体内容,如果为false则不会执行。
—var属性定义变量,该变量存放判断的结果,该属性可省略
—scope属性是指var定义变量的存储范围。
choose:实现if - else if - else语句的功能
<c:choose>
<c:when test="condition1">
内容1
</c:when>
<c:when test="condition2">
内容2
</c:when>
……
<c:otherwise>
内容n
</c:otherwise>
</c:choose >
—<c:choose>是作为<c:when>和<c:otherwise>的父标签使用的,除了空白字符外,<c:choose>的标签体只能包含这两个标签
—<c:when>标签必须有一个直接父标签<c:choose>而且必须在同一个父标签下的<c:otherwise>标签之前出现,在同一个<c:choose>标签中,可有多个<c:when>标签
—<c:otherwise>标签必须有一个直接的父标签<c:choose>,而且必须是<c:choose>标签中最后一个嵌套的标签
—在运行时,判断<c:when>标签的测试条件是否为true,如果为true,那么标签体被JSP容器执行。如果为false,那么<c:otherwise>标签体将被执行。
forEach:实现对集合对象的遍历
<c:forEach items="collection" var="varName" begin="start" end="end" step="stepSize" varStatus="status" >
…循环体代码…
</c:forEach>
—var表示对当前成员的引用,即如果当前循环到第一个成员var就引用第一个成员,如果当前循环到第二个成员,他就引用第二个成员,以此类推。
—varStatus属性用于存放var引用的成员相关信息,如索引等。
—begin属性表示开始位置默认为0,该属性可省略
—end属性表示结束位置,该属性可省略
—step属性表示循环的步长,默认为1,该属性可省略
—items指被迭代的对象