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页面的开头做以下声明:

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core">
  2.   <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml">
  3.   <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt">
  4.   <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql">
  5.   <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions">

说明:

  前缀可以使任意的,但是为了更加规范,建议采用如此简写形式

一般行为

<c:out>标签

说明:
  out标签可以将一个表达式的结果打印到网页上,这个表达式可以是基于<%=?%>的传统形式,也可以是EL表达式
演示:

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core">
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3. <html>
  4. <head>
  5. <title>$Title$</title>
  6. </head>
  7. <body>
  8. <%--默认值有两种表示方式--%>
  9. <c:out value="${param.username}">
  10. 默认值
  11. </c:out>
  12.  
  13. <c:out value="${param.username}" default="默认值"/>
  14. </body>
  15. </html>

<c:set>标签

说明:

  set标签具有以下三个作用:
  1.为String类型的命名变量设定值。
  2.如果命名变量为JavaBean,那么为这个JavaBean对象的特定属性设定值。
  3.如果命名变量为Map类型,那么为这个Map对象中的特定Key设定值。
演示:
  1.为String类型的命名变量设定值。

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3. <html>
  4. <head>
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <c:set var="命名变量的名字" value="哈哈哈" scope="session"/>
  9. <c:set var="user" value="Tom" scope="session"/>
  10. <c:out value="${sessionScope.user}" default="unknow"/>
  11. </body>
  12. </html>

  2.如果命名变量为JavaBean,那么为这个JavaBean对象的特定属性设定值。

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3. <jsp:useBean id="product" scope="session" class="domain.Product"/>
  4. <html>
  5. <head>
  6. <title>Title</title>
  7. </head>
  8. <body>
  9. <c:set target="${product}" property="name" value="白象方便面"/>
  10. <c:out value="${product.name}" default="unknow"/>
  11. </body>
  12. </html>

  3.如果命名变量为Map类型,那么为这个Map对象中的特定Key设定值。

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3. <jsp:useBean id="hashmap" class="java.util.HashMap" scope="request"/>
  4. <html>
  5. <head>
  6. <title>Title</title>
  7. </head>
  8. <body>
  9. <c:set target="${hashmap}" property="1" value="Monday"/>
  10. <c:set target="${hashmap}" property="2" value="Tuesday"/>
  11. <c:set target="${hashmap}" property="3" value="Wednesday"/>
  12. <c:out value="${hashmap.get('1')}" default="unknow"/>
  13. </body>
  14. </html>

<c:remove>标签

说明:
  reomve标签用于删除特定范围内的命名变量。
演示:

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3. <jsp:useBean id="hashmap" class="java.util.HashMap" scope="request"/>
  4. <html>
  5. <head>
  6. <title>Title</title>
  7. </head>
  8. <body>
  9. <c:set target="${hashmap}" property="1" value="Monday"/>
  10. <c:remove var="hashmap" scope="request"/>
  11. <c:out value="${hashmap.get('1')}" default="unknow"/>
  12. </body>
  13. </html>

条件行为

<c:if>标签

说明:
  用于实现Java语言中的if语句的功能。
演示:

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3. <html>
  4. <head>
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <%--测试结果将保存在result变量中--%>
  9. <c:if test="${param.username=='Tom'}" var="result" scope="request">
  10. <%--如果测试成功,则会输出true--%>
  11. <c:out value="${result}"/>
  12. </c:if>
  13. </body>
  14. </html>

<c:choose>、<c:when>、<c:otherwise>

说明:
  <c:choose>、<c:when>、<c:otherwise>三个标签一起连用,可以实现Java语言中的if-else语句的功能。
演示:

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3. <html>
  4. <head>
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <c:choose>
  9. <c:when test="${empty param.username}">
  10. Noknown user
  11. </c:when>
  12. <c:when test="${param.username=='Tom'}">
  13. Tom
  14. </c:when>
  15. <c:otherwise>
  16. Other
  17. </c:otherwise>
  18. </c:choose>
  19. </body>
  20. </html>

迭代标签

<c:forEach标签>

说明:
  forEach标签用于遍历集合中的对象,并且能重复执行标签主体。
