JSTL:比EL更加强大
需要引入2个jar :jstl.jar standard.jar
引入tablib :
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
其中prefix=“c” :前缀
核心标签库: 通用标签库、条件标签库 迭代标签库
a.通用标签库
<c:set>
赋值
i:
在某个作用域之中(4个范围对象),给某个变量赋值
原来的JSP
JSTL
<%--
request.setAttribute("name", "zhangsan") ;
--%>
<c:set var="name" value="zhangsan" scope="request"/>
${requestScope.name }
格式
<c:set var=“变量名” value=“变量值” scope=“4个范围对象的作用域”/>
ii:
给普通对象赋值
在某个作用域之中(4个范围对象),给某个对象的属性复制 (此种写法,不能指定scope属性)
<c:set target="${requestScope.student}" property="sname" value="zxs" />
给map对象赋值
<c:set target="${requestScope.countries}" property="cn" value="中国" />
格式
<c:set target=“对象” property=“对象的属性” value=“赋值” />
注意 <c:set>可以给不存在的变量赋值 (但不能给不存在的对象赋值)
<c:out>
:显示
true:<c:out value='<a href="https://www.baidu.com">百度</a>' default="当value为空的,显示的默认值" escapeXml="true" />
false: <c:out value='<a href="https://www.baidu.com">百度</a>' escapeXml="false" />
<c:remove >
:删除属性
<c:remove var="a" scope="request"/>
b 条件标签库
选择:
单重选择if(boolean)
格式
<c:if test="" >
多重选择if else if… esle if… else /switch
格式
<c:choose>
<c:when test="..."> </c:when>
<c:when test="..."> </c:when>
<c:when test="..."> </c:when>
<c:otherwise> </c:otherwise>
</c:choose>
在使用 test="" 一定要注意后面是否有空格
例如:test="
10
>
2
"
t
r
u
e
t
e
s
t
=
"
{10>2 }" true test="
10>2"truetest="{10>2 } " 非true
c 迭代标签库
循环(迭代标签库)for(int i=0;i<5;i++)
<c:forEach var="name" items="${requestScope.names }" >
-${name }-
</c:forEach>
for(String str:names)
<c:forEach var="student" items="${requestScope.students }" >
${student.sname }-${student.sno }
</c:forEach>