1. 概述

JSTL(Jsp Standard Tag Library)即JSP标准标签库,只能运行在支持JSP1.2↑和Servlet2.3↑规范的容器上。

通常情况下我们在编写JSP页面的时候,在JSP页面中不应该存在任何一行Java代码,而应该尽量使用标签。

JSTL由四个定制标记库组成:core、format、xml、sql

2. JSTL详细介绍及使用

2.1 JSTL库安装

要使用JSTL首先需要引入Maven的依赖:

<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

然后在要使用JSTL标签的JSP文件中使用taglib引入标签库:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

2.2 core标签库

core库提供一些基本的流程操作标签,是最频繁使用的,主要是一些流程的判断操作和url的处理。

引入core标签库:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:if>

应该是最常用到的标签了,用来做两个分支的判断,与Java中的if作用一致,通常情况下会在test中使用EL表达式作为条件表达式,返回一个布尔值给test,用法如下:

<c:if test="${foo}">
...
</c:if>

<c:choose>/<c:when>/<c:otherwise>

用来做多个条件的分支判断,choose相当于switch,when相当于case,otherwise相当于default。

用法如下:

<c:choose>

	<c:when test="...">
...
</c:when> <c:when test="...">
...
</c:when> <c:when test="...">
...
</c:when> <c:otherwise>
...
</c:otherwise> </c:choose>

循环控制语句

<c:forEach>

一般有两种用法,一种是用来遍历一个集合对象,或者用来做递增基数:

遍历对象的例子:

<c:forEach items="${page.list}" var="item">
<tr>
<td>
<a target="_blank" href="<c:url value="/common/companyDetailsEntry?id=${item.id}"/>" class="job-name">${item.brifName}</a>
</td>
<td>
<span class="company-name">${item.person_scale_low}~${item.person_scale_high}人</span>
</td>
<td><%-- ${item.jobCount} --%></td>
<td>${item.brifDescContent}</td>
<td>
<div class="btn-group">
<a target="_blank" href="<c:url value="/companyHr/editCompanyEntry?id=${item.id}"/>" class="btn btn-success btn-sm" id="editBtn">编辑</a>
<button type="button" class="btn btn-success btn-sm" name="delBtn" data-location="<c:url value="/companyHr/deleteCompany?id=${item.id}&pageNumber=${page.pageNumber }"/>">删除</button>
</div>
</td>
</tr>
</c:forEach>

递增的例子:

<c:forEach begin="1" end="${page.totalPage<5 ? page.totalPage : 5 }" var="index">
<li <c:if test="${page.pageNumber==index }">class="active"</c:if>>
<a href="<c:url value="/companyHr/myCompanyEntry?pageNumber=${index }"/>">${index }</a>
</li>
</c:forEach>

<c:forTokens>

<c:catch>

用于捕捉程序可能产生的错误

<c:url>

一般用来生成url,可以将URL格式化为一个字符串,然后存储在一个变量中。在写一个地址的时候通常不会直接写上而是会使用<c:url>再包一层,比如下面这种:

<a href="<c:url value="/indexEntry"/>">首页</a>

<c:out>

用于在JSP中显示数据,类似<%=foo %>

<c:set>

用于声明一个变量

<c:remove>用于删除一个变量

<c:import>

检索一个绝对或者相对URL,用来将内容暴露给页面

<c:redirect> / <c:param>

<c:redirect>用来重定向到一个新的页面

<c:param>用来向包含或重定向的页面传递参数

2.3 format标签库

format库用来格式化数据,主要是用来格式化并输出文本、日期、时间、数字。

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<fmt:formatNumber>使用指定的格式或者精度格式化数字

<fmt:parseNumer>解析一个表示数字或者货币或者百分比的字符串。

<fmt:formatDate>使用指定的风格或者模板格式化日期和时间

<fmt:parseDate>将字符串格式化为日期时间

<fmt:bundle>绑定资源

<fmt:setBundle>绑定资源

<fmt:setLocal>指定地区

<fmt:timeZone>指定时区

<fmt:setTimeZone>指定时区

<fmt:message>显示资源配置文件

<fmt:requestEncoding>设置request的字符编码

2.4 xml标签库

主要用来进行XML文档操作,现在已经很少使用到了,不再详述。

<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>

2.5 sql标签库

sql库用来查询关系数据库的操作,现在已经很少被使用到了,不再详述。

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

2.6 functions标签库

主要是提供了一些对字符串进行操作的函数,但是并不是特别常用,因为对于字符串类型的处理使用EL的${foo.toUpperCase() }之类的形式调用String的方法来得更为方便一些。

<%@ 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>移除两端的空白符

3. 实现代码原理剖析

4. 自定义标签库

5. 总结

.

