JSTL标签库的基本教程之核心标签库
来源:互联网 发布:音频制作软件手机软件 编辑:程序博客网 时间:2024/05/17 01:46
JSTL标签库的基本教程之核心标签库(二)
Ø 核心标签库
标签
描述
<c:out>
用于在JSP中显示数据,就像<%= ... >
<c:set>
用于保存数据
<c:remove>
用于删除数据
<c:catch>
用来处理产生错误的异常状况,并且将错误信息储存起来
<c:if>
与我们在一般程序中用的if一样
<c:choose>
本身只当做<c:when>和<c:otherwise>的父标签
<c:when>
<c:choose>的子标签,用来判断条件是否成立
<c:otherwise>
<c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<c:import>
检索一个绝对或相对 URL,然后将其内容暴露给页面
<c:forEach>
基础迭代标签,接受多种集合类型
<c:forTokens>
根据指定的分隔符来分隔内容并迭代输出
<c:param>
用来给包含或重定向的页面传递参数
<c:redirect>
重定向至一个新的URL.
<c:url>
使用可选的查询参数来创造一个URL
核心库标签的分类
u 表达式类:out、set、remove、catch
u 逻辑控制类:if、choose、when、otherwise
u 循环判断类:forEach、forTokens
u URL操作类:import、url、redirect、param
在上篇文章中,我们讲了JSTL的核心标签库的表达式类标签:out标签、set标签、remove标签、catch标签。那么我们接下来说一说逻辑控制类标签以及循环判断类标签。
上海尚学堂Java培训原创,欢迎关注,后续Java相关技术文章奉上!
² 逻辑控制类标签
l if标签(单一的if判断,没有else)
属性
描述
EL支持
是否必须
默认值
test
判断条件
支持
是
无
var
判断结果存储的变量名
不支持
否
无
scope
变量的存储范围
不支持
否
page
语法:
<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>
条件成立时的输出内容
</c:if>
示例:
<c:set var="name" value="lisa"></c:set>
<!-- 当条件成立时,输出:我是lisa -->
<c:if test="${name=='lisa'}" var="var1" scope="page">我是lisa</c:if>
<!-- 当条件不成立时,不输出 -->
<c:if test="${name=='tony'}" var="var2">tony也是lisa</c:if>
var1:${var1} -- var2:${var2}
<!-- 我是lisa var1:true -- var2:false -->
l choose、when、otherwise标签(嵌套使用相当于if-elseif-else)
属性
描述
EL支持
是否必须
默认值
test
判断条件
支持
是
无
语法:
<c:choose>
<c:when test="">
前面的条件都不成立但此条件成立时输出
</c:when>
<c:when test="">
前面的条件都不成立但此条件成立时输出
</c:when>
......
<c:otherwise>
前面的条件都不成立时才输出
</c:otherwise>
</c:choose>
示例:
<c:set var="score" value="60"></c:set>
<c:choose>
<!-- 不满足条件,不输出-->
<c:when test="${score < 60}">
不及格
</c:when>
<!-- 满足条件,输出-->
<c:when test="${score == 60}">
刚好及格
</c:when>
<!-- 不满足条件,不输出-->
<c:when test="${score > 60}">
良好
</c:when>
<!-- 上面有条件成立,不输出-->
<c:otherwise>
取消资格
</c:otherwise>
</c:choose>
<!-- 刚好 -->
² 循环判断类标签
l forEach标签(循环遍历)
forEach参数说明
名称
描述
EL支持
是否必须
默认值
items
遍历的集合对象
支持
否
无
var
每次遍历的对象
不支持
否
无
varStatus
遍历的相关信息
不支持
否
无
begin
开始的位置(正数)
支持
否
0
end
结束的位置(正数)
支持
否
集合长度
step
遍历的步长(正数)
支持
否
1
varStatus属性说明
名称
类型
说明
index
number
遍历对象的索引,从0开始
Count
number
总共循环的次数,从1开始
First
boolean
本次循环遍历的是否是集合的第一个元素
end
boolean
本次循环遍历的是否是集合的最后一个元素
语法1:遍历集合,类似(String s:new String[]{“a”,”b”})
<c:forEach items="collection" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
输出内容
</c:forEach>
语法2:循环指定次数,类似(int i=0;i<5;i++)
<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin"
end="end" [step="step"]>
输出内容
</c:forEach>
示例:
循环List
<%
List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
list.add("F");
request.setAttribute("list",list);
%>
<c:forEach items="${list}" var="l" varStatus="ll" begin="1" end="5" step="2">
第${ll.count}次迭代,索引:${ll.index},值是:${l},是否是第1个:${ll.first},是否是最后 一个:${ll.last}<br>
</c:forEach>
<!--
第1次迭代,索引:1,值是:B,是否是第1个:true,是否是最后 一个:false
第2次迭代,索引:3,值是:D,是否是第1个:false,是否是最后 一个:false
第3次迭代,索引:5,值是:F,是否是第1个:false,是否是最后 一个:true
-->
遍历Map
<%
Map<String,String> map = new HashMap<String,String>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
request.setAttribute("map",map);
%>
<c:forEach items="${map}" var="m">
key:${m.key},value:${m.value}<br>
</c:forEach>
<!--
key:key3,value:value3
key:key2,value:value2
key:key1,value:value1
-->
遍历Set
<%
Set<String> set = new HashSet<String>();
set.add("周杰伦");
set.add("林俊杰");
set.add("陈奕迅");
request.setAttribute("set",set);
%>
<c:forEach items="${set}" var="s">
${s}
</c:forEach>
<!-- 陈奕迅 林俊杰 周杰伦 -->
循环指定次数
<c:forEach var="i" varStatus="ii" begin="0" end="10" step="3">
第${ii.count}次迭代,索引:${ii.index},值是:${i},是否是第1个:${ii.first},是否是最后 一个:${ii.last}<br>
</c:forEach>
<!--
第1次迭代,索引:0,值是:0,是否是第1个:true,是否是最后 一个:false
第2次迭代,索引:3,值是:3,是否是第1个:false,是否是最后 一个:false
第3次迭代,索引:6,值是:6,是否是第1个:false,是否是最后 一个:false
第4次迭代,索引:9,值是:9,是否是第1个:false,是否是最后 一个:true
-->
l forTokens标签(字符串拆分,相当于String的split方法)
名称
描述
EL支持
是否必须
默认值
items
要被拆分的字符串
支持
是
无
delims
用来拆分的字符串
不支持
是
无
var
保存每次拆分的字符串
不支持
否
无
varStatus
第几次拆分的相关信息
不支持
否
无
begin
起始位置
支持
否
0
end
终止位置
支持
否
被拆分后的长度
step
步长
支持
否
1
语法:
<c:forTokens items="str" delims="selStr" [var="varName"]
[varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
输出内容
</c:forTokens>
注:var、varStatus、begin、end、step和forEach的参数作用相同
示例:
<c:forTokens items="我,很,喜,欢,你" delims="," var="i" varStatus="a">
${i}
</c:forTokens>
<!-- 我 很 喜 欢 你 -->
- JSTL标签库的基本教程之核心标签库
- JSTL标签库的基本教程之核心标签库(一)
- JSTL标签之核心标签库
- JSTL标签库之核心标签
- JSTL标签库之核心标签
- JSTL标签库之核心标签
- JSTL标签库之核心标签
- JSP之JSTL标签-核心标签库
- JSTL标签库之核心标签
- JSTL标签库之核心标签
- JSTL的核心标签库
- JSTL标签详细教程之——核心库
- JSTL 核心标签库标签
- JSTL 核心标签库标签
- jstl库标签核心标签
- JSTL 标签 ------ 核心标签库
- JSTL核心标签库
- JSTL核心标签库
- 遗传算法 01背包问题 C++
- codewar代码练习1——8级晋升7级
- 排序+乱搞——数字查找
- 关于jquery对象与dom对象转换
- gogland出现could not launch process: exec: "lldb-server": executable file not found in $PATH错误
- JSTL标签库的基本教程之核心标签库
- SSL2505 2015年NOIP提高组试题 信息传递(并查集,最小环)
- ReactJS中的自定义组件
- ssm1
- 【git 使用详解(3)】-- 初体验
- CART之回归树python代码实现
- myeclipse 打开某些JSP报 Failed to create the part's controls 错误
- 10.30~10.31NOIP模拟赛总结
- Java程序性能优化 读书笔记(八)优化组件:缓冲和缓存