2.5.JSTL标签与EL表达式
2.5.1.EL表达式
EL表达式 : Expression Language
目的:为了使JSP写起来更加简单
格式:${expression}
- EL 提供“.“和“[ ]“两种运算符来存取数据。${user.name}, ${user[“name”] }
- 支持算术操作符, 关系操作符, 逻辑操作符; ${empty A} , ${a?b:c}, ${25*(4+3)}
- 支持作用域 pageScope, requestScope, sessionScope, applicationScope
- param: 代替 request.getParameter(); 用于页面之间传递值
- 可以使用JSTL函数标签库,也可以自定义函数
2.5.2.JSTL标签
JSTL标签 : JavaServer Pages Standard Tag Library JSP 标准标签函数库
-
使用时要引入
jstl.jar
,standard.jar
两个jar包 -
经常与${e}EL表达式结合使用
-
在使用标签时先要使用jsp的taglib指令
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="xml" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
2.5.2.1.迭代标签 c:forEach
导入标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
标签用法
<c:forEach var= "别名" items= " ${集合}" varStatus= "序号" begin= "开始" end= "结束" step= "增幅" >
内容HTML代码
</c:forEach>
属性说明
属性 | 说明 |
---|---|
begin | 从第几条开始 |
end | 循环到第几条 |
step | 步长 |
var | 每一个元素的名称 |
items | 要循环的变量,使用${作用域中的名称} |
varStatus | 序号对象, 有count, index, first, last等属性 |
2.5.2.2.判断标签 c:if
导入标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
标签用法
<c:if test= "${条件}" >
内容HTML代码
</c:if>
注意 : 没有 else 标签
2.5.2.3.选择标签 c:choose
相当于switch结构
导入标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
标签用法
<c:choose>
<c:when test= " ${条件}" >内容HTML代码 </c:when>
<c:when test= " ${条件}" >内容HTML代码 </c:when>
<c:otherwise>内容HTML代码 </c:otherwise>
</c:choose>
注意 : 这是个结合嵌套标签, 有 多个标签共同使用
2.5.2.4.设值标签 c:set
对结构复杂的信息起别名, 可以别名调用
导入标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
标签用法
设置别名
<c:set value=“${信息}" var=“别名"></c:set>
调用
<%=别名%>
2.5.2.5.输出标签 c:out
导入标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
标签用法
<c:out value=“${要输出的信息}" default="默认值" escapeXml="是否转换特殊字符" ></c:out>
2.5.2.6格式化输出时间 fmt:formatDate
导入标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
标签用法
<fmt:formatDate value=" ${时间信息}" pattern="yyyy-MM-dd(输出模式)"></ fmt:formatDate>
注意 : value 属性必须是时间类型java.util.Date的信息
2.5.2.7.函数标签库
导入标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
标签用法
<c:choose>
<c:when test="${fn:length(list)>0 }">
${ list.size() }
</c:when>
<c:otherwise>
没有信息
</c:otherwise>
</c:choose>
说明 : 选择标签与函数标签 混合使用
在 EL表达式 中, 使用了 length() 函数 判断集合的长度
2.5.3.自定义标签
JSP自定义标签就是通过自定义标签实现类来实现复杂的、可重复利用的功能。简化jsp页面,提高代码的复用性
本质上说自定义标签 就是在页面上生成一段固定的HTML代码
2.5.3.1.定义标签类
public class MyTag extends TagSupport {
@Override
public int doStartTag throws JspException {
JspWriter out = this.pageContext.getOut();
try {
out.print("HTML代码");
} catch (IOException e) {
e.printStackTrace();
}
return super.doStartTag();
}
}
2.5.3.2.配置标签信息
编写标签配置文件 , 默认放在 web-inf 文件夹下, 扩展名是 .tld
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd" >
<taglib>
<tlibversion>标签版本</tlibversion>
<jspversion>JSP版本</jspversion>
<uri>引用名</uri>
<tag>
<name>标签名</name>
<tagclass>标签类路径</tagclass>
<attribute>
<name>属性名</name>
<required>是否是必须的</required>
<rtexprvalue>是否接收表达式</rtexprvalue>
</attribute>
</tag>
</taglib>
在使用的页面通过<%@taglib>
引入标签文件
2.5.3.3.标签类家族
javax.servlet.jsp.tagext