JSTL全名称:JaveServer Pages Standard Tag Library.JSTL是由JCP(Java Community Process)所定制的标准规范,它主要提供给Java Web开发人员一个标准通用的函数库。

Java Web程序员能利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入JAVA程序(Scripting)的做法,以提高的阅读性、维护性和方便性。

  • 安装

要想使用使用jstl标签库,首先要引入jstl标签库包:jstl.jar,standard.jar

官网下载地址:http://tomcat.apache.org/taglibs/standard/

这里选择的是下载jstl标签库是1.1版本(http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/jakarta-taglibs-standard-1.1.2.zip),目前最新版本是1.2。

下载好后,解压目录下:\lib下,可以发现这两个包。

JSTL所提供的标签函数库主要分为五大类:
(1) 核心标签库 (Core tag library)
(2) I18N格式标签库 (I18N-capable formatting tag library)
(3) SQL标签库 (SQL tag library)
(4) XML标签库 (XML tag library)
(5) 函数标签库 (Functions tag library)

 
JSTL 前置名称 URI 范例
核心标签库 c http://java.sun.com/jsp/jstl/core <c:out>
I18N格式标签库
fmt http://java.sun.com/jsp/jstl/xml <fmt:formatDate>
SQL标签库 sql http://java.sun.com/jsp/jstl/sql <sql:query>
XML标签库 xml http://java.sun.com/jsp/jstl/fmt <x:forBach>
函数标签库 fn http://java.sun.com/jsp/jstl/functions <fn:split>
  • 核心标签库(Core tag library)

新建一个Dynamic Web Project,命名为:MyJSTL001工程。

在default.jsp页面中头部引入核心标签库:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  4. <%@ page import="com.dx.work.Customer" %>
  5. <%@ page import="java.util.*" %>
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  7. <html>
  8. <head>
  9. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  10. <title>Insert title here</title>
  11. </head>
  12. <body>
  • 表达式操作

表达式操作分类中包含四个标签:<c:out>、<c:set>、<c:remove>和<c:catch>。

  1. <c:out>主要用来显示数据的内容,就像是 <%= scripting-language %> 一样

语法1:没有本体(body)内容
<c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"] />
语法2:有本体内容
<c:out value="value" [escapeXml="{true|false}"]>
default value
</c:out>

用法示例:

  1. <h4>c:out 可以对特殊字符进行转换</h4>
  2. <%
  3. request.setAttribute("BookName", "<<jsp2.0技术手册>>");
  4. %>
  5. BookName:${requestScope.BookName}
  6. <br/>
  7. <br/>
  8. BookName:<c:out value="${requestScope.BookName}"/>
  9. <br/>
  10. BookName(escapeXml="false"是,将取消对特殊字符进行转换操作):<c:out value="${requestScope.BookName}" escapeXml="false"/>
  11. <br/>

浏览效果:

  1. <c:set>主要用来将变量储存至JSP范围中或是JavaBean的属性中。

语法1:将value的值储存至范围为scope的 varName 变量之中
<c:set value="value" var="varName" [scope="{ page|request|session|application }"]/>
语法2:将本体内容的数据储存至范围为scope的 varName 变量之中
<c:set var="varName" [scope="{ page|request|session|application }"]>
… 本体内容
</c:set>
语法3:将 value的值储存至 target 对象的属性中
<c:set value="value" target="target" property="propertyName" />
语法4:将本体内容的数据储存至target 对象的属性中
<c:set target="target" property="propertyName">
… 本体内容
</c:set>

用法示例:

  1. <h4>c:set 可以对域对象进行赋值,为域对象里边的某一个javabean属性赋值。</h4>
  2. <c:set var="Title" value="dkkkd" scope="request" /><br/>
  3. title:${requestScope.Title}<br/>
  4. title:<c:out value="${requestScope.Title}" /><br/>
  5. <%
  6. Customer cust=new Customer();
  7. cust.setId(1);
  8. cust.setName("number one");
  9.  
  10. request.setAttribute("cust", cust);
  11. %>
  12. <br/>
  13. id:${requestScope.cust.id}<br/>
  14. <c:set target="${requestScope.cust}" property="id" value="1001" /><br/>
  15. id:${requestScope.cust.id}<br/>

浏览效果:

  1. c:remove 用来移除变量。

<c:remove var="varName" [scope="{ page|request|session|application }"] />

