EL表达式
1-1 EL表达式概述
(1)什么是EL表达式
EL:Expression Language表达式
(2)EL表达式的作用
a.获取数据
代替传统的getParameter
getAttribute
……
b.执行运算
1-2 EL表达式的语法
${数据或运算}
${key}
1-3使用EL来获取域中的数据
使用EL表达式来代替getAttribute,来取得域中的数据,是我们以后最常见的操作.
(1)xxxScope隐含对象的使用
${pageScope|requestScope|sessionScope|applicationScope.属性名}
(2)xxxScope的省略方式
在实际项目开发中,为了使用方便,xxxScope是可以省略掉的.
假设现在有一个el
${str1}
以上el表达式没有指定任何的隐含对象,默认是从最小的域开始搜索str1这个key,如果没有搜索到,到较大的一个域继续搜索,如果搜索到了,则显示key对应的value值,就不继续向上搜索了.如果一直搜索到上下文域,仍然搜索不到,则返回 空串 .
(3)EL表达式对于空串的处理
取值如果为null,显示的是空串,不影响用户体验,不让用户看到null
1-4 使用EL表达式取得其他常用类型的值
(1)获取数组值
${域中的名称[index]}
例如:${strArr[1]}需要接jstl才能遍历数组
(2)获取List值
${域中的名称[index]}
例如:${strList[1]}
(3)获取Map值
${域中的名称.键名}
例如:${strMap.m1}
(4)获取domain中的属性值
${域中的名称.属性}
例如:${p.name}
el表达式不用导包,自动识别
EL执行运算
(1)EL执行运算的方式及返回值
执行加法运算,如果两边遇到字符串,会将字符串格式化成数字,如果格式化失败,则报500
empty可以判断是否为空和长度是否为0
EL中的其他常用隐含对象
(1)pageContext
常用方式:${pageContext.request.contextPath}
想要在el表达式中用到request对象,但是没有request,用pageContext来取,但是 pageContext.request还原成java代码是pageContext.getRequest(),就象jsp的内置对象一样,可以取得request
(2)param
获取请求参数
${param.str}相当于request.getParameter(“str”);
(3)paramValues
获取请求参数数组,搭配jstl迭代来使用${paramValues.hobby[1]}
相当于request.getParameterValues(“str”); 一个key对应的多个value的情况下
(4)initParam
获取全局参数${initParam.encoding}
相当于request.getInitParameter(“str”);
JSTL
JSTL标签库概述
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x以上。在JSP 2.0中也是作为标准支持的。
JSTL标签库的作用
结合EL表达式来使用,代替jsp页面中的scriptlet。
JSTL的分类
core:核心类库
fmt:格式化|国际化(交给servlet处理)
xml:已过时
sql:已过时
函数库:平时很少使用
2-4 JSTL使用步骤
(1)导入jar包 (jstl.jar和standard.jar)
(2)在页面上导入标签库
<%@taglib prefix="" uri=""%>
<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
(3)引用方式:
c标签:所需功能
2-5核心类库core需要掌握的内容
(1)c:if
使用方式:
<c:if test="${el表达式}">满足的时候输出的内容</c:if>
例如:
<c:if test="${5>3}">
5大于3
</c:if>
(2)c:forEach
<!--
items:取得需要遍历的集合
需要搭配el表达式来从域中取得集合
var:每次遍历出来的元素
使用的时候需要搭配el表达式来使用
varStatus:当前元素的状态 常用属性:count 取得当前记录的序号
需要搭配el表达式来使用
begin:取值的起始下标
end:取值的结尾下标
step:取值的步长 表示设置隔几个值取一个值
-->
<c:forEach items="${sList}" var="s" varStatus="vs">
${s}---${vs.count}<br/>
</c:forEach>
(3)c:set 和 c:choose的使用(了解)
<c:set var="count" value="4"/>
<!-- 相当于 pageContext.setAttribute("count",4) -->
<c:choose>
<c:when test="${ count ==1 }">
计数1
</c:when>
<c:when test="${ count ==2}">
计数2
</c:when>
<c:when test="${ count ==3 }">
计数3
</c:when>
<c:otherwise>
不在范围内
</c:otherwise>
</c:choose>