演示:
  1.基本用法:

  1. <%@ page import="java.util.List" %>
  2. <%@ page import="java.util.ArrayList" %>
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  4. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  5. <html>
  6. <head>
  7. <title>Title</title>
  8. </head>
  9. <body>
  10. <%
  11. List books = new ArrayList();
  12. books.add("JavaWeb程序设计");
  13. books.add("Java程序设计");
  14. books.add("JSP程序设计");
  15. %>
  16. <c:forEach var="book" items="<%=books%>">
  17. ${book} &nbsp;
  18. </c:forEach>
  19. </body>
  20. </html>

  2.foreach的varStatus属性
  varStatus属性用于设定一个LoopTagStatus类型的命名变量,它位于NESTED范围,这个命名变量包含了从集合中取出的当前元素的状态信息。
  • count 当前元素在集合中的序号,从1开始计数。
  • index 当前元素在集合中的索引,从0开始计数。
  • first 当前元素是否时集合中的第一个元素
  • last 当前元素是否是集合中的最后一个元素

  1. <%@ page import="java.util.List" %>
  2. <%@ page import="java.util.ArrayList" %>
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  4. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  5. <html>
  6. <head>
  7. <title>Title</title>
  8. </head>
  9. <body>
  10. <%
  11. List books = new ArrayList();
  12. books.add("JavaWeb程序设计");
  13. books.add("Java程序设计");
  14. books.add("JSP程序设计");
  15. %>
  16. <c:forEach var="book" items="<%=books%>" varStatus="status">
  17. ${status.count} &nbsp;${status.index}&nbsp;${status.first}&nbsp;${status.last}&nbsp;${book}<br>
  18. </c:forEach>
  19. </body>
  20. </html>

  3.begin、end、step
  begin、end、step分别指定循环的起始索引、结束索引和步长。

  1. <%@ page import="java.util.List" %>
  2. <%@ page import="java.util.ArrayList" %>
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  4. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  5. <html>
  6. <head>
  7. <title>Title</title>
  8. </head>
  9. <body>
  10. <%
  11. List books = new ArrayList();
  12. books.add("JavaWeb程序设计");
  13. books.add("Java程序设计");
  14. books.add("JSP程序设计");
  15. %>
  16. <c:forEach var="book" items="<%=books%>" varStatus="status" begin="1" end="2" step="1">
  17. ${status.count} &nbsp;${status.index}&nbsp;${status.first}&nbsp;${status.last}&nbsp;${book}<br>
  18. </c:forEach>
  19. </body>
  20. </html>


  4.可以遍历的集合
  forEach可以遍历的集合包括:
  • Set、List、Map、Iterator、Enumeration接口的实现类。

  1. <%@ page import="java.util.HashMap" %>
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  3. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  4. <html>
  5. <head>
  6. <title>Title</title>
  7. </head>
  8. <body>
  9. <%
  10. HashMap hashMap = new HashMap();
  11. hashMap.put("one","Monday");
  12. hashMap.put("two","Tuesday");
  13. hashMap.put("three","Wednesday");
  14.  
  15. %>
  16. <c:forEach var="week" items="<%=hashMap%>">
  17. ${week.key} &nbsp;${week.value}<br>
  18. </c:forEach>
  19. </body>
  20. </html>

• Java数组
• 以逗号隔开的字符串

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3. <html>
  4. <head>
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <%
  9. String names = "Tom,Mike,Juice";
  10.  
  11. %>
  12. <c:forEach var="name" items="<%=names%>">
  13. ${name}<br>
  14. </c:forEach>
  15. </body>
  16. </html>

<c:forTokens>标签

说明:
  forTokens标签用于遍历字符串中用特定分隔符分割的子字符串,并且能重复执行标签主体。
演示:

  1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  2. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  3. <html>
  4. <head>
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <%
  9. String names = "Tom|Mike|Juice";
  10.  
  11. %>
  12. <c:forTokens var="name" items="<%=names%>" delims="|">
  13. ${name}<br>
  14. </c:forTokens>
  15. </body>
  16. </html>

未完待续...

