JavaWeb:JSTL
JavaWeb:JSP标准标签库
说明
什么是JSTL?
JSP标准标签库(JavaServer Pages Standard Tag Library,JSTL)是一个定制的标签库的集合,用来解决像遍历map或者集合、条件测试、XML处理,甚至数据库访问和数据操作等常见的问题。
JSTL库的安装
下载地址:
• 官方下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
• 菜鸟教程网下载地址:jakarta-taglibs-standard-1.1.2.zip
安装:
将jakarta-taglibs-standard-1.1.2/lib/下的两个jar文件:standard.jar和jstl.jar文件拷贝到/WEB-INF/lib/下并添加至环境变量。
然后在IDEA中加入tld约束文件:


同样的操作加入其余四个tld约束文件:
| 区域 | URI | 前缀 |
|---|---|---|
| XML | http://java.sun.com/jsp/jstl/xml | x |
| 国际化 | http://java.sun.com/jsp/jstl/fmt | fmt |
| 数据库 | http://java.sun.com/jsp/jstl/sql | sql |
| 函数 | http://java.sun.com/jsp/jstl/functions | fn |
在JSP中使用JSTL
在JSP页面中引用JSTL库,必须在在JSP页面的开头做以下声明:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core">
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml">
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt">
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql">
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions">
说明:
前缀可以使任意的,但是为了更加规范,建议采用如此简写形式。
一般行为
<c:out>标签
说明:
out标签可以将一个表达式的结果打印到网页上,这个表达式可以是基于<%=?%>的传统形式,也可以是EL表达式。
演示:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core">
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%--默认值有两种表示方式--%>
<c:out value="${param.username}">
默认值
</c:out> <c:out value="${param.username}" default="默认值"/>
</body>
</html>

<c:set>标签
说明:
set标签具有以下三个作用:
1.为String类型的命名变量设定值。
2.如果命名变量为JavaBean,那么为这个JavaBean对象的特定属性设定值。
3.如果命名变量为Map类型,那么为这个Map对象中的特定Key设定值。
演示:
1.为String类型的命名变量设定值。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:set var="命名变量的名字" value="哈哈哈" scope="session"/>
<c:set var="user" value="Tom" scope="session"/>
<c:out value="${sessionScope.user}" default="unknow"/>
</body>
</html>

2.如果命名变量为JavaBean,那么为这个JavaBean对象的特定属性设定值。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="product" scope="session" class="domain.Product"/>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:set target="${product}" property="name" value="白象方便面"/>
<c:out value="${product.name}" default="unknow"/>
</body>
</html>

3.如果命名变量为Map类型,那么为这个Map对象中的特定Key设定值。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="hashmap" class="java.util.HashMap" scope="request"/>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:set target="${hashmap}" property="1" value="Monday"/>
<c:set target="${hashmap}" property="2" value="Tuesday"/>
<c:set target="${hashmap}" property="3" value="Wednesday"/>
<c:out value="${hashmap.get('1')}" default="unknow"/>
</body>
</html>

<c:remove>标签
说明:
reomve标签用于删除特定范围内的命名变量。
演示:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="hashmap" class="java.util.HashMap" scope="request"/>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:set target="${hashmap}" property="1" value="Monday"/>
<c:remove var="hashmap" scope="request"/>
<c:out value="${hashmap.get('1')}" default="unknow"/>
</body>
</html>

条件行为
<c:if>标签
说明:
用于实现Java语言中的if语句的功能。
演示:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--测试结果将保存在result变量中--%>
<c:if test="${param.username=='Tom'}" var="result" scope="request">
<%--如果测试成功,则会输出true--%>
<c:out value="${result}"/>
</c:if>
</body>
</html>

<c:choose>、<c:when>、<c:otherwise>
说明:
<c:choose>、<c:when>、<c:otherwise>三个标签一起连用,可以实现Java语言中的if-else语句的功能。
演示:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:choose>
<c:when test="${empty param.username}">
Noknown user
</c:when>
<c:when test="${param.username=='Tom'}">
Tom
</c:when>
<c:otherwise>
Other
</c:otherwise>
</c:choose>
</body>
</html>

