当前位置: java基础教程 > 已过时-jsp技术 > 阅读正文

JSTL标准标签库

2021.5.3.   613 次   4988字

JSTL全称为JSP Standard Tag Library,即JSP标准标签库。标准标签库可以提高JSP页面的开发效率, 不需要自己开发, 只需要稍微学习使用即可.

下载jar包或导入坐标

先下载 jstl, 这里下载 1.2版本的 jar包, (2个都要, 不可以用maven版本)

maven导入以下坐标

<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>

jstl分类很多, 每个类别的导入的标签库不一样, 语句也不同, 大概可以分成5类

  1. 核心标签
  2. 格式化标签
  3. SQL 标签
  4. XML 标签
  5. JSTL 函数

核心标签库

核心标签库是最常用的的标签

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:out>用于在JSP中显示数据,就像<%= … >
<c:set>用于保存数据
<c:remove>用于删除数据
<c:catch>用来处理产生错误的异常状况,并且将错误信息储存起来
<c:if>与我们在一般程序中用的if一样
<c:choose>本身只当做<c:when>和<c:otherwise>的父标签
<c:when><c:choose>的子标签,用来判断条件是否成立
<c:otherwise><c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<c:import>检索一个绝对或相对 URL,然后将其内容暴露给页面
<c:forEach>基础迭代标签,接受多种集合类型
<c:forTokens>根据指定的分隔符来分隔内容并迭代输出
<c:param>用来给包含或重定向的页面传递参数
<c:redirect>重定向至一个新的URL.
<c:url>使用可选的查询参数来创造一个URL

<c:out>标签

这个标签, 用作输出, 但比 <%= %> 要更灵活

  • value = 文字或EL表达式
  • escapeXml = true/false
  • default = 文字或EL表达式

value表示要输出的值, escapeXml标记value中是否使用转义字符, default表示value为null时的输出, 也可以写在c:out标签中间

<c:out value="${null}" escapeXml="false" default="默认值"></c:out>

<c:set>标签

这个标签用于保存数据, 或修改数据, 如果2次存储同一个值默认是覆盖

  • var = 要存储的变量名
  • value = 要存储的值
  • scope = 要存储的变量域
  • property = 要修改的变量名, 必须配合target
  • target = 要修改的属性所属对象
<c:set var="salary" scope="session" value="${2000*2}"/>

<c:remove>标签

这个标签用于删除数据

  • var = 要移除的变量名称
  • scope = 变量的作用域
<c:remove var="salary"/>

<c:catch>标签

用于捕获标签包裹内容的异常信息, 仅有一个 var 属性保存错误信息, 不会自动输出

<c:catch var ="catchException">
    <% int x = 5/0;%>
</c:catch>

<c:if>标签

用于判断内容, 相当于if

  • test = 条件
  • var = 存储结果的变量名
  • scope = 结果的作用域
<c:set var="salary" scope="session" value="${2000*2}"/>
<c:if test="${salary > 2000}">
    <p>我的工资为: <c:out value="${salary}"/><p>
</c:if>

<c:choose>,<c:when>,<c:otherwise>标签

这三个标签组合起来完成的功能是java中的switch

  • choose –> switch
  • when –> case
  • otherwise –> default
<c:set var="salary" scope="session" value="${2000*2}"/>
<p>你的工资为 : <c:out value="${salary}"/></p>
<c:choose>
    <c:when test="${salary <= 0}">
       太惨了。
    </c:when>
    <c:when test="${salary > 1000}">
       不错的薪水,还能生活。
    </c:when>
    <c:otherwise>
        什么都没有。
    </c:otherwise>
</c:choose>

<c:import>标签

此标签, 为导入文件的所有字符, 从html的<!doctype>到</html>

  • url –> 资源路径
  • context –> 引入外部资源时指定一个别名
  • var –> 引入文本时, 设置一个变量名
  • scope –> var属性的作用域
  • varReader –> 用于提供java.io.Reader对象的变量
<c:import var="data" url="https://www.52dixiaowo.com"/>
<c:out value="${data}"/>

<c:forEach>标签

此标签是for循环标签

  • items –> 初始遍历目标
  • begin –> 开始下标
  • end –> 结束下标
  • step –> 每次迭代步长
  • var –> 遍历控制遍历, 初始是begin指定的值
  • varStatus –> 当前遍历变量的信息描述
    1. index(所在位置,即索引)
    2. count(总共已迭代的次数)
    3. first(是否为第一个位置)
    4. last(是否为最后一个位置)
<c:forEach var="i" begin="1" end="5">
   Item <c:out value="${i}"/><p>
