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 ...
随机推荐
- EasyIPCamera实现Windows PC桌面、安卓Android桌面同屏直播,助力无纸化会议系统
最近在EasyDarwin开源群里,有不少用户私信需求,要做一种能够多端同屏的系统,细分下来有屏幕采集端和同屏端,屏幕采集端细想也就是一个低延时的流媒体音视频服务器,同屏端也就是一个低延时的播放器,负 ...
- EasyPusher安卓Android手机直播推送之MediaCodec 硬编码H264格式
本文转自Holo的博客:http://blog.csdn.net/u013758734/article/details/50834770 最近在研究EasyDarwin的Push库EasyPusher ...
- 九度OJ 1138:进制转换 (进制转换)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2388 解决:935 题目描述: 将一个长度最多为30位数字的十进制非负整数转换为二进制数输出. 输入: 多组数据,每行为一个长度不超过30 ...
- ssh key 生成
1.设置好git的name和email $ git config --global user.name "姓名" $ git config --global user.email ...
- 【C++基础学习】数据封装、构造函数
第一部分 类和对象 内存中按照用途被划分的五个区:栈区.堆区.全局区.常量区.代码区栈区由系统来进行控制,无论是内存的分配还是回收都不需要程序员关心堆区由new分配内存,使用完成之后必须使用delet ...
- 04-树4 是否同一棵二叉搜索树(25 point(s)) 【Tree】
04-树4 是否同一棵二叉搜索树(25 point(s)) 给定一个插入序列就可以唯一确定一棵二叉搜索树.然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到.例如分别按照序列{2, 1, 3}和 ...
- APP上线审核注意事项
基本要点 · 不能导致手机故障(比如崩溃或屏幕问题) · 长时间/过度使用之后反应仍然很快 · 应用内的所有价格信息中不能用固定值代替可变变量 · ...
- linux mount的安装配置
1.首先需要安装nfs-utils 和 portmap: yum install nfs-utils portmap (安装软件,也可直接安装 yum install nfs* portmap)chk ...
- 快速解决Android中的selinux权限问题【转】
本文转载自:http://blog.csdn.net/mike8825/article/details/49428417 版权声明:本文为博主原创文章,未经博主允许不得转载. 关于selinux的详细 ...
- html5--4-2 video元素的属性
html5--4-2 video元素的属性 学习要点 掌握video元素的基本用法 直到现在,在网页中的大多数视频是通过插件(比如 Flash)来显示的.然而,并非所有浏览器都拥有同样的插件.HTML ...