当前位置: 首页 > news >正文

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 &#xff5c;日常开发中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的情况下&#xff0c;尝试消费一个HTTPS URL时会遇到以下测试失败&#xff1a; Test void whenHttpsUrlIsConsumed…...

Lighthouse(灯塔)—— Chrome 浏览器性能测试工具

1.认识 Lighthouse Lighthouse 是 Google 开发的一款开源性能测试工具&#xff0c;用于分析网页或 Web 应用的性能、可访问性、最佳实践、安全性以及 SEO 等关键指标。开发人员可以通过 Lighthouse 快速了解网页的性能瓶颈&#xff0c;并基于优化建议进行改进。 核心功能&…...

扫二维码进小程序的指定页面

草料二维码解码器 微信开发者工具 获取二维码解码的参数->是否登陆->跳转 options.q onLoad: function (options) {// console.log("options",options.q)if (options && options.q) {// 解码二维码携带的链接信息let qrUrl decodeURIComponent(optio…...

如何用IntelliJ IDEA开发Android Studio用自定义Gradle插件

博主所用软件版本为&#xff1a; IntelliJ IDEA 2024.1.4 (Community Edition) Android Studio Ladybug Feature Drop | 2024.2.2 Beta 1 1、制作gradle插件&#xff08;IntelliJ IDEA 2024.1.4&#xff09; 新建groovy工程&#xff0c;File–>New–>Project… 右键点…...

YOLOv8实战道路裂缝缺陷识别

本文采用YOLOv8作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv8以其高效的实时检测能力&#xff0c;在多个目标检测任务中展现出卓越性能。本研究针对道路裂缝数据集进行训练和优化&#xff0c;该数据集包含丰富的道路裂缝图像样本…...

RPC一分钟

概述 微服务治理&#xff1a;Springcloud、Dubbo服务通信&#xff1a;Grpc、Trift Dubbo 参考 Dubbo核心功能&#xff0c;主要提供了&#xff1a;远程方法调用、智能容错和负载均衡、提供服务自动注册、自动发现等高效服务治理功能。 Dubbo协议Dubbo支持dubbo、rmi、http、…...

Elasticsearch ILM 故障排除:常见问题及修复

作者&#xff1a;来自 Elastic Stef Nestor 大家好&#xff01;我们的 Elasticsearch 团队正在不断改进我们的索引生命周期管理 (index Lifecycle Management - ILM) 功能。当我第一次加入 Elastic Support 时&#xff0c;我通过我们的使用 ILM 实现自动滚动教程快速上手。在帮…...

Unity 设计模式-策略模式(Strategy Pattern)详解

策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;定义了一系列算法&#xff0c;并将每种算法封装到独立的类中&#xff0c;使得它们可以互相替换。策略模式让算法可以在不影响客户端的情况下独立变化&#xff0c;客户端通过与这些策略对象进…...

【Maven系列】深入解析 Maven 常用命令

前言 在当今的软件开发过程中&#xff0c;项目管理是至关重要的一环。项目管理包括了项目构建、依赖管理以及发布部署等诸多方面。而在Java生态系统中&#xff0c;Maven已经成为了最受欢迎的项目管理工具之一。Maven 是一套用于构建、依赖管理和项目管理的工具&#xff0c;主要…...

微信小程序之简单的数据中心管理平台(1)

微信小程序之简单的数据中心管理平台&#xff08;1&#xff09; 引言 随着微信小程序的广泛应用&#xff0c;越来越多的企业开始探索如何利用这一技术开发高效、便捷的管理平台。数据中心管理作为信息化建设的重要组成部分&#xff0c;需要一个灵活、可扩展的界面来实现资源的…...

sqlmap --os-shell的原理(MySQL,MSSQL,PostgreSQL,Oracle,SQLite)

1. MySQL 条件 数据库用户需要具备高权限&#xff08;如 FILE 权限&#xff09;。数据库服务运行用户需要对目标目录有写权限。Web 服务器有可写目录&#xff0c;且支持执行上传的脚本&#xff08;如 PHP、JSP 等&#xff09;。 原理 利用 MySQL 的 SELECT ... INTO OUTFIL…...

2024年认证杯SPSSPRO杯数学建模C题(第一阶段)云中的海盐解题全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 C题 云中的海盐 原题再现&#xff1a; 巴黎气候协定提出的目标是&#xff1a;在2100年前&#xff0c;把全球平均气温相对于工业革命以前的气温升幅控制在不超过2摄氏度的水平&#xff0c;并为1.5摄氏度而努力。但事实上&#xff0c;许多之前的…...

三维扫描检测在汽车制造中的应用

三维扫描&#xff0c;通过先进三维扫描技术获取产品和物体的形面三维数据&#xff0c;建立实物的三维图档&#xff0c;满足各种实物3D模型数据获取、三维数字化展示、3D多媒体开发、三维数字化存档、逆向设计、产品开发、直接3D打印制造或辅助加工制造等一系列的应用。 三维扫描…...

【NoSQL数据库】Hbase基本操作——数据库表的增删改查

目录 一、Hbase原理 二、HBase数据库操作 三、遇到的问题和解决方法 一、Hbase原理 HBase的数据模型&#xff1a; 行键 时间戳 列族&#xff1a;contents 列族&#xff1a;anchor 列族&#xff1a;mime “com.cnn.www” T9 Achor:cnnsi.com”CNN” T8 Achor:…...

【C++】格式化输出详解:掌握 cout 的进阶用法

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;格式化输出的理论概述&#x1f4af;控制输出宽度和填充字符setw 操作符setfill 操作符 &#x1f4af;控制浮点数的显示格式fixed 与 scientificsetprecision &#x1f4af;…...

设计模式学习思路二

设计模式的学习思路_设计模式必须按顺序进行吗-CSDN博客 以下是一些方法和思路可以帮助你更清晰地识别使用了哪种设计模式。 1. 确定模式时的思考步骤 以下是分析代码时&#xff0c;你可以遵循的一些思路和步骤&#xff0c;帮助你识别可能使用的设计模式&#xff1a; a. 识别…...

什么是等级保护

1.为什么要实施等级保护: •国家信息安全形势严峻(敌对势力),针对基础信息系统的违法犯罪持续上升(网上诈骗、入侵、网上盗窃) •维护国家安全的需求(基础信息网络【互联网、电信网、广电网】及重要信息系统【银行、铁路、电力、海关】已经成为国家的关键基础设施) •信息安全是…...

k8s api对象,CRD

在Kubernetes项目中&#xff0c;一个API对象在Etcd里的完整资源路径&#xff0c;是由&#xff1a;Group&#xff08;API组&#xff09;、Version&#xff08;API版本&#xff09;和Resource&#xff08;API资源类型&#xff09;三个部分组成 apiVersion: batch/v2alpha1 kind:…...

【C++指南】C++内存管理 深度解析

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C指南》 期待您的关注 目录 引言 一、C 内存管理概述 二、C内存区域划分 三、C 内存管理方式 &#x1f343;1.自动内存管理…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

32单片机——基本定时器

STM32F103有众多的定时器&#xff0c;其中包括2个基本定时器&#xff08;TIM6和TIM7&#xff09;、4个通用定时器&#xff08;TIM2~TIM5&#xff09;、2个高级控制定时器&#xff08;TIM1和TIM8&#xff09;&#xff0c;这些定时器彼此完全独立&#xff0c;不共享任何资源 1、定…...

多元隐函数 偏导公式

我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式&#xff0c;给定一个隐函数关系&#xff1a; F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 &#x1f9e0; 目标&#xff1a; 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z​、 …...