JSTL详解(常用标签以及c:forEach遍历集合)
JSTL标签
参考文章:http://blog.csdn.net/qq_25827845/article/details/53311722
# 学习总结
一、 JSTL的简介
1. 什么是JSTL
JSTL 是 JSP 标准标签库,利用标签库的标签可以取代 JSP 页面上的 Java 代码,为页面设计人员和后台开发人员的分工协作提供了便利。
2. JSTL常用标签库
| 标签库名 | URI字符串 | 作用 | 前缀 |
|---|---|---|---|
| 核心标签库 | <%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %> | 用于页面逻辑控制 如:if、forEach |
c |
| 格式化标签库 | <%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %> | 用于执行格式操作 如:格式化日期字符串 |
fmt |
3. JSTL使用步骤
1)、导入 jstl-1.2.jar 包,每个标签底层其实都是用 Java 代码实现的,复制 jar 包到 web/WEB-INF/lib 目录结构下;
2)、创建 JSP 页面,使用 taglib 的指令引用标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3)、接下来就可以使用标签库定义好的标签了,例如:<c:if>
二、 核心标签库常用标签
1. c: set 标签
| 标签名 | 使用 |
|---|---|
| <c:out value=“xxx”/> | 输出 xxx |
| <c:out value="${age}"/> | 输出EL表达式 ${age} 获取的内容 |
| <c:out value=”${age}” default=”xxx”/> | 输出EL表达式 ${age} 获取的内容,当EL表达式内容不存在时输出 default 的内容 |
2. c: out 标签
| 标签名 | 使用 |
|---|---|
| <c:set var=“a” value=“xxx”/> | 在pageContext中添加name为a,value为xxx的数据 |
| <c:set var=”a” value=”xxx” scope=”session”/> | 在session中添加name为a,value为xxx的数据 |
3. c: if 标签
| 属性名 | 是否支持EL | 属性类型 | 属性描述 |
|---|---|---|---|
| test | 支持,必须是EL | boolean | EL 中条件为真则执行标签体内容 注意:没有对应 else 标签 |
代码案例:
<c:set var="a" value="hello"/>
<c:if test="${not empty a }">
<c:out value="${a }"/>
</c:if>
4. c: choose 标签
- 作用:用于多分支判断(多条件判断)
| 标签名 | 作用 |
|---|---|
| chaoose | 类似于 Java 中的 switch,choose只是一个容器,包含下面两个元素 |
| when | 可以出现多个 用于每个判断条件,类似于 switch 中 case。有一个 test 属性,与 if 功能相同 |
| otherwise | 如果上面所有条件都不满足,执行 otherwise 内容。类似于 switch 中 default |
示例代码:
<c:set var="score" value="${param.score }"/>
<c:choose>
<c:when test="${score > 100 || score < 0}">错误的分数:${score }</c:when>
<c:when test="${score >= 90 }">A级</c:when>
<c:when test="${score >= 80 }">B级</c:when>
<c:when test="${score >= 70 }">C级</c:when>
<c:when test="${score >= 60 }">D级</c:when>
<c:otherwise>E级</c:otherwise>
</c:choose>
5. c: forEach 标签
- 作用:用于遍历集合或数组
| 属性名 | 是否支持EL | 属性类型 | 属性描述 |
|---|---|---|---|
| item | true | 数组或集合 | 使用 EL 表达式,代表集合或数组 |
| var | false | String | var 的变量名代表集合或数组中的每一个元素 |
| varStatus | false | String | 代表每个元素的状态对象,一共有4个属性,属性的含义见下表 |
- varStatus 属性
| 属性名 | 数据类型 | 含义 |
|---|---|---|
| index | int | 当前遍历到的这个元素索引,从 0 开始 |
| count | int | 遍历一次加 1,从 1 开始 |
| first | boolean | 如果当前遍历的是第1 个元素,则返回 true |
| last | boolean | 如果当前遍历的是最后 1 个元素,则返回 true |
- 集合遍历
1)遍历数组
<%
String[] names = {"zhangSan", "liSi", "wangWu", "zhaoLiu"};
pageContext.setAttribute("ns", names);
%>
<c:forEach var="item" items="${ns }">
<c:out value="name: ${item }"/><br/>
</c:forEach>
2)遍历 List
<%
List<String> names = new ArrayList<String>();
names.add("zhangSan");
names.add("liSi");
names.add("wangWu");
names.add("zhaoLiu");
pageContext.setAttribute("ns", names);
%>
<c:forEach var="item" items="${ns }">
<c:out value="name: ${item }"/><br/>
</c:forEach>
3)遍历 Map
<%
Map<String,String> stu = new LinkedHashMap<String,String>();
stu.put("number", "N_1001");
stu.put("name", "zhangSan");
stu.put("age", "23");
stu.put("sex", "male");
pageContext.setAttribute("stu", stu);
%>
<c:forEach var="item" items="${stu }">
<c:out value="${item.key }: ${item.value }"/><br/>
</c:forEach>
4)遍历 varStatus 属性
<c:forEach var="item" items="${ns }" varStatus="vs">
<c:if test="${vs.first }">第一行:</c:if>
<c:if test="${vs.last }">最后一行:</c:if>
<c:out value="第${vs.count }行: "/>
<c:out value="[${vs.index }]: "/>
<c:out value="name: ${vs.current }"/><br/>
</c:forEach>
三、格式化标签库常用标签
1. fmt: formatDate 标签
- 作用:用于对日期进行格式化
| 属性名 | 属性类型 | 属性描述 |
|---|---|---|
| value | Date | 要格式化的日期对象 |
| pattern | String | 指定日期格式 |
1)格式化时间
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
......
<%
Date date = new Date();
pageContext.setAttribute("d", date);
%>
<fmt:formatDate value="${d }" pattern="yyyy-MM-dd HH:mm:ss"/>
2. fmt: formatNumber 标签
- 作用:用于对数字进行格式化
| 属性名 | 属性类型 | 属性描述 |
|---|---|---|
| value | 数字 | 要格式化的数字对象 |
| pattern | String | 指定数字格式 |
1)格式化数字
<%
double d1 = 3.5;
double d2 = 4.4;
pageContext.setAttribute("d1", d1);
pageContext.setAttribute("d2", d2);
%>
<fmt:formatNumber value="${d1 }" pattern="0.00"/><br/>
<fmt:formatNumber value="${d2 }" pattern="#.##"/>
总结
以上就是对 JSTL 表达式取值的详细介绍了,代码仅供参考,欢迎讨论交流。
JSTL详解(常用标签以及c:forEach遍历集合)的更多相关文章
- meta标签详解(meta标签的作用)///////////////////////////转
meta标签详解(meta标签的作用) 很多人却忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性,有兴趣吗,谁我来重新认识一下META标签吧 ...
- JSTL详解(二)
JSTL详解(二) 在JSTL中,一般用途的标签只要是指具有输出,设置变量,和错误处理等功能的标签,他们在jsp中使用很频繁,它们有: l <c:out> l ...
- JSTL详解实例
JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的.在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定 ...
- String 字符串详解 / 常用API
String 详解 / 常用API 简介 String 是不可改变的字符串序列.String 为字符串常量 StringBuilder 与StringBuffer 均为可改变的字符串序列.为字符串变量 ...
- 图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS)
参考网址:图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS) - 51CTO.COM 深度优先遍历(Depth First Search, 简称 DFS) 与广度优先遍历(Breath ...
- Java使用foreach遍历集合元素
Java使用foreach遍历集合元素 1.实例源码 /** * @Title:ForEach.java * @Package:com.you.model * @Description:使用forea ...
- ForEach遍历集合、 集合容器
ForEach遍历集合 foreach循环是一种更加简洁的for循环,也称增强for循环,能用于遍历数组或集合中的元素. 格式: for(容器元素类型 临时变量:容器变量){ 执行语句} 从上面格式可 ...
- JSTL与EL常用标签(转)
JSTL与EL EL相关概念 JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段.所以我们先来学习EL表达式 EL主要用于查找作用域中的数据,然后对它们执行简单操作:它不是编程 ...
- 详解meta标签
Meta标签详解,在网上转的,希望对大家有用 引言 您的个人网站即使做得再精彩,在"浩瀚如海"的网络空间中,也如一叶扁舟不易为人发现,如何推广个人网站,人们首先想到的方法无外乎以下 ...
随机推荐
- DDos攻击竟然这么恐怖,它的原理是什么?
DDOS的定义 分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击, ...
- laravel7 搜索之when()函数实现搜索
当做搜索功能时,我们经常会遇到这样的情况,需要判断搜索词是否为空,为空则不执行模糊查询条件,反之需要执行模糊查询条件.这样很繁琐,其实laravel给我们提供了一个友好的函数,辅助我们很快完成这样任务 ...
- Centos8 Yum 安装Nginx指定版本
查看系统和EPEL的nginx版本 dnf info nginx 通过官方 yum 源安装nginx vi /etc/yum.repos.d/nginx.repo 列出所有版本 ...
- 华夏基金X袋鼠云:基金业数字化转型,为什么说用户才是解题答案?
"精准营销是以客户为中心,运用各种可利用的方式,在恰当的时间,以恰当的价格,通过恰当的渠道,向恰当的顾客提供恰当的产品." 这是学者许瑾在科特勒精准营销理论的基础上,从实践的角度对 ...
- 4.监控Redis--单节点
prometheus监控redis需要用到redis_exporter. redis_exporter 项目地址:https://github.com/oliver006/redis_exporter ...
- 时间模块 time 随机模块random os模块,sys模块
时间模块 time #时间模块 import time #三种格式 #时间戳时间:是一个浮点数,以秒为单位,计算机用语 #结构化时间 :是一个元组 #用于中间转换 #格式化时间:str数据类型, 用 ...
- python的内存回收机制
变量相当于门牌号,当门牌没有了,即函数的引用都没有调用了,内存的数据就会被清除掉. python内有个定时器,定期的会刷新,如果发现内存中数据被引用了,就会被回收,这个就是内存的回收机制 ...
- 配置Openfiler做ISCS实验
在VMware workstation中安装openfiler(linux底层) 系统安装 选择redhat6,64bit 分配30G 2. 3.. 4.5. ...
- [环境部署] Windows Server 2016 配置指南 之 安装 Redis3.0
Redis是一个开源的高级key-value(键-值)缓存与存储,以高性能著称.用于做对象缓存,可以获得极佳的性能体验,可是 Redis 的官方开发团队并没有开发针对 Windows 的版本,不过还好 ...
- x64 番外篇——知识铺垫
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...