用法示例:

  1. <h4>c:remove 用来移除变量。</h4>
  2. <c:set var="waitRemoveObject" value="abcde" scope="request" />
  3. waitRemoveObject:<c:out value="${waitRemoveObject }" /><br/>
  4. <c:remove var="waitRemoveObject" scope="request"/>
  5. 从requestScope中移除waitRemoveObject:<c:out value="${waitRemoveObject }"/><br/>

浏览效果:

  1. c:catch 用来扑捉异常,并把异常信息存储到某个指定的变量中。

<c:catch [var="varName"] >
… 欲抓取错误的部分
</c:catch>

用法示例:

  1. <h4>c:catch 用来扑捉异常,并把异常信息存储到某个指定的变量中。</h4><br/>
  2. <c:catch var="errorParseMessage">
  3. <%
  4. String intStr="111Acx";
  5. int intVal= Integer.parseInt(intStr);
  6. %>
  7. </c:catch><br/>
  8. <c:out value="${errorParseMessage}"/><br/>

浏览效果:

  • 流程控制

流程控制分类中包含四个标签:<c:if>、<c:choose>、<c:when>和<c:otherwise>

  1. <c:if>

语法1:没有本体内容(body)
<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>
语法2:有本体内容
<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>
本体内容
</c:if>

用法示例:

  1. <h4>c:if 用来判定条件是否满足。不能实现if ... else if ... else ... ;也不能实现 if ... else ...</h4>
  2. <c:set var="currentUser" value="administrator" scope="session" />
  3. <c:if var="ifConditionResult" test="${sessionScope.currentUser=='administrator'}" scope="request">
  4. <c:out value="当前用户是:admin"/><br/>
  5. </c:if>
  6. <br/>
  7. result:<c:out value="${requestScope.ifConditionResult }"/><br/>

效果:

  1. c:choose,c:when,c:otherwise。可以实现if ... else if ... else ... ;也能实现 if ... else ...语句。

<c:choose>
本体内容( <when> 和 <otherwise> )
</c:choose>

用法示例:

  1. <h4>c:choose,c:when,c:otherwise。可以实现if ... else if ... else ... ;也能实现 if ... else ...语句。<br/>
  2. 其中:c:choose以c:when,c:otherwise的父标签出现;
  3. c:when,c:otherwise不能脱离c:choose单独使用;
  4. c:otherwise 必须在c:when之后使用。
  5. </h4>
  6.  
  7. <c:set var="age" value="20" scope="request" />
  8. the age is:<c:out value="${age}"/>
  9. <br/>
  10. <c:choose>
  11. <c:when test="${requestScope.age>=65}">
  12. 老年。
  13. </c:when>
  14. <c:when test="${requestScope.age>=40}">
  15. 中年
  16. </c:when>
  17. <c:when test="${requestScope.age>=18}">
  18. 青年
  19. </c:when>
  20. <c:when test="${requestScope.age>=12}">
  21. 成年
  22. </c:when>
  23. <c:when test="${requestScope.age>=3}">
  24. 少年
  25. </c:when>
  26. <c:otherwise>
  27. 儿童
  28. </c:otherwise>
  29. </c:choose>

浏览效果:

  • 迭代操作

迭代(Iterate)操作主要包含两个标签:<c:forEach>和<c:forTokens>

  1. <c:forEach>

<c:forEach> 为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。运作方式为当条件符合时,就会持续重复执行<c:forEach>的本体内容。

语法1:迭代一集合对象之所有成员
<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"]
[begin="begin"] [end="end"] [step="step"]>
本体内容
</c:forEach>
语法2:迭代指定的次数
<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]>
本体内容
</c:forEach>

使用示例:

  1. <h4>迭代操作:</h4>
  2. <c:forEach begin="0" end="2" step="1" var="item">
  3. <c:out value="${item}"/><br/>
  4. </c:forEach>
  5. item:<c:out value="${item}"/><br/>
  6.  
  7. <%
  8. List<Customer> custs=new ArrayList<Customer>();
  9. custs.add(new Customer(1,"first member"));
  10. custs.add(new Customer(2,"first member"));
  11. custs.add(new Customer(3,"first member"));
  12. custs.add(new Customer(4,"first member"));
  13.  
  14. request.setAttribute("custs", custs);
  15. %>
  16. <c:forEach items="${requestScope.custs }" var="item" varStatus="status">
  17. first:${status.first}-index:${status.index}-count:${status.count}-last:${status.last}-${item.id}-${item.name}<br/>
  18. </c:forEach>

