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:JSP标准标签库的更多相关文章

  1. JSP 标准标签库(JSTL)

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...

  2. JSP 标准标签库(JSTL)之最常用的JSTL标签总结

    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. Apache Tomcat安装JSTL 库步骤如下: 从Apache的标准标签库中下载的二进包(jakarta-t ...

  3. jsp标准标签库

    抄袭自:http://www.cnblogs.com/hongten/archive/2011/05/14/2046005.html JSP标准标签库     Pass by xkk ,and aut ...

  4. JSTL的全称:JSP Standard Tag Library, jsp 标准标签库

    JSTL的全称:JSP Standard Tag Library, jsp 标准标签库 JSTL的作用     提供给Java web开发人员一个标准通过的标签函数库和EL来取代传统直接在页面上嵌入j ...

  5. JSTL(JSP Standard Tag Library ,JSP标准标签库)

    JSTL标签之核心标签   JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个实现 Web应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断.数据管 ...

  6. JSP标准标签库(JSTL)--JSTL简介与安装

    对于MVC设计模式来讲,我们一直强调,在一个JSP钟scriptlet代码越少越好,但是只靠以前的概念很难实现,因为标签的开发特别麻烦,所以为了简化标签,也为了让标签更具备一些通用性,所以一般在开发中 ...

  7. JSP 标准标签库JSTL

    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了这些,它还提供 ...

  8. JSP标准标签库:JSTL

    JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能. jstl出现的目的同el一样也是要代替jsp页面中的脚本代码. ...

  9. JSTL(JSP标准标签库)

    JSP标准标签库(JavaServer Pages Tag Library, JSTL)是一个定制JSP标签库的集合,封装了JSP应用的通用核心功能.用来解决像遍历Map或集合.条件测试.XML处理, ...

随机推荐

  1. PHP抓取网络数据

    涉及到的知识点不多 file_get_contents:读取数据: preg_match_all:正则匹配: 和匹配之后的数据分析. 不同网页所需要抓取的数据是不同的,所以正则表达式自然也不一样,针对 ...

  2. request:getParameter和getAttribute区别

    getParameter 是用来接受用post个get方法传递过来的参数的.getAttribute 必须先setAttribute.(1)request.getParameter() 取得是通过容器 ...

  3. scala 系列文章汇总

    本文作为scala系列文章索引 本博客目录: case class 背后的秘密 以spark源码为参照分析模式匹配及种类 另外,本文还收录了几个作者认为比较好的博文或网站: scala 相关网址汇总 ...

  4. QQ宠物怀念版H5

    <QQ宠物>相伴十三载 哇!明信片邮到了!!开心ヽ(○^㉨^)ノ♪ 大乐斗Ⅱ 怀念一波...

  5. Python数据驱动ddt

    import ddtimport unittest """ddt模块包含了一个类的装饰器ddt和两个方法的装饰器: data:包含多个你想要传给测试用例的参数: file ...

  6. Native VLAN打上标记

    802.1Q和ISL都知道两者的区别在于前者对native vlan的流量不打标记,而后者统一都打标记. 配置成Native VLAN的Trunk端口,收到Native VLAN的帧后,不打标记直接从 ...

  7. splay tree旋转操作 hdu 1890

    很神奇的旋转操作. 目前没看到其他数据结构能实现这个功能.平衡树不好处理区间操作,线段树很难旋转.splay tree搞这个就很简单了. 下面用的这个模板跑了700ms,好慢,估计是删除操作太费时了, ...

  8. Linux 进程(二):进程关系及其守护进程

    进程关系 进程组 进程组是一个或多个进程的集合.通常,它们是在同一作业中结合起来的,同一进程组中的各进程接收来自同一终端的各种信号,每个进程组有一个唯一的进程组ID.每个进程组有一个组长进程,该组长进 ...

  9. 1674 区间的价值 V2(分治)

    1674 区间的价值 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 lyk拥有一个区间. 它规定一个区间的价值为这个区间中所有数and起来的值与这个区间所有 ...

  10. 160823、ionic上拉/下拉更新数据

    <!DOCTYPE html> <html ng-app="myApp"> <head> <meta charset="UTF- ...