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.自动内存管理…...

C++小碗菜之二:软件单元测试
“没有测试的代码重构不能称之为重构,它仅仅是垃圾代码的到处移动” ——Corey Haines 目录 前言 什么是单元测试? 单元测试的组成 单元测试的命名 单元测试的独立性 Google Test 单元测试的环境配置与使用 1. Ubuntu下安装 Google Test 2. 编写…...

PyCharm+Selenium+Pytest配置小记
1、下载ChromeDriver: Chrome130以后的Driver下载: Chrome for Testing availabilityhttps://googlechromelabs.github.io/chrome-for-testing/ (1)查看自己Crome浏览器的版本:设置-->关于 Chrome; &…...

摩尔线程 国产显卡 MUSA 并行编程 学习笔记-2024/12/04
Learning Roadmap: Section 1: Intro to Parallel Programming & MUSA Deep Learning Ecosystem(摩尔线程 国产显卡 MUSA 并行编程 学习笔记-2024/11/30-CSDN博客)UbuntuDriverToolkitcondapytorchtorch_musa环境安装(2024/11/24-Ubunt…...

【FAQ】HarmonyOS SDK 闭源开放能力 —Remote Communication Kit
1.问题描述: DynamicDnsRule有没有示例?这个地址是怎么解析出来 https://developer.huawei.com/consumer/cn/doc/harmonyos-references/remote-communication-rcp-0000001770911890#section8160554134811 解决方案: ‘DynamicDnsRule’&a…...

【日常记录-Mybatis】PageHelper导致语句截断
1. 简介 PageHelper是Mybatis-Plus中的一个插件,主要用于实现数据库的分页查询功能。其核心原理是将传入的页码和条数赋值给一个Page对象,并保存到本地线程ThreadLocal中,接下来,PageHelper会进入Mybatis的拦截器环节,…...

随时随地掌控数据:如何使用手机APP远程访问飞牛云NAS
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

JVM 类加载器有哪些?双亲委派机制的作用是什么?如何自定义类加载器?
类加载器分类 大家好,我是码哥,可以叫我靓仔,《Redis 高手心法》畅销书作者。 先回顾下,在 Java 中,类的初始化分为几个阶段: 加载、链接(包括验证、准备和解析)和 初始化。 而 类加载器&#x…...

从基态到激发态再到里德伯态的双光子激发过程
铯原子(Cs)从基态6S1/2到激发态6P3/2再到里德伯态44D5/2的双光子激发过程, 并通过数值计算和图形化展示来研究不同失谐条件下的拉比频率、AC Stark位移差以及散射概率的变化 结果显示,在给定的实验参数下,拉比频率较低…...

Clickhouse 外部存储引擎
文章目录 外部存储引擎分类MySQL引擎PostgreSQL引擎MongoDB引擎JDBC引擎ODBC引擎Kafka引擎RabbitMQ引擎File引擎URL引擎HDFS引擎 外部存储引擎分类 引擎类型描述特点MySQL从 MySQL 数据库中读取数据用于与 MySQL 数据库共享数据,支持读取 MySQL 表中的数据 支持 SQ…...

eclipse怎么配置jdk路径?
在Eclipse中配置JDK路径是一个简单的步骤,以下是配置JDK路径的步骤: 打开Eclipse:启动Eclipse IDE。 访问首选项: 在Eclipse的菜单栏中,选择 Window > Preferences(对于Mac OS X用户,选择 E…...