迭代标签
<c:forEach标签>
说明:
forEach标签用于遍历集合中的对象,并且能重复执行标签主体。
演示:
1.基本用法:
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
List books = new ArrayList();
books.add("JavaWeb程序设计");
books.add("Java程序设计");
books.add("JSP程序设计");
%>
<c:forEach var="book" items="<%=books%>">
${book}
</c:forEach>
</body>
</html>

2.foreach的varStatus属性
varStatus属性用于设定一个LoopTagStatus类型的命名变量,它位于NESTED范围,这个命名变量包含了从集合中取出的当前元素的状态信息。
• count 当前元素在集合中的序号,从1开始计数。
• index 当前元素在集合中的索引,从0开始计数。
• first 当前元素是否时集合中的第一个元素
• last 当前元素是否是集合中的最后一个元素
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
List books = new ArrayList();
books.add("JavaWeb程序设计");
books.add("Java程序设计");
books.add("JSP程序设计");
%>
<c:forEach var="book" items="<%=books%>" varStatus="status">
${status.count} ${status.index} ${status.first} ${status.last} ${book}<br>
</c:forEach>
</body>
</html>

3.begin、end、step
begin、end、step分别指定循环的起始索引、结束索引和步长。
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
List books = new ArrayList();
books.add("JavaWeb程序设计");
books.add("Java程序设计");
books.add("JSP程序设计");
%>
<c:forEach var="book" items="<%=books%>" varStatus="status" begin="1" end="2" step="1">
${status.count} ${status.index} ${status.first} ${status.last} ${book}<br>
</c:forEach>
</body>
</html>

4.可以遍历的集合
forEach可以遍历的集合包括:
• Set、List、Map、Iterator、Enumeration接口的实现类。
<%@ page import="java.util.HashMap" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
HashMap hashMap = new HashMap();
hashMap.put("one","Monday");
hashMap.put("two","Tuesday");
hashMap.put("three","Wednesday"); %>
<c:forEach var="week" items="<%=hashMap%>">
${week.key} ${week.value}<br>
</c:forEach>
</body>
</html>

• Java数组
• 以逗号隔开的字符串
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String names = "Tom,Mike,Juice"; %>
<c:forEach var="name" items="<%=names%>">
${name}<br>
</c:forEach>
</body>
</html>

<c:forTokens>标签
说明:
forTokens标签用于遍历字符串中用特定分隔符分割的子字符串,并且能重复执行标签主体。
演示:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String names = "Tom|Mike|Juice"; %>
<c:forTokens var="name" items="<%=names%>" delims="|">
${name}<br>
</c:forTokens>
</body>
</html>