</c:forEach>

<c:forTokens>标签

此标签, 和<c:forEach>相似, 比它多一个属性

属性描述是否必要默认值
delims分隔符

用法几乎和<c:forEach>相同

<c:forTokens items="google,baidu,taobao" delims="," var="name">
   <c:out value="${name}"/><p>
</c:forTokens>

<c:url>标签

此标签生成一个 url

  • value –> 基础url
  • context –> tomcat当前应用虚拟目录
  • var –> 用于存储url的变量, 若值改变, 以便自动重写
  • scope –> 存储变量的值

值得注意的是, 一旦更改 var 的值, 那么原先设置的context就不生效了

<c:url context="/MyJSPProject" value="/file1.jsp" var="myurl"  scope="session"/>
<c:set var="myurl" scope="session" value="/hello"/>
<a href="${sessionScope.myurl}">jsp生成的url</a>

<c:param>标签

此标签用于给<c:url>增加参数, 必须写在<c:url>标签中

  • name –> 属性名
  • value –> 属性值
<c:url var="myURL" value="test.jsp">
        <c:param name="name" value="52的小窝"/>
        <c:param name="url" value="www.52dixiaowo.com"/>
 </c:url>
      <a href="/<c:out value="${myURL}"/>">
 使用 &lt;c:param&gt; 为指定URL发送两个参数。</a>

<c:redirect>标签

此标签会自动进行重定向, 可以配合<c:url>使用

  • url –> URL地址
  • context –> tomcat应用的虚拟目录
<c:redirect url="https://www.52dixiaowo.com"/>

格式化标签库

格式化并输出文本、日期、时间、数字

<%@ taglib prefix="fmt" 
uri="http://java.sun.com/jsp/jstl/fmt" %>
<fmt:formatNumber>使用指定的格式或精度格式化数字
<fmt:parseNumber>解析一个代表着数字,货币或百分比的字符串
<fmt:formatDate>使用指定的风格或模式格式化日期和时间
<fmt:parseDate>解析一个代表着日期或时间的字符串
<fmt:bundle>绑定资源
<fmt:setLocale>指定地区
<fmt:setBundle>绑定资源
<fmt:timeZone>指定时区
<fmt:setTimeZone>指定时区
<fmt:message>显示资源配置文件信息
<fmt:requestEncoding>设置request的字符编码

SQL标签库

SQL标签库提供了与关系型数据库进行交互

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<sql:setDataSource>指定数据源
<sql:query>运行SQL查询语句
<sql:update>运行SQL更新语句
<sql:param>将SQL语句中的参数设为指定值
<sql:dateParam>将SQL语句中的日期参数设为指定的java.util.Date 对象值
<sql:transaction>在共享数据库连接中提供嵌套的数据库行为元素,将所有语句以一个事务的形式来运行

XML标签库

提供了创建和操作XML文档的标签

在使用xml标签前,你必须将XML 和 XPath 的相关包拷贝至你的<Tomcat 安装目录>\lib下:

<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<x:out>与<%= … >,类似,不过只用于XPath表达式
<x:parse>解析 XML 数据
<x:set>设置XPath表达式
<x:if>判断XPath表达式,若为真,则执行本体中的内容,否则跳过本体
<x:forEach>迭代XML文档中的节点
<x:choose><x:when>和<x:otherwise>的父标签
<x:when><x:choose>的子标签,用来进行条件判断
<x:otherwise><x:choose>的子标签,当<x:when>判断为false时被执行
<x:transform>将XSL转换应用在XML文档中
<x:param>与<x:transform>共同使用,用于设置XSL样式表

JSTL函数标签库

通用的字符串处理函数

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
fn:contains()测试输入的字符串是否包含指定的子串
fn:containsIgnoreCase()测试输入的字符串是否包含指定的子串,大小写不敏感
fn:endsWith()测试输入的字符串是否以指定的后缀结尾
fn:escapeXml()跳过可以作为XML标记的字符
fn:indexOf()返回指定字符串在输入字符串中出现的位置
fn:join()将数组中的元素合成一个字符串然后输出
fn:length()返回字符串长度
fn:replace()将输入字符串中指定的位置替换为指定的字符串然后返回
fn:split()将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回
fn:startsWith()测试输入字符串是否以指定的前缀开始
fn:substring()返回字符串的子集
fn:substringAfter()返回字符串在指定子串之后的子集
fn:substringBefore()返回字符串在指定子串之前的子集
fn:toLowerCase()将字符串中的字符转为小写
fn:toUpperCase()将字符串中的字符转为大写
fn:trim()移除首尾的空白符

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群