JavaWeb:JSTL的更多相关文章

  1. JavaWeb——JSTL 核心标签库使用

    JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...

  2. Java报错:Unable to find setter method for attribute: [x]

    在学习JavaWeb JSTL与自定义标签时遇到的坑,用的老师给的代码结果直接原地报错:javax.servlet.ServletException: org.apache.jasper.Jasper ...

  3. JavaWeb学习----JSTL标签库

    一.JSTL简介: JSTL全名为JavaServer Pages Standard Tag Library,中文名称为JSP标准标签函数库,目前最新的版本为1.2.JSTL是由JCP(Java Co ...

  4. JavaWeb 后端 <十三> 之 监听器 JSTL国际化

    1. 监听器 1.1   概述 监听器: 主要是用来监听特定对象的创建或销毁.属性的变化的! 是一个实现特定接口的普通java类! 对象: 自己创建自己用 (不用监听) 别人创建自己用 (需要监听) ...

  5. JavaWeb 学习之 JSTL

    上一篇博文我们讲解了 MVC 小案例,案例中包含了基本的增.删.改.查,对这个案例的有兴趣的伙伴可以自己动手实践一下,去复习一下或者说是学点新的知识!如果有已经看过且实践过的伙伴相信对 JSP 页面中 ...

  6. Javaweb学习笔记——(十三)——————JSTL、JSTL核心标签库、自定义标签、有标签体的标签、带有属性的标签、MVC、Javaweb三层框架

    JSTLApache提供的标签库 jar包:jstl-1.2.jar,如果传MyEclipse,他会在我们导入jar包,无需自己导入,如果没有使用MyEclipse那么需要自行导入.--------- ...

  7. JavaWeb基础—EL表达式与JSTL标签库

    EL表达式: EL 全名为Expression Language.EL主要作用 获取数据(访问对象,访问数据,遍历集合等) 执行运算 获取JavaWeb常用对象 调用Java方法(EL函数库) 给出一 ...

  8. 超全面的JavaWeb笔记day13<JSTL&自定义标签>

    1.JSTL标签库(重点) core out set remove url if choose when otherwise forEach fmt formatDate formatNumber 2 ...

  9. day13(JSTL和自定义标签&MVC模型&javaweb三层框架)

    day13 JSTL标签库(重点) 自定义标签(理解) MVC设计模式(重点中的重点) Java三层框架(重点中的重点) JSTL标签库   1 什么是JSTL JSTL是apache对EL表达式的扩 ...

随机推荐

  1. DOMContentLoaded

    setTimeout(function(){ alert("settimeout"); },0); EventUtil.addHandler(window, "DOMCo ...

  2. MySQL 安装 5.0

    MySQL免安装版配置 1.下载 MySQL 免安装版 2.将 MySQL 解压到待安装目录,使用%MYSQL_HOME%表示 3.打开文件my-huge.ini另存为my.ini,在my.ini文件 ...

  3. 星级评分条(RatingBar)的功能和用法

    星级评分条与拖动条有相同的父类:AbsSeekBar,因此它们十分相似.实际上星级评分条与拖动条的用法.功能都十分接近:它们都是允许用户通过拖动条来改变进度.RatingBar与SeekBar最大区别 ...

  4. 关于P,NP,NPC和NP-hard的通俗解释

    这些概念以前老是犯糊涂,今天整清楚.摘要:P: Polynomial SolvableNP: Non-determinstic Polynomial Solvable 0)词语解释:Polynomia ...

  5. VMware虚拟机出现Reason: Failed to lock the file

    打开VMware出现Cannot open the disk *.vmdk or one of the snapshot disks it depends on.Reason: Failed to l ...

  6. 在Java中打开浏览器

    try { Runtime.getRuntime().exec( "explorer http://www.baidu.com"); java.net.URI uri = new ...

  7. Python内置数据类型总结

    python的核心数据类型:(很多语言之提供了数字,字符串,文件数据类型,其他形式的数据类型都以标准库的形式表示 也就是用之前需要import ) ,但是python有很多都是内置的,不需要impor ...

  8. java操作redis redis连接池

    redis作为缓存型数据库,越来越受到大家的欢迎,这里简单介绍一下java如何操作redis. 1.java连接redis java通过需要jedis的jar包获取Jedis连接. jedis-2.8 ...

  9. Charlse 使用小记

    抓包神器Fiddler 是基于微软的 .Net 技术开发的,没办法直接在 Mac/Linux 下使用,而Charlse是Mac下常用的网络封包截取工具.是一个HTTP代理服务器,HTTP监视器,反转代 ...

  10. linux系统时间同步

    1.linux系统时间同步[root@xuegod62 ~]# /usr/sbin/ntpdate ntp1.aliyun.com2.linux系统定时同步[root@xuegod62 ~]# ech ...