未完待续...
JavaWeb:JSTL的更多相关文章
- JavaWeb——JSTL 核心标签库使用
JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...
- Java报错:Unable to find setter method for attribute: [x]
在学习JavaWeb JSTL与自定义标签时遇到的坑,用的老师给的代码结果直接原地报错:javax.servlet.ServletException: org.apache.jasper.Jasper ...
- JavaWeb学习----JSTL标签库
一.JSTL简介: JSTL全名为JavaServer Pages Standard Tag Library,中文名称为JSP标准标签函数库,目前最新的版本为1.2.JSTL是由JCP(Java Co ...
- JavaWeb 后端 <十三> 之 监听器 JSTL国际化
1. 监听器 1.1 概述 监听器: 主要是用来监听特定对象的创建或销毁.属性的变化的! 是一个实现特定接口的普通java类! 对象: 自己创建自己用 (不用监听) 别人创建自己用 (需要监听) ...
- JavaWeb 学习之 JSTL
上一篇博文我们讲解了 MVC 小案例,案例中包含了基本的增.删.改.查,对这个案例的有兴趣的伙伴可以自己动手实践一下,去复习一下或者说是学点新的知识!如果有已经看过且实践过的伙伴相信对 JSP 页面中 ...
- Javaweb学习笔记——(十三)——————JSTL、JSTL核心标签库、自定义标签、有标签体的标签、带有属性的标签、MVC、Javaweb三层框架
JSTLApache提供的标签库 jar包:jstl-1.2.jar,如果传MyEclipse,他会在我们导入jar包,无需自己导入,如果没有使用MyEclipse那么需要自行导入.--------- ...
- JavaWeb基础—EL表达式与JSTL标签库
EL表达式: EL 全名为Expression Language.EL主要作用 获取数据(访问对象,访问数据,遍历集合等) 执行运算 获取JavaWeb常用对象 调用Java方法(EL函数库) 给出一 ...
- 超全面的JavaWeb笔记day13<JSTL&自定义标签>
1.JSTL标签库(重点) core out set remove url if choose when otherwise forEach fmt formatDate formatNumber 2 ...
- day13(JSTL和自定义标签&MVC模型&javaweb三层框架)
day13 JSTL标签库(重点) 自定义标签(理解) MVC设计模式(重点中的重点) Java三层框架(重点中的重点) JSTL标签库 1 什么是JSTL JSTL是apache对EL表达式的扩 ...
随机推荐
- IOS开发缓存机制之—本地缓存机制
功能需求 这个缓存机制满足下面这些功能. 1.可以将数据缓存到本地磁盘. 2.可以判断一个资源是否已经被缓存.如果已经被缓存,在请求相同的资源,先到本地磁盘搜索. 3.可以判断文件缓存什么时候过期.这 ...
- C实现类、继承、多态
首先考虑用C实现类 肯定是要使用struct的,类的数据成员放在struct里面: 而类有构造函数.析构函数,这两个函数必须在struct外面,构造函数要分配struct空间并初始化struct成员, ...
- MyBatis 的Mapper中有小于号的处理
<![CDATA[ select * from person t where t.birthday < #{birthday} ]]> 也可以进行转义: < < 小于号 ...
- JavaScript 正则表达式入门教程
正则表达式是描述一组字符串特征的模式,用来匹配特定的字符串 主要分三个部分:基本语法.RegExp对象的方法.JS中支持正则表达式的String对象方法 一.基本语法 在JS中,正则表达式为对象,用如 ...
- EFCore扩展:IQueryable(linq)或sql执行的查询缓存与清理
前言 上一篇讲述了执行sql和配置的一些功能,这篇说明IQueryable(linq)或执行sql的查询缓存与清理,包括扩展到将缓存存储到Redis中. 扩展类库源码: github:https:// ...
- Oracle RAC学习笔记01-集群理论
Oracle RAC学习笔记01-集群理论 1.集群相关理论概述 2.Oracle Clusterware 3.Oracle RAC 原理 写在前面: 最近一直在看张晓明的大话Oracle RAC,真 ...
- Go并发编程实践
前言 并发编程一直是Golang区别与其他语言的很大优势,也是实际工作场景中经常遇到的.近日笔者在组内分享了我们常见的并发场景,及代码示例,以期望大家能在遇到相同场景下,能快速的想到解决方案,或者是拿 ...
- JWebFileTrans: 一款可以从网络上下载文件的小程序(一)
一 摘要 JWebFileTrans是一款基于socket的网络文件传输小程序,目前支持从HTTP站点下载文件,后续会增加ftp站点下载.断点续传.多线程下载等功能.其代码已开源到github上面,下 ...
- linux - tar命令简单使用
tar 新建一个tar文档 touch file1 touch file2 mkdir dir1 touch dir1/file3 # 普通tar文档 tar -cf tar-file.tar fil ...
- [html5] 学习笔记-表单新增的元素与属性(续)
本节主要讲解表单新增元素的controls属性.placeholder属性.List属性.Autocomplete属性.Pattern属性.SelectionDirection属性.Indetermi ...