JSTL core 标签库

本贴最后更新于 2780 天前,其中的信息可能已经时过境迁

 

  • 在 JSP 中使用 EL 表达式可以方便的引用 JavaBean 及其属性,但有不能遍历集合等限制。配合 JSTL 使用,基本可以实现所有的功能。

  • JSTL 全称为 JSP Standard Tag Library,即 JSP 标准标签库。JSP 标签是可重复利用的类库,使用简单,专门用于显示数据。JSP 会将标签解释为相应的 HTML 代码。JSP 中推荐使用 JSP 标签,不推荐使用 Scriptlet(即使用<%...%>等镶嵌 Java 代码)。

  • 除 JSTL 标准标签库外,还有其他的标签库,如 Spring 标签库等,也可以根据需求实现自己的标签库。

  • 使用 JSTL 前需使用 taglib 行导入 JSTL 库,如 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>prefix 属性可以随意指定。(以下将默认 preifx="c")

  • out 标签用来输出数据,如 <c:out value="${ param.xxx}"></c:out> ,out 标签还有另外两个属性,defaultescapeXml。value 属性不存在时会输出 default 属性的值,excapeXml 为 true 时会对内容进行 XML 编码

  • if 标签用来进行条件判断,如 <c:if test="${ param.action == 'add'}"> ,并使用</c:if> 作为结束标签。test 属性为 boolean 类型的 true,或者字符串类型的 true(大小写不敏感)时,会输出标签内的内容。

  • <c:choose /><c:when /><:otherwise /> 标签相当于 Java 中的 if...else,when 标签有 test 属性,同 if 标签。

  • <c:forEach /> 标签相当于 Java 中的 while、for循环。<c:forEach var="num" begin="2" end="100" step="2"></c:forEach> 相当于 Java 代码的 for(int num = 2; num <= 100; num = num + 2)

  • forEach 标签不仅可以用作循环,还可以遍历集合类型的对象,如 ListSetString[]Enumeration 等。用法如 <c:forEach items="${attrList}" var="attrItemClassObject">

  • 使用 forEach 标签中的 varStatus 属性,可以获取当前 item 的一些信息,如 indexcount(已经遍历了多少个对象,从1开始)first(是否为第一个对象)lastcurrent(返回当前对象)begin(返回 forEach 的 begin 属性)endstep。使用前需要在 forEach 标签中指定 varStatus 属性的值,即可在后面通过 varStatus 的值获取当前项的信息。

  • forToken 标签与 forEach 类型,不同的是 forToken 用来遍历字符串。如 <c:forToken items="xxx,xxx,xxx" delims="," var="item" varStatus="status" begin="1" end="3" step="2"> 表示将 items 属性的值通过 delims 属性的值分割为字符串数组。

  • set 标签用来实现"写"的功能需要对象有相应的 setter 方法。set 标签有5个属性,varvaluescopetargetproperty。var 表示对象名,scope 声明对象范围,取值有 Sessionrequestpageapplication。var 只能设置基本类型的数据,不能操作 JavaBean。target 只能用来操作 JavaBean,与 property 一起使用。target 只能修改已经存在的 JavaBean 的属性或 Map 内容,否则会抛出异常。

  • remove 标签用来删除数据,有 varscope 两个属性。

  • catch 标签用于捕获异常,只有 var 一个属性,用来存储抛出的异常。

  • import 标签类似于 JSP 的 <% file include %><jsp:include />,功能更加强大,甚至可以直接把 Internet 上的网页包含进来。如 <c:import url="http://www.ulyssesss.com" charEncoding="utf-8">

  • import 标签还有 varvarReadercontextscope 四个属性。如果声明了 var 属性,目标网页不会直接显示,而是以 String 类型存储以在 var 属性的值 为变量名的变量中,scope 属性指定了变量的范围。如果声明了 varReader 属性,会将目标网页以 java.io.Reader 类型存储到 varReader 指定的变量中,供其他 JSTL 标签使用,与 var 不能同时存在context 属性用于指定 contextPath,声明后 url 和 context 必须以"/"开头,只能加载本服务器内的网页。

  • url 标签用于使不支持 Cookie 的浏览器获取使用 Session 的功能,即 URL 重写,有 value、context、var、scope四个属性,属性的用法与 import 标签类似。

  • redirect 标签用于实现重定向功能,有 urlcontext 两个属性。如果指定了 context,则 context 和 url 必须以"/"开头,且 url 为 context 的相对路径。

  • param 标签用于指定参数,通常与 redirect 标签或 import 标签一同使用。

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3169 引用 • 8208 回帖
  • jstl
    3 引用 • 7 回帖
  • JSP
    16 引用 • 32 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 52 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖 • 1 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 708 关注
  • V2Ray
    1 引用 • 15 回帖
  • OnlyOffice
    4 引用 • 15 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    126 引用 • 1699 回帖
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 632 关注
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    103 引用 • 126 回帖 • 442 关注
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 19 关注
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    35 引用 • 35 回帖 • 4 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖 • 1 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 356 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    87 引用 • 1206 回帖 • 449 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    34 引用 • 467 回帖 • 711 关注
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    19 引用 • 31 回帖
  • BookxNote

    BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。

    笔记整理交给我,一心只读圣贤书。

    1 引用 • 1 回帖 • 1 关注
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 517 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    138 引用 • 268 回帖 • 147 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 8 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 1 关注
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 477 关注
  • 反馈

    Communication channel for makers and users.

    124 引用 • 907 回帖 • 210 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    76 引用 • 429 回帖