EL和JSTL
出现的原因是JSP脚本的不足:
---代码结构混乱
---脚本与HTML混合,容易出错
---代码不易于维护
EL表达式简介
什么是EL?
---Expression Language(表达式语言)
---EL定义了一系列的隐含对象和操作符,使开发人员能够很方便地访问页面的上下文,以及不同作用域内的对象。
EL的特点
---自动转换类型 ·EL得到某个数据时可以自动转换类型
---使用简单
EL表达式的作用
---页面结构清晰 ---代码可读性高,易于维护
EL表达式语法
--- ${EL表达式}
EL操作符
---操作符”.” :获取对象的属性 例如:${news.nTitle}
---操作符”[]”:获取对象的属性 例如:${news[“nTitle”]} 获取集合中的对象例如:${list[0]}
EL隐式对象
---作用域访问对象 pageScope、requestScope、sessionScope、applicationScope
---参数访问对象 param、paramValues ---JSP隐式对象 pageContext
对象名称 | 说明 |
pageScope | 返回页面范围的变量名,这些名称已映射至相应的值 |
requestScope | 返回请求范围的变量名,这些名称已映射至相应的值 |
sessionScope | 返回会话范围的变量名,这些名称已映射至相应的值 |
applicationScope | 返回应用范围内的变量,并将变量名映射至相应的值 |
param | 返回客户端的请求参数的字符串值 |
paramValues | 返回映射至客户端的请求参数的一组值 |
pageContext | 提供对用户请求和页面信息的访问 |
EL表达式不足之处在于无法实现逻辑控制,而且不能循环遍历集合
JSTL简介
Java Server Pages Standard Tag Library:JSP标准标签库 实现JSP页面中的逻辑控制
优点:--提供一组标准标签 --可用于编写各种动态JSP页面
JSTL通常会与EL表达式合作实现JSP页面的编码
名称 | 资源标识符 | 前缀(prefix) |
核心标签库 | http://java.sun.com/jsp/jstl/core | c |
国际化/格式化标签库 | http://java.sun.com/jsp/jstl/fm | fmt |
XML标签库 | http://java.sun.com/jsp/jstl/xml | x |
数据库标签库 | http://java.sun.com/jsp/jstl/sql | sql |
函数标签库 | http://java.sun.com/jsp/jstl/functions | sn |
使用要先导入包jstl.jar和standard.jar文件,在JSP使用需要导入标签指令
语法:%@taglib uri=” http://java.sun.com/jsp/jstl/core” prefix=”c”%
JSTL标准标签库内的标签:
核心标签库---
通用标签
set :设置制定范围的变量值
<c:set var=”name” value=”张三” scope=”request” />
<c:set value=”value” target=”target” property=”property” />
out:计算表达式并将结果输出显示 转义特殊字符
<c:out escapeXml=”Y” value=”<a href=’http://www.baidu.com’>百度</a>”/>
<c:out value=”<a href=’http://www.baidu/com’>百度</a>”/>
remove:删除指定范围内的变量
<c:remove var=”msg” scope=”page”/>
条件标签
If:实现Java语言中if语句的功能
<c:if test=”codition” var=”name” scope=”applicationArea”></c:if>
test:判断条件表达式,返回true/false
var:该变量用于保存返回的true/false
scope:指定var变量的作用域
choose:实现java语言中if-else语句的功能
<c:choose var=”varName” scope=”scope”>
<c:when test=”condition”>
主题内容
</c:when>
<c:otherwise>
主题内容
</c:otherwise>
</c:choose>
迭代标签
forEach:实现对集合中对象的遍历
<c:forEach items=”collection” var=”name” begin=”start” end=”end” step=”count”
varStatus=”status”>
循环体代码
</c:forEach>
例:遍历循环map
<c:forEach var=”entry” items=”${map}”>
${entry.key}
${entry.value}
</c:forEach>
<c:url>超链接标签 语法:<c:url value=”url”/>
<c:param>参数标签 语法:<c:param name=”name” value=”value”>
<c:import>导入标签 语法:<c:import url=”URL”/>
url:导入资源的路径
<ftm:formatDate>日期格式化标签