参考文章: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遍历集合)的更多相关文章

  1. meta标签详解(meta标签的作用)///////////////////////////转

    meta标签详解(meta标签的作用) 很多人却忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性,有兴趣吗,谁我来重新认识一下META标签吧   ...

  2. JSTL详解(二)

    JSTL详解(二) 在JSTL中,一般用途的标签只要是指具有输出,设置变量,和错误处理等功能的标签,他们在jsp中使用很频繁,它们有: l         <c:out> l        ...

  3. JSTL详解实例

    JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的.在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定 ...

  4. String 字符串详解 / 常用API

    String 详解 / 常用API 简介 String 是不可改变的字符串序列.String 为字符串常量 StringBuilder 与StringBuffer 均为可改变的字符串序列.为字符串变量 ...

  5. 图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS)

    参考网址:图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS) - 51CTO.COM 深度优先遍历(Depth First Search, 简称 DFS) 与广度优先遍历(Breath ...

  6. Java使用foreach遍历集合元素

    Java使用foreach遍历集合元素 1.实例源码 /** * @Title:ForEach.java * @Package:com.you.model * @Description:使用forea ...

  7. ForEach遍历集合、 集合容器

    ForEach遍历集合 foreach循环是一种更加简洁的for循环,也称增强for循环,能用于遍历数组或集合中的元素. 格式: for(容器元素类型 临时变量:容器变量){ 执行语句} 从上面格式可 ...

  8. JSTL与EL常用标签(转)

    JSTL与EL EL相关概念 JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段.所以我们先来学习EL表达式 EL主要用于查找作用域中的数据,然后对它们执行简单操作:它不是编程 ...

  9. 详解meta标签

    Meta标签详解,在网上转的,希望对大家有用 引言 您的个人网站即使做得再精彩,在"浩瀚如海"的网络空间中,也如一叶扁舟不易为人发现,如何推广个人网站,人们首先想到的方法无外乎以下 ...

随机推荐

  1. mysql什么时候会发生file sort

    看了网上很多排名很靠前的博客,发现好多都讲错了!我开始按照博客来,没有怀疑,直到自己试了一下才发现是错的. file sort在面试中有时候会问到,这个其实挺能区分是不是真的了解order by的执行 ...

  2. 矩池云上安装yolov5并测试教程

    官方仓库:https://github.com/ultralytics/yolov5 官方文档:https://docs.ultralytics.com/quick-start/ 此案例我是租用了k8 ...

  3. 【行业Tip】两化融合

    工业4.0 智能制造规划 两化融合是信息化和工业化的高层次的深度结合, 是指以信息化带动工业化.以工业化促进信息化,走新型工业化道路:两化融合的核心就是信息化支撑,追求可持续发展模式.

  4. 浅析XML

    概述XML文档结构 每个XML文档都分为两部分:序言(Prolog)和文档元素(或文档节点) 例子:写一段XML然后简单分析一下 <?xml version="1.0" en ...

  5. Mysql 8.0 配置主从备份

    my.ini文件的位置 mysql 8.0安装完过后没有my.ini疑惑了我好久,最后发现,配置文件在,C盘的一个隐藏文件夹里面 具体路径如下图 主库配置 修改主库INI文件 在[mysqld]节点添 ...

  6. LGP3244题解

    考虑正常 DAG 的有向生成树的方案数. 很明显发现,每个节点只需要挑一个父亲即可.方案数为 \(\prod_{i=2}^nd[i]\). 再考虑加上新边后新增的 DAG 数量. 将点分为两类.假设这 ...

  7. Anaconda 01_安装问题

    一. 创建环境 1.打开cmd  使用如下语句创建环境 conda create -n 环境名  2. 查看当前conda所有环境 conda info --envs  3.激活环境(其中一句) Co ...

  8. python轻松入门——爬取豆瓣Top250时出现403报错

    关于爬虫程序的418+403报错. 1.按F12打开"开发者调试页面"如下图所示:按步骤,选中Network,找到使用的接口,获取到浏览器访问的信息. 我们需要把自己的python ...

  9. 5月2日 python学习总结 IO模型

    IO模型 1.阻塞IO 2.非阻塞IO 3.多路复用IO 4.异步IO 一.阻塞IO blocking IO的特点就是在IO执行的两个阶段(等待数据和拷贝数据两个阶段)都被block了. 实际上,除非 ...

  10. 网络监听HTTP协议信息实验

    一.开启环境 登录web服务器,在服务器中开启phpstudy服务器环境. 在操作机中打开目标站[Web服务器IP地址]地址.安装wordpress,数据库名:wordpress,用户名root 密码 ...