JSP Standard Tag Lib,名为JSP标准标签库,设计的目的主要用来方便我们将数据输出,而不是使用JSP中的语法<% %> <%= %> <%! %>。
平常使用的话,我们会在JSP在嵌套HTML代码来实现数据的获取,比如说把一个list中的内容转换为表格显示,需要使用到循环,还要在循环中嵌套HTML代码,看起来很不优雅,而且代码不好阅读。
根据JSTL标签所提供的功能,可以将其分为5个类别。
核心标签 c.tld
格式化标签 f.tld
SQL 标签 s.tl
XML 标签 x.tld
JSTL 函数
标签库可以和ESL表达式联用
核心标签库 c.tld set相当于setAttribute方法
语法:
<c:set var="<string>" value="<string>" target="<string>" property="<string>" scope="page|requset|session|application"/> 属性 描述 是否必要 默认值value 要存储的值 否 主体的内容
target 要修改的属性所属的对象 否 无
property 要修改的属性 否 无
var 存储信息的变量 否 无
scope var属性的作用域 否 Page
scope属性有四种选择:page,requset,session,application
//下面的标签相当于pageContext.setAttribute("html"); <c:set var="html" value="<h1>hello</h1>"/> <c:set var="html" value="<h1>hello</h1>" score="request"/> out语法:
<c:out value="<string>" default="<string>" escapeXml="<true|false>"/> 属性 描述 是否必要 默认值value 要输出的内容 是 无
default 输出的默认值 否 主体中的内容
escapeXml 是否忽略XML特殊字符 否 true
//html是上面set的内容 //输出<h1>hello</h1>,忽略了转义 <c:out value="${pageScope.html}"></c:out> //输出显示一级标题hello <c:out value="${pageScope.html}" escapeXml="false"></c:out> if
标签判断表达式的值,如果表达式的值为 true 则执行其主体内容
语法:
<c:if test="<boolean>" var="<string>" scope="<string>"> ... </c:if> 属性 描述 是否必要 默认值test 条件 是 无
var 用于存储条件结果的变量 否 无
scope var属性的作用域 否 page
<c:if test="${"hello".startWith("h")}" var="flag" > <p>hello以h开头</p> </c:if> //if-else语句 <c:if test="${"hello".startWith("h")}" var="flag" > <p>hello以h开头</p> </c:if> <c:if test="${flag}"> <p>hello不以h开头</p> </c:if> remove
标签用于移除一个变量(删除数据),可以指定这个变量的作用域,若未指定,则默认为变量第一次出现的作用域。
语法:
//相当于xx.removeAttrbute <c:remove var="<string>" scope="<string>"/> choose <c:set value="3000" var="sal" /> <c:choose> <c:when test="${sal <3000}"> <p>z混日子</p> </c:when> <c:when test="${sal >=300 and sal <5000}"> <p>还算凑合</p> </c:when> <c:otherwise> <p>富有</p> </c:otherwise> </c:choose> import相当于指令 <%@ include
菜鸟 JSTL-import
重定向
url用于生成url,优点是可以把url存在变量中,之后便于引用
菜鸟 JSTL——url
param可作为上面import,redirect,url中的子标签,表明带参
forEach语法:
<c:forEach items="<object>" begin="<int>" end="<int>" step="<int>" var="<string>" varStatus="<string>"> 属性 描述 是否必要 默认值items 要被循环的信息 否 无
begin 开始的元素(0=第一个元素,1=第二个元素) 否 0
end 最后一个元素(0=第一个元素,1=第二个元素) 否 Last element
step 每一次迭代的步长 否 1
var 代表当前条目的变量名称 否 无
varStatus 代表循环状态的变量名称 否 无
<c:forEach var="item" items="${lists}" varStatus="staus"> ${item} staus.index 当前的下标 0开始 staus.count 从1开始 </c:forEach> forTokens