浏览效果:

  1. <c:forTokens>

<c:forTokens> 用来浏览一字符串中所有的成员,其成员是由定义符号(delimiters)所分隔的。

<c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
本体内容
</c:forTokens>

用法示例:

  1. <h4>字符分割:用来浏览一字符串中所有的成员,其成员是由定义符号(delimiters)所分隔的。</h4>
  2. <c:set var="delimsOriginal" value="a,b,c,1;2;3;-xx-yy-zz" scope="request" />
  3. <c:forTokens items="${requestScope.delimsOriginal}" delims=",;-" var="item">
  4. <c:out value="${item}"/><br/>
  5. </c:forTokens>

浏览效果:

  • URL操作

JSTL包含三个与URL操作有关的标签,它们分别为:<c:import>、<c:redirect>和<c:url>。它们主要的功能是:用来将其他文件的内容包含起来、网页的导向,还有url的产生。

参考书籍:

《JSP2.0 技术手册》

Java Servlet(十):JSTL核心标签库的更多相关文章

  1. 小峰servlet/jsp(6)jstl核心标签库

    一.引入jstl 需要jstl.jar;standard.jar; 二.jstl核心标签库: c:out         内容输出标签; c:set      用来设置4种属性范围值的标签: c:re ...

  2. EL表达式和JSTL核心标签库

    1 EL表达式 1.1 EL的概述 EL,全名为Expression Language. 主要作用: ①EL表达式主要用于替换jsp页面中的脚本表达式,以便于从各种类型的web域中检索java对象(某 ...

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

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

  4. jsp之jstl核心标签库

    JSTL核心标签库技术 1. JSTL介绍 在JSP页面中即可书写html,也可以书写Java代码,导致页面混乱,维护,修改,升级难度加大,于是国际上不同的公司在实际应用中,根据页面的需求将Java代 ...

  5. JSTL 核心标签库 使用

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

  6. JSTL 核心标签库 使用(C标签)

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

  7. JSTL核心标签库使用

    JSTL是什么? java standard taglib(java标准标签库). 标签是什么? sun公司制订的一种技术规范,用来将jsp页面中的java代码使用类似于html当中的标记来替换 的一 ...

  8. 【JSP】JSTL核心标签库的使用方法和示例

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

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

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

  10. Java Web之JSTL标准标签库总结

    [文档整理系列] Java Web之JSTL标准标签库总结

随机推荐

  1. ACM: Just a Hook 解题报告 -线段树

    E - Just a Hook Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   D ...

  2. git 常用

    1. 打印 git 的 log 日志:git log --after="2016-05-05" --no-merges 2. 可以通过在本地建立分支,来添加自己的注释.上传公司的代 ...

  3. java修改request的paramMap

    最近做项目,发现要修改request的参数内容.因为想要在request的paramMap里面默认注入,modifier和modifierName,这些内容.但是这个Map是不能修改的.所以采用了如下 ...

  4. C# Closure

    JavaScript Closure function f1(){ var n=999; return function(){ alert(n); // 999 return n; } } var a ...

  5. How to use the Isolated Storage Explorer tool for Windows Phone

    Isolated Storage Explorer is installed in the following location: Program Files (x86)\Microsoft SDKs ...

  6. [CareerCup] 18.12 Largest Sum Submatrix 和最大的子矩阵

    18.12 Given an NxN matrix of positive and negative integers, write code to find the submatrix with t ...

  7. mysqldump备份详解

    -A  备份所有-B  恢复时会自动创建库  (同时支持导出多个库  -B  db01 db02) -d  导出表结构 #库中有多个表导出时导出没加 –B参数,则要先导入结构,如果表结构没有备份,那就 ...

  8. 对JS原型的一些理解

    一.首先给出一道经典的原型题目: var F = function(){}; Object.prototype.a = function(){}; Function.prototype.b = fun ...

  9. 理解CSS3 transform中的Matrix(矩阵)

    一.哥,我被你吓住了 打架的时候会被块头大的吓住,学习的时候会被奇怪名字吓住(如“拉普拉斯不等式”).这与情感化设计本质一致:界面设计好会让人觉得这个软件好用! 所以,当看到上面“Matrix(矩阵) ...

  10. VC 解密OUTLOOK pop3保存注册表密码

    原文连接:https://forum.90sec.org/forum.php?mod=viewthread&tid=8410 作者:Agile 用过OUTLOOK的人都知道,OUTLOOK的密 ...