JAVA |日常开发中JSTL标签库详解


JAVA |日常开发中JSTL标签库详解
- 前言
- 一、JSTL 概述
- 1.1 定义
- 1.2 优势
- 二、JSTL 核心标签库
- 2.1 导入 JSTL 库
- 2.2 <c:out>标签 - 输出数据
- 2.3 <c:if>标签 - 条件判断
- 2.4 <c:choose>、<c:when>和<c:otherwise>标签 - 多条件选择
- 结束语
- 优质源码分享
JAVA |日常开发中JSTL标签库详解,JSTL(JavaServer Pages Standard Tag Library)是JavaServer Pages(JSP)的一组标准标签库,它提供了一组强大的自定义标签,用于在JSP页面中执行常见的任务,如循环、条件判断、数据格式化、国际化、SQL操作等。JSTL的引入大大简化了JSP页面的开发,使得开发者能够更专注于业务逻辑的实现,而不是繁琐的页面渲染。本文将详细介绍JSTL标签库的基本概念、常用标签、使用示例以及注意事项,帮助开发者在日常开发中更好地利用JSTL提高开发效率。
前言
在数字浪潮汹涌澎湃的时代,程序开发宛如一座神秘而宏伟的魔法城堡,矗立在科技的浩瀚星空中。代码的字符,似那闪烁的星辰,按照特定的轨迹与节奏,组合、交织、碰撞,即将开启一场奇妙且充满无限可能的创造之旅。当空白的文档界面如同深邃的宇宙等待探索,程序员们则化身无畏的星辰开拓者,指尖在键盘上轻舞,准备用智慧与逻辑编织出足以改变世界运行规则的程序画卷,在 0 和 1 的二进制世界里,镌刻下属于人类创新与突破的不朽印记。
一、JSTL 概述
1.1 定义
JSTL(JavaServer Pages Standard Tag Library)是一个 JSP 标准标签库,它提供了一组用于在 JSP 页面中进行常见任务处理的标签,这些任务包括但不限于条件判断、循环遍历、数据格式化、XML 处理等。通过使用 JSTL 标签,可以减少在 JSP 页面中嵌入 Java 代码的数量,使 JSP 页面更加清晰、易维护。
1.2 优势
分离逻辑与视图: 将业务逻辑相关的代码从 JSP 页面(视图层)中部分地分离出来,使得 JSP 页面主要专注于展示数据,而不是处理复杂的逻辑。例如,使用 JSTL 标签进行循环遍历和条件判断,代替原本在 JSP 页面中大量的 Java 脚本代码。
提高代码可读性和可维护性: JSTL 标签具有直观的语义,开发者可以更容易地理解 JSP 页面的功能。相比于复杂的 Java 脚本代码,标签的使用使得代码结构更加清晰。例如,<c:if>标签用于条件判断,<c:forEach>标签用于循环,一目了然。
方便团队协作: 由于逻辑和视图有一定程度的分离,使得前端开发人员(主要关注 JSP 页面的布局和展示)和后端开发人员(主要关注业务逻辑和数据处理)可以更好地分工协作。
二、JSTL 核心标签库
2.1 导入 JSTL 库
首先需要在 JSP 页面中导入 JSTL 核心标签库。如果使用 Maven 项目,需要在pom.xml文件中添加 JSTL 依赖:
<dependency><groupId>javax.servlet.jsp.jstl</groupId><artifactId>jstl</artifactId><version>1.2</version>
</dependency>
然后在 JSP 页面的头部添加标签库的引用:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
这里的prefix="c"定义了标签的前缀,之后在页面中使用 JSTL 核心标签时,都以c:开头,uri是标签库的统一资源标识符。
2.2 <c:out>标签 - 输出数据
功能:用于将表达式的值输出到 JSP 页面中。它可以自动对 HTML 特殊字符进行转义,防止跨站脚本攻击(XSS)。
示例代码:
假设在 JSP 页面中有一个变量name,可以这样输出:
<c:out value="${name}" />
如果name的值为,<c:out>标签会将其转义为<script>alert(‘XSS’);</script>,避免脚本在浏览器中执行。
2.3 <c:if>标签 - 条件判断
功能:用于在 JSP 页面中进行简单的条件判断。它根据条件表达式的值来决定是否执行标签体中的内容。
示例代码:
判断一个变量age是否大于等于 18:
<c:if test="${age >= 18}">你已经成年。
</c:if>
这里的test属性是一个表达式,当表达式的值为true时,标签体中的内容(“你已经成年。”)会被输出到页面上。
2.4 <c:choose>、<c:when>和<c:otherwise>标签 - 多条件选择
功能:类似于 Java 中的switch - case语句,用于在多个条件中选择一个执行。<c:choose>标签作为父标签,内部包含<c:when>和<c:otherwise>子标签。
示例代码:
根据变量grade的值输出不同的评价:
<c:choose><c:when test="${grade == 'A'}">优秀。</c:when><c:when test="${grade == 'B'}">良好。</c:when><c:otherwise>还需要努力。</c:otherwise>
</c:choose>
<c:forEach>标签 - 循环遍历
功能:用于遍历数组、集合或其他可迭代对象。可以指定循环的起始索引、结束索引、步长等参数。
示例代码:
遍历一个List类型的列表names:
<c:forEach var="name" items="${names}">${name}<br>
</c:forEach>
这里var=“name"定义了循环变量,items=”${names}"指定了要遍历的列表。在每次循环中,name变量会被赋值为列表中的一个元素,并输出到页面上,每个元素占一行。
三、JSTL 格式化标签库
导入格式化标签库
在 JSP 页面头部添加如下引用:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/format" %>
fmt:formatNumber标签 - 数字格式化
功能:用于将数字按照指定的格式进行格式化,如指定小数位数、千位分隔符等。
示例代码:
将一个数字12345.6789格式化为带有两位小数和千位分隔符的形式:
<fmt:formatNumber value="12345.6789" pattern="#,##0.00" />
输出结果为12,345.68。
fmt:formatDate标签 - 日期格式化
功能:用于将日期对象按照指定的格式进行格式化,如将日期格式化为 “年 - 月 - 日” 的形式。
示例代码:
假设在 JSP 页面中有一个Date类型的变量currentDate,将其格式化为 “yyyy - MM - dd” 的形式:
<fmt:formatDate value="${currentDate}" pattern="yyyy - MM - dd" />
四、JSTL 函数标签库
导入函数标签库
在 JSP 页面头部添加如下引用:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
fn:length标签 - 获取长度
功能:用于获取字符串、数组或集合的长度。
示例代码:
计算一个字符串message的长度:
<fn:length value="${message}" />
fn:contains标签 - 包含判断
功能:用于判断一个字符串是否包含另一个字符串。
示例代码:
判断字符串text是否包含searchString:
<fn:contains value="${text}" searchValue="${searchString}" />
结束语
亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。
愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。
至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。