JSTL标签库笔记的更多相关文章

  1. 重温JSP学习笔记--JSTL标签库

    以前写jsp的时候对jstl标签库是有些抵触的,因为我觉得嵌入java代码的方式几乎无往不利,没有必要使用标签库,不过这次复习还是好好地学习了一下,发现这个还是很有用处的,用得好能省不少事,JSTL是 ...

  2. JavaWeb学习笔记(九)—— JSTL标签库

    一.JSTL概述 1.1 什么是JSTL  JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用以来非常方便,它与JSP动作标签一样,只不过它不是 ...

  3. 个人整理的jsp、EL表达式、JSTL标签库的笔记,少概念多实用,需要的留下邮箱,会第一时间分享原稿PDF给大家!

    jsp 第一章 jsp介绍及对比servlet 作用: 动态网页技术,动态的从数据库获取数据 jsp和servlet的优缺点: jsp优点:页面表现方便,利于写html代码 jsp缺点:业务逻辑处理麻 ...

  4. Java Web程序设计笔记 • 【第10章 JSTL标签库】

    全部章节   >>>> 本章目录 10.1 JSTL 概述 10.1.1 JSTL 简介 10.1.1 JSTL 使用 10.1.2 实践练习 10.2 核心标签库 10.2. ...

  5. 简单实用JSTL标签库

    1. JSTL标签库是一个什么东东? 简单来说,有了它你就可以在类似HTML的JSP页面里面运用一些高级语法,实现迭代.条件判断.XML文档操作.国际化标签.SQL标签. 2. 如何使用 ? 参考网址 ...

  6. JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  7. 自定义jstl标签库

    开发环境:Spring+SpringMVC +Maven +Mybatis JSTL 标签库的配置: 导入对应的 jstl.jar 和 standard.jar ,我使用的配置如下: <prop ...

  8. JavaWeb学习之JSP常用标签、EL表达式的运算符、JSTL标签库(6)

    1.JSP常用标签 * 只要支持JSP文件,常用标签有可以直接使用 * 格式: jsp:xxxx * jsp:forward ,完成jsp页面的转发 * page属性:转发的地址 <% requ ...

  9. JSTL标签库中<c:choose></c:choose>不能放JSP页面<!-- -->注释

    笔者最近在使用JSTL标签库的<c:choose>标签时候,发现在该标签体中加了JSP的<!-- -->注释时,总是会显示报错信息.错误的信息如下: <span styl ...

随机推荐

  1. delphi 中如何执行SqlParameter形式的SQL语句

    procedure TForm1.Button1Click(Sender: TObject); begin ADOConnection1.Open('); ADOQuery1.Close; ADOQu ...

  2. 【vim】vim常用命令

    移动: h 或 向左箭头键(←)  #光标向左移劢一个字符 j 或 下箭头键(↓)    #光标向下移劢一个字符 k 或 向上箭头键(↑)    #光标向上移劢一个字符 l 或 向右箭头键(→)    ...

  3. 第112天:javascript中函数预解析和执行阶段

    关于javascript中的函数:  1.预解析:把所有的函数定义提前,所有的变量声明提前,变量的赋值不提前  2.执行 :从上到下执行,但有例外(setTimeout,setInterval,aja ...

  4. AngularJS中$watch

    $watch在digest执行时,如果watch观察的value与上一次执行时不一样时,就会被触发.angularjs内部的watch实现了页面随model的及时更新.$watch 方法在用的时候主要 ...

  5. P4005 小 Y 和地铁

    题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 . ...

  6. 【刷题】BZOJ 5293 [Bjoi2018]求和

    Description master 对树上的求和非常感兴趣.他生成了一棵有根树,并且希望多次询问这棵树上一段路径上所有节点深度的k 次方和,而且每次的k 可能是不同的.此处节点深度的定义是这个节点到 ...

  7. [洛谷P5190][COCI 2010] PROGRAM

    题目大意:给你$k(k\leqslant10^6)$个数,$f(x)$表示$x$的约数在$k$个数中出现的次数,在这任何数都是$0$的约数.$m(m\leqslant10^6)$次询问,每次给出$l, ...

  8. 【BZOJ3203】保护出题人(动态规划,斜率优化)

    [BZOJ3203]保护出题人(动态规划,斜率优化) 题面 BZOJ 洛谷 题解 在最优情况下,肯定是存在某只僵尸在到达重点的那一瞬间将其打死 我们现在知道了每只僵尸到达终点的时间,因为僵尸要依次打死 ...

  9. 米勒罗宾素性测试(Miller–Rabin primality test)

    如何判断一个素是素数 效率很高的筛法 打个表 (素数的倍数一定是合数) 就可以解决问题. 筛选法的效率很高,但是遇到大素数就无能为力了. 米勒罗宾素性测试是一个相当著名的判断是否是素数的算法 核心为费 ...

  10. linux 操作swap分区

    Swap是Linux下的交换分区,类似Windows的虚拟内存,当物理内存不足时,系统可把一些内存中不常用到的程序放入Swap,解决物理内存不足的情况. 若系统安装时开辟的Swap空间太小,可通过手动 ...