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 ...
随机推荐
- Google Guava之Optional优雅的使用null
为什么使用optional 使用Optional<T>除了简化粗鲁的if(null == object).降低函数的复杂度.增加可读性之外,它是一种傻瓜式的防护,Optional<T ...
- Communicating sequential processes
the-way-to-go_ZH_CN/01.2.md at master · Unknwon/the-way-to-go_ZH_CN https://github.com/Unknwon/the-w ...
- IOS 文件夹结构
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/MyGameZone/article/details/24494765 IOS文件夹结构 说明 这些仅 ...
- JS获取当前页面的URL
如果获取“当前”域名 host = window.location.host; url=document.domain; url = window.location.href; 取得完整url路径: ...
- poj分类解题报告索引
图论 图论解题报告索引 DFS poj1321 - 棋盘问题 poj1416 - Shredding Company poj2676 - Sudoku poj2488 - A Knight's Jou ...
- php排序方法之插入排序
//插入排序法 $arr = array(3,55,45,2,67,76,6.7,-65,85,4); function insertSort($arr){ for ( $i=0; $i<cou ...
- 跨域传输信息postMessage
widnow.postMessage()方法允许安全的跨域传输. Syntax otherWindow.postMessage(message, targetOrigin, [transfer]); ...
- C++类定义 常量定义
#include "stdafx.h"#include "iostream" using namespace std; class MyClass{ int _ ...
- 51Nod - 1821:最优集合 (求第一个不能被表示为多个数的和的数)(不错的动脑题)
一个集合S的优美值定义为:最大的x,满足对于任意i∈1,x1,x,都存在一个S的子集S',使得S'中元素之和为i. 给定n个集合,对于每一次询问,指定一个集合S1和一个集合S2,以及一个数k,要求选择 ...
- HDU4825 Xor Sum(字典树解决最大异或问题)
Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整 ...