优质源码分享
-
【百篇源码模板】html5各行各业官网模板源码下载
-
【模板源码】html实现酷炫美观的可视化大屏(十种风格示例,附源码)
-
【VUE系列】VUE3实现个人网站模板源码
-
【HTML源码】HTML5小游戏源码
-
【C#实战案例】C# Winform贪吃蛇小游戏源码

💞 关注博主 带你实现畅游前后端
🏰 大屏可视化 带你体验酷炫大屏
💯 神秘个人简介 带你体验不一样得介绍
🎀 酷炫邀请函 带你体验高大上得邀请
① 🉑提供云服务部署(有自己的阿里云);
② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;
如🈶合作请联系我,期待您的联系。
注:本文撰写于CSDN平台,作者:xcLeigh(所有权归作者所有) ,https://blog.csdn.net/weixin_43151418,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。
亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌
原文地址:https://blog.csdn.net/weixin_43151418/article/details/144188973(防止抄袭,原文地址不可删除)
相关文章:
JAVA |日常开发中JSTL标签库详解
JAVA |日常开发中JSTL标签库详解 前言一、JSTL 概述1.1 定义1.2 优势 二、JSTL 核心标签库2.1 导入 JSTL 库2.2 <c:out>标签 - 输出数据2.3 <c:if>标签 - 条件判断2.4 <c:choose>、<c:when>和<c:otherwise>标签 - 多条件选择 结束语优…...
Apache HttpClient 4和5访问没有有效证书的HTTPS
本文将展示如何配置Apache HttpClient 4和5以支持“接受所有”SSL。 目标很简单——访问没有有效证书的HTTPS URL。 SSLPeerUnverifiedException 在未配置SSL的情况下,尝试消费一个HTTPS URL时会遇到以下测试失败: Test void whenHttpsUrlIsConsumed…...
Lighthouse(灯塔)—— Chrome 浏览器性能测试工具
1.认识 Lighthouse Lighthouse 是 Google 开发的一款开源性能测试工具,用于分析网页或 Web 应用的性能、可访问性、最佳实践、安全性以及 SEO 等关键指标。开发人员可以通过 Lighthouse 快速了解网页的性能瓶颈,并基于优化建议进行改进。 核心功能&…...
扫二维码进小程序的指定页面
草料二维码解码器 微信开发者工具 获取二维码解码的参数->是否登陆->跳转 options.q onLoad: function (options) {// console.log("options",options.q)if (options && options.q) {// 解码二维码携带的链接信息let qrUrl decodeURIComponent(optio…...
如何用IntelliJ IDEA开发Android Studio用自定义Gradle插件
博主所用软件版本为: IntelliJ IDEA 2024.1.4 (Community Edition) Android Studio Ladybug Feature Drop | 2024.2.2 Beta 1 1、制作gradle插件(IntelliJ IDEA 2024.1.4) 新建groovy工程,File–>New–>Project… 右键点…...
YOLOv8实战道路裂缝缺陷识别
本文采用YOLOv8作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。YOLOv8以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对道路裂缝数据集进行训练和优化,该数据集包含丰富的道路裂缝图像样本…...
RPC一分钟
概述 微服务治理:Springcloud、Dubbo服务通信:Grpc、Trift Dubbo 参考 Dubbo核心功能,主要提供了:远程方法调用、智能容错和负载均衡、提供服务自动注册、自动发现等高效服务治理功能。 Dubbo协议Dubbo支持dubbo、rmi、http、…...
Elasticsearch ILM 故障排除:常见问题及修复
作者:来自 Elastic Stef Nestor 大家好!我们的 Elasticsearch 团队正在不断改进我们的索引生命周期管理 (index Lifecycle Management - ILM) 功能。当我第一次加入 Elastic Support 时,我通过我们的使用 ILM 实现自动滚动教程快速上手。在帮…...
Unity 设计模式-策略模式(Strategy Pattern)详解
策略模式(Strategy Pattern)是一种行为型设计模式,定义了一系列算法,并将每种算法封装到独立的类中,使得它们可以互相替换。策略模式让算法可以在不影响客户端的情况下独立变化,客户端通过与这些策略对象进…...
【Maven系列】深入解析 Maven 常用命令
前言 在当今的软件开发过程中,项目管理是至关重要的一环。项目管理包括了项目构建、依赖管理以及发布部署等诸多方面。而在Java生态系统中,Maven已经成为了最受欢迎的项目管理工具之一。Maven 是一套用于构建、依赖管理和项目管理的工具,主要…...
微信小程序之简单的数据中心管理平台(1)
微信小程序之简单的数据中心管理平台(1) 引言 随着微信小程序的广泛应用,越来越多的企业开始探索如何利用这一技术开发高效、便捷的管理平台。数据中心管理作为信息化建设的重要组成部分,需要一个灵活、可扩展的界面来实现资源的…...
sqlmap --os-shell的原理(MySQL,MSSQL,PostgreSQL,Oracle,SQLite)
1. MySQL 条件 数据库用户需要具备高权限(如 FILE 权限)。数据库服务运行用户需要对目标目录有写权限。Web 服务器有可写目录,且支持执行上传的脚本(如 PHP、JSP 等)。 原理 利用 MySQL 的 SELECT ... INTO OUTFIL…...
2024年认证杯SPSSPRO杯数学建模C题(第一阶段)云中的海盐解题全过程文档及程序
2024年认证杯SPSSPRO杯数学建模 C题 云中的海盐 原题再现: 巴黎气候协定提出的目标是:在2100年前,把全球平均气温相对于工业革命以前的气温升幅控制在不超过2摄氏度的水平,并为1.5摄氏度而努力。但事实上,许多之前的…...
三维扫描检测在汽车制造中的应用
三维扫描,通过先进三维扫描技术获取产品和物体的形面三维数据,建立实物的三维图档,满足各种实物3D模型数据获取、三维数字化展示、3D多媒体开发、三维数字化存档、逆向设计、产品开发、直接3D打印制造或辅助加工制造等一系列的应用。 三维扫描…...
【NoSQL数据库】Hbase基本操作——数据库表的增删改查
目录 一、Hbase原理 二、HBase数据库操作 三、遇到的问题和解决方法 一、Hbase原理 HBase的数据模型: 行键 时间戳 列族:contents 列族:anchor 列族:mime “com.cnn.www” T9 Achor:cnnsi.com”CNN” T8 Achor:…...
【C++】格式化输出详解:掌握 cout 的进阶用法
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯格式化输出的理论概述💯控制输出宽度和填充字符setw 操作符setfill 操作符 💯控制浮点数的显示格式fixed 与 scientificsetprecision 💯…...
设计模式学习思路二
设计模式的学习思路_设计模式必须按顺序进行吗-CSDN博客 以下是一些方法和思路可以帮助你更清晰地识别使用了哪种设计模式。 1. 确定模式时的思考步骤 以下是分析代码时,你可以遵循的一些思路和步骤,帮助你识别可能使用的设计模式: a. 识别…...
什么是等级保护
1.为什么要实施等级保护: •国家信息安全形势严峻(敌对势力),针对基础信息系统的违法犯罪持续上升(网上诈骗、入侵、网上盗窃) •维护国家安全的需求(基础信息网络【互联网、电信网、广电网】及重要信息系统【银行、铁路、电力、海关】已经成为国家的关键基础设施) •信息安全是…...
k8s api对象,CRD
在Kubernetes项目中,一个API对象在Etcd里的完整资源路径,是由:Group(API组)、Version(API版本)和Resource(API资源类型)三个部分组成 apiVersion: batch/v2alpha1 kind:…...
【C++指南】C++内存管理 深度解析
💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《C指南》 期待您的关注 目录 引言 一、C 内存管理概述 二、C内存区域划分 三、C 内存管理方式 🍃1.自动内存管理…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
