专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

JSTL标签库的基本教程之核心标签库(二)

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

核心库标签的分类(上海尚学堂Java培训原创,转载说明出处,陆续有Java相关技术文章奉献)

u 表达式类:out、set、remove、catch

u 逻辑控制类:if、choose、when、otherwise

u 循环判断类:forEach、forTokens

u URL操作类:import、url、redirect、param

在上篇文章中,我们讲了JSTL的核心标签库的表达式类标签:out标签、set标签、remove标签、catch标签。那么我们接下来说一说逻辑控制类标签以及循环判断类标签

² 逻辑控制类标签

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>  

<!– 我 很 喜 欢 你 –>

文章永久链接:https://tech.souyunku.com/40064

未经允许不得转载:搜云库技术团队 » JSTL标签库的基本教程之核心标签库(二)

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们