JSTL标签库的基本教程之核心标签库(二)
JSTL标签库的基本教程之核心标签库(二)
- 核心标签库
标签 |
描述 |
用于在JSP中显示数据,就像<%= ... > |
|
用于保存数据 |
|
用于删除数据 |
|
用来处理产生错误的异常状况,并且将错误信息储存起来 |
|
与我们在一般程序中用的if一样 |
|
本身只当做<c:when>和<c:otherwise>的父标签 |
|
<c:choose>的子标签,用来判断条件是否成立 |
|
<c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行 |
|
检索一个绝对或相对 URL,然后将其内容暴露给页面 |
|
基础迭代标签,接受多种集合类型 |
|
根据指定的分隔符来分隔内容并迭代输出 |
|
用来给包含或重定向的页面传递参数 |
|
重定向至一个新的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> <!-- 我 很 喜 欢 你 --> |
JSTL标签库的基本教程之核心标签库(二)的更多相关文章
- JSTL标签库的基本教程之核心标签库(一)
JSTL介绍 Java Server Pages Standard Tag Libray(JSTL):JSP标准标签库,它封装了JSP应用的通用核心功能.JSTL支持通用的.结构化的任务,比如迭代,条 ...
- (Windows)Python第三方库手动安装教程(以lxml库为例)
案例前提:已安装Python 已安装pip 1.进入官网https://www.lfd.uci.edu/~gohlke/pythonlibs/,搜索lxml库,下载到本地(放到Python目录下的Sc ...
- JSP标准标签库(JSTL)之核心标签(上)
在myeclipse中新建web项目时,会自动为我们安装JSTL库,如下图: 核心标签是我们最常用的JSTL标签.在JSP页面中引用核心标签库的语法如下: <%@ taglib uri=&quo ...
- JSTL 核心标签库 使用(转)
在JSP的开发中,迭代是经常要使用到的操作.例如,逐行的显示查询的结果等.在早期的JSP中,通常使用Scriptlets来实现Iterator或者Enumeration对象的迭代输出.现在,通过JST ...
- jsp引用JSTL核心标签库
一.引用JSTL 1. JSTL的引入可以让JSP代码中<%%>等代码消失掉,再结合EL表达式,会更加方便以及美观. 2. 各套框架(还没有学习,比如struts,SpringMVC等 ...
- 10.javaweb核心标签库详解
一.JSTL简介及在项目中安装配置 1, 简介 使用JSTL标签的目的就是不希望jsp中出现java逻辑代码 分类 2, JSTL的安装配置 首先将jar包中的各个标签库配置文件拷贝到项目WEB- ...
- 菜鸟学Java(三)——JSTL标签之核心标签
JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个实现 Web应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断.数据管理格式化.XML 操作以及数 ...
- JSTL标签库之核心标签
一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...
- JSTL 核心标签库 使用
JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...
随机推荐
- apache-tomcat 部分中文.html .jsp 连接 404问题
修改文件到 自己的安装目录:\apache-tomcat-7.0.79\conf 添加 Connector URIEncoding="utf-8" <Connector ...
- 《Oracle查询优化改写技巧与案例》学习笔记-------使用数字篇
一个系列的读书笔记,读的书是有教无类和落落两位老师编写的<Oracle查询优化改写技巧与案例>. 用这个系列的读书笔记来督促自己学习Oracle,同时,对于其中一些内容,希望大家看到以后, ...
- 《笨方法学Python》加分题28
#!usr/bin/python # -*-coding:utf-8-*- True and True print ("True") False and True print (& ...
- EasyPR源码剖析(1):概述
EasyPR(Easy to do Plate Recognition)是本人在opencv学习过程中接触的一个开源的中文车牌识别系统,项目Git地址为https://github.com/liuru ...
- char对比varchar
char对比varchar 相同点:char与varchar都是存储字符串的数据类型 不同点:char是固定长度的字符类型,而varchar是可变长度的字符类型,这个一定要注意.另外进行select时 ...
- MySQL远程连接问题解决方法
问题:Host 'XXX' is not allowed to connect to this MySQL server. 原因分析: 1.登录到mysql: 在开始目录下管理员身份运行[MySQL ...
- 图解HTTP第四章
:返回结果的 HTTP 状态码 1>状态码告知从服务器端返回的请求结果 状态码如 200 OK,以 3 位数字和原因短语组成 数字中的第一位指定了响应类别,后两位无分类 2XX 成功常用的状态码 ...
- Linux---一级/二级目录以及位置目录名/指令
home目录:普通用户登录进来以后的初始位置(会在home目录下创建一个登录名相同的目录例如 / home / 用户名),如果是超级用户则就是 在根目录 /下的 root目录(也就是 /root) ...
- 在香港用什么软件可以唱歌?香港K歌app推荐
KTV的源头来自于日本,KTV是Karaok TV的缩写.随着互联网时代越来越发达,手机K歌成了很多人会选择的方式,那么在香港有什么好用的K歌软件呢?这里qt6小编给大家推荐几款好用的,让你足不出户即 ...
- BFS总结
能够用 BFS 解决的问题,一定不要用 DFS 去做! 因为用 Recursion 实现的 DFS 可能造成 StackOverflow! (NonRecursion 的 DFS 一来你不会写,二来面 ...