文章目录
1.JSTL简介:
1.1为什么学习JSTL?
EL表达式只能代替JSP中的表达式,需要使用JSTL代替JSP中的脚本。
1.2JSTL全称:
JSP Standard Tag Library,JSP标准标签库
1.3JSTL作用:
- JSTL主要用于代替JSP中的脚本代码,提高JSP页面代码的可读性
- JSTL是以类似【HTML标签】的形式,书写java代码
1.4JSTL组成:
JSTL共有5组不同功能的标签库,需要重点掌握3种:
- 核心标签库
–<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"
%> - 格式化标签库
–<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"
%>` - 函数库
– <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"
%>
2.JSTL使用步骤
2.1先引入JSTL的jar包,到WEB-INF下:
- taglibs-standard-impl-1.2.1.jar
- taglibs-standard-spec-1.2.1.jar
2.2再使用taglib指令,引入需要的功能标签库
- 如:<%@
taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"
%> - prefix:指定标签库前缀
- uri:指定标签库路径
2.3使用JSTL标签
3.JSTL常用标签
3.1核心标签库
- <c:set>标签
–作用:<c:set>标签用于添加、修改域中的属性 - 属性
–scope是那个作用域
–var是属性名
–value是属性值
–target是要修改的目标对象
–property是要修改或添加的属性名 - 示例代码:
<%--声明变量--%>
<c:set scope="" var="" value=""></c:set>
<%--修改属性值--%>
<c:set target="" property="" value=""></c:set>
- <c:out>标签
– 作用:<c:out>用于计算一个表达式,并将结果输出到当前页面。功能类似于JSP表达式:<%=%>和EL表达式:${}
– 属性
属性 | 作用 | 参数类型 |
---|---|---|
defaut | 当value为null时显示的默认值 | Object |
escaXml | 是否对特殊字符进行转义 | boolean |
–实例代码
<c:out value="${requestScope.stuName2}" default="stuName2 is null!"></c:out>
<c:set value="<a href='#'>超链接</a>" var="temp"></c:set>
<c:out value="${pageScope.temp}" escapeXml="false"></c:out>
- <c:if>标签
–作用:<c:if>标签,判断表达式的值,如果表达式的值为true,则执行其主体内容
–属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
test | 条件 | 是 | 无 |
var | 用于存储条件结果的变量 | 否 | 无 |
scope | var属性的作用域 | 否 | page |
–示例代码
<c:set var="yOn" value="true"></c:set>
<c:if test="${pageScope.yOn == true}" var="bool" scope="request">
正在听课!
</c:if>
- <c:choose> <c:when> <c:otherwise>标签(常用)
–属性
test属性:条件判断,返回boolean类型
–示例代码:
<c:set var="age" value="88" scope="request"></c:set>
<c:choose>
<c:when test="${requestScope.age < 18}">
未成年
</c:when>
<c:when test="${requestScope.age>=18 and requestScope.age<30}">
青年
</c:when>
<c:when test="${requestScope.age>=30 and requestScope.age<60}">
中年
</c:when>
<c:when test="${requestScope.age>=60 and requestScope.age<80}">
中老年
</c:when>
<c:otherwise>
老年
</c:otherwise>
</c:choose>
- <c:forEach>标签
–作用:<c:forEach>标签是迭代一个集合的对象,可以是数组,也可以是list,也可以是map对象。
–属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
items | 要被循环的数据集合-可以使用el表达式 | 否 | 无 |
begin | 开始的索引(0=第一个元素,1=第二个元素) | 否 | 0 |
end | 最后一个索引(0=第一个元素,1=第二个元素) | 否 | Last element |
step | 每一次迭代的步长 | 否 | 1 |
var | 代表当前条目的变量名称 | 否 | 无 |
varStatus | 代表循环状态的变量名称 | 否 | 无 |
–示例代码
<%--普通循环--%>
<c:forEach var="i" begin="1" end="10" step="2">
${i}
</c:forEach>
<%--增强循环--%>
<%
List<Student> list = new ArrayList<Student>();
list.add(new Student(10001,"zijian"));
list.add(new Student(10002,"yafei"));
list.add(new Student(10003,"zhiyuan"));
list.add(new Student(10004,"admin"));
request.setAttribute("list",list);
%>
<c:forEach items="${requestScope.list}" var="stu">
${stu.id}   ${stu.name2}<br>
</c:forEach>
3.2其他标签库orh函数库
- 格式化标签库值fmt
–作用:格式化数据,如日期、数字等
–属性:
—value:格式化数据
—pattern:格式化否则
–示例代码:
<%
Date date = new Date();
request.setAttribute("date",date);
%>
<fmt:formatDate value="${requestScope.date}" pattern="yyyy-MM-dd hh:mm:ss"></fmt:formatDate>
- 函数库
–作用:类似java中String作用
–示例代码:
${fn:contains("HEllo", "he")}
结果:false