IT兄弟连 JavaWeb教程 JSTL常用标签
1.条件标签
条件标签能够实现Java语言中的if语句以及if-else语句的功能,它包括以下几种:
<c:if>:用于实现Java语言中的if语句的功能。
<c:choose>、<c:when>、<c:otherwise>:用于实现Java语言中if-else语句的功能。
(1)<c:if>标签
<c:if>标签用于实现Java语言中的if语句的功能,它的语法为:
<c:if test="逻辑表达式" var="代表逻辑表达式的值的命名变量的名字"
scope= "{page|request|session|application}" />
</c:if>
<c:if>标签会把逻辑表达式的值存放在var属性指定的命名变量中,scope属性则指定命名变量的范围,scope属性的默认值是page。
例如以下<c:if>标签先判断username请求参数的值是否为Tom,然后把判断结果作为result命名变量存放在请求范围内:
<c:if test="${param.username==’Tom’}"
var = "result" scope="request" />
${result}
</c:if>
以上<c:if>标签等价于以下Java程序片段:
<%
String username = request.getParamaeter("username");
if(username!=null &&"Tom".equals(username)){
request.setAttribute("result",true);
}else{
reuqest.setAttribute("result",false);
}
%>
<c:if>标签还可以包含标签主体,只有当逻辑表达式的值为true时,才会执行标签主体。例如:
<c:if test=${param.save==’user’}" >
Saving user
<c:set var="user" value="Tom" />
</c:if>
以上<c:if>标签等价于以下Java程序片段:
<%
String save=request.getParameter("save");
if(save!=null && "user".equals(save)){
out.print("Saving user");
pageContext.setAttribute("user","Tom");
}
%>
(2)<c:choose>、<c:when>、<c:otherwise>标签
<c:choose>、<c:when>、<c:otherwise>标签在一起连用,可以实现Java语言中的if-else语句的功能。例如如下代码根据username请求参数的值来打印不同的结果:
<c:choose>
<c:when test="${empty param.username}">
UnKnown user;
</c:when>
<c:when test="${param.username==’Tom’}">
${param.username} is manager.
</c:when>
<c:otherwise>
${param.username} is employee.
</c:otherwise>
</c:choose>
以上标签等价于以下Java程序片段:
<%
String username=request.getParameter("username");
if(username==null){
out.print("UnKnown user.");
}else{
out.print(username + "is manager.");
}else{
out.print(username + "is employee.");
}
%>
<c:choose>、<c:when>、<c:otherwise>标签的使用必须符合以下语法规则:
<c:when>和<c:otherwise>不能单独使用,它们必须位于<c:choose>父标签中。
在<c:choose>标签中可以包含一个或多个<c:when>标签。
在<c:choose>标签中可以不包含<c:otherwise>标签。
在<c:choose>标签中如果同时包含<c:when>和<c:otherwise>标签,那么<c:otherwise>必须位于<c:when>标签之后。
2.<c:forEach>标签
(1)<c:forEach>标签的基本语法为:
<c:forEach var="代表集合中的一个元素的命名变量的名字" items="集合">
标签主体
</c:forEach>
<c:forEach>标签每次从集合中取出一个元素,并且把它存放在NESTED范围内的命名变量中,在标签主体中可以访问这个命名变量。NESTED范围是指当前标签主体构成的范围,只有当前标签主体才能够访问NESTED范围内的命名变量。
例如以下代码先创建了一个names集合,然后通过<c:forEach>标签遍历这个集合,并打印集合中的所有元素。
<%@ page import="java.util.HashSet" %>
<%
HashSet names = new HashSet();
names.add("Tom");
names.add("Mike");
names.add("Linda");
%>
<c:forEach var="name" items="<%=names %>">
${name}
</c:forEach>
运行以上代码,得到的打印结果为"Tom Mike Linda"。以上<c:forEach>标签等价于以下的Java程序片段:
<%@ page import="java.util.HashSet" %>
<%
for(String name : names){
pageContext.setAttribute("name",name);
name =(String)pageContext.getAttribute("name");
out.print(name + " ");
pageContext.removeAttribute("name");
}
%>
(2)<c:forEach>标签的varStatus属性
<c:forEach>标签的varStatus属性用于设定一个javax.servlet.jsp.jstl.core.Loop TagStatus类型的命名变量,它位于NESTED范围,这个命名变量包含了从集合中取出的当前元素的状态信息。
count:当前元素在集合中的序号,从1开始计数。
index:当前元素在集合中的索引,从0开始计数。
first:当前元素是否是集合中的第一个元素。
last:当前元素是否是集合中的最后一个元素。
(3)<c:forEach>标签的begin、end和step属性
<c:forEach>标签的begin、end和step属性分别指定循环的起始索引、结束索引和步长。
(4)<c:forEach>标签可以遍历的集合
<c:forEach>标签可以遍历的集合包括:
1)java.util.Set、java.util.List、java.util.Map、java.util.Iterator和java.util.Enumeration接口的实现类。
2)Java数组
3)以逗号分隔的字符串。
3.<c:forTokens>标签
<c:forTokens>标签用于遍历字符串中用特定分隔符分隔的子字符串,并且能重复执行标签主体。<c:forTokens>标签的基本语法如下:
<c:forTokens var="代表字符串的命名变量的名字"
items="被分隔的字符串" delims="分隔符">
标签主体
</c:forTokens>
在<c:forTokens>标签中也可以使用varStatus、begin、end和step属性。
IT兄弟连 JavaWeb教程 JSTL常用标签的更多相关文章
- IT兄弟连 JavaWeb教程 JSTL标签的使用
假定甲方打算使用乙方开发的标签库,乙方把与标签库相关的所有文件打包成为了一个JAR文件(假定名为standard.jar),在这个JAR文件中包含以下内容: ● 标签处理类及相关的.class文件 ...
- IT兄弟连 JavaWeb教程 JSTL定义
JSTL标签库实际上包含5个不同的标签库.JSTL1.1规范为这些标签库的URI和前缀做了预定,参见表7.3. 表3 JSTL标签库
- IT兄弟连 JavaWeb教程 使用JSTL函数
在JSTL Functions标签库中提供了一组常用的EL函数,主要用于处理字符串,在JSP中可以直接使用这些函数. 在JSP中使用Functions标签库,需要通过taglib指令引入该标签库: & ...
- [Java] JSP笔记 - EL、JSTL 常用标签
一. 什么是 EL 语言 表达式语言(EL)是 JSP 2.0 引入的一种计算和输出 Java 对象的简单语言. 二.EL 语言的作用 为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMASc ...
- IT兄弟连 JavaWeb教程 EL与JSTL表达式经典面试题
1.简述EL表达式的作用 EL表达式的作用可分为以下三类 访问Bean的属性. 输出简单的运算结果. 获取请求参数值. 2.JSP标签的作用?如何定义? JSP标签可以分离JSP页面的内容和逻辑,业务 ...
- IT兄弟连 JavaWeb教程 EL与JSTL表达式经典案例
案例需求:使用MVC模式编写一个程序,当发起一个deptList.do请求时,在servlet中准备一个部门列表对象,把这个列表对象放入request作用域中转发到deptlist.jsp,使用JST ...
- JSTL常用标签
JSTL标签常用:http://blog.csdn.net/imust_can/article/details/6965756
- IT兄弟连 JavaWeb教程 JSP中的三大指令
指令标识主要用于设定整个JSP页面范围内都有效的相关信息,它是被服务器解释并执行的,不会产生任何内容输出到网页中.也就是说,指令标识对于客户端浏览器是不接见的.JSP页面的指令标识与我们的身份证类似, ...
- IT兄弟连 JavaWeb教程 文件下载技术
● 列出提供下载的文件资源 我们要将Web应用系统中的文件资源提供给用户进行下载,首先我们要有一个页面列出上传文件目录下的所有文件,当用户点击文件下载超链接时就进行下载操作,编写一个ListFile ...
随机推荐
- sanic官方文档解析之Example(二)
1,通过docker部署sanic项目 通过Docker和Docker Compose部署SANIC应用程序是一项很容易实现的任务,下面的示例提供了示例simple_server.py的部署 FROM ...
- live555中fDurationInMicroseconds的计算
live555中fDurationInMicroseconds表示单个视频或者音频帧所占用的时间间隔,也表示在fDurationInMicroseconds微秒时间后再次向Source进行getNex ...
- Elasticsearch + Logstash + Kibana 搭建教程
# ELK:Elasticsearch + Logstash + Kibana 搭建教程 Shipper:日志收集者.负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来,输出到Redis暂存 ...
- redis的主从复制和哨兵支持的主从切换
1 主从复制的目的是为了读写分离 master写,然后同步到slave,slave只管读. 2 哨兵存在的目的 是为了主从切换,如果master挂了,那么一个slave成为master,重启之后的ma ...
- ALTER USER USER() IDENTIFIED BY 'password';
[root@test mysql]# bin/mysqld 2018-08-04T14:09:33.831318Z 0 [Warning] [MY-011070] [Server] 'Disablin ...
- windows IDA 调试SO
还是参考了网上的很多资料,感谢这些前辈的分享. ===================================================================== 环境:win ...
- Redisson实现Redis分布式锁的N种姿势(转)
Redis几种架构 Redis发展到现在,几种常见的部署架构有: 单机模式: 主从模式: 哨兵模式: 集群模式: 我们首先基于这些架构讲解Redisson普通分布式锁实现,需要注意的是,只有充分了解普 ...
- 关于myeclipse缓存问题
昨天在部署项目的时候发现,刚检出的项目jdk竟然不是1.6版本的了,而是新的(在此之前每次检出项目都会重新设置一下jdk),如图所示: 当时还在想,真好,以后就不用配置了,但是随之而来的是一个重大问题 ...
- Android在有存储卡和无存储卡情况下拍照后固定尺寸和压缩大小
我最近工作挺忙,距离上一次写博客转眼已经过了一个多月,每次学到和用到点新东西,其实都有分享的欲望,但奈何文笔太差,而一篇文章包括构思,排版,修改发布的时间最少要花费2个小时(这其中还不包括写完后未保存 ...
- 常用git命令和工具
0. ln -s src_dir //一个参数即可在当前目录下生成一个软链接 1.git command --clone/push a branch git clone <url ...