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(防止抄袭,原文地址不可删除)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/34446.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

开闭原则与访问修饰符 中 的线程安全问题

开闭原则 对外扩展开放&#xff0c;对修改关闭 看下面一段代码 当我们一个类 中公共的方法本来是线程安全的&#xff0c; 被子类重写之后改变了逻辑&#xff0c;并且有新的线程去运行&#xff0c;这时候 就不是 线程安全的了 运行结果如下 而我们使用 private修饰方法3&#…

使用uniapp开发小程序场景:在百度地图上调用接口返回的设备相关信息并展示

首先在百度地图开发者平台注册微信小程序开发密钥下载百度地图SDK-bmap-wx.min.js,下载地址在项目入口index.html页面进行引入页面中进行调用&#xff0c;代码示例如下<map id"map" longitude"108.95" latitude"34.34" scale"3" :m…

Java版-速通图的表示法--链式前向星

图实例 链式前向星最终的输出结果: 以某个点,例如,上图中1点开始,然后找1为开头的边,输出终点和权重; 添加边演示 如上图,以点的个数为基准建立head,数组,用来动态标记,以i为顶点的上一条边的index值;head数组里面的值是随着边的添加变化的,存着上一次以i为开头的…

基于51单片机的智能公交车报站系统GPS定位语音播报智能安全检测人数统计

功能描述 1.LCD12864可显示当前年月日&#xff0c;星期&#xff0c;时间&#xff0c; 当前站名&#xff0c;经纬度&#xff0c;是否连接GPS&#xff0c;自动/手动模式&#xff0c; 2.自带GPS定位&#xff0c;可实时显示经纬度&#xff1b; 3.通过DS1302时钟芯片&#xff0c;获…

MySQL 性能优化详解

MySQL 性能优化详解 硬件升级系统配置优化调整buffer_pool数据预热降低日志的磁盘落盘 表结构设计优化SQL语句及索引优化SQL优化实战案例 MySQL性能优化我们可以从以下四个维度考虑&#xff1a;硬件升级、系统配置、表结构设计、SQL语句和索引。 从成本上来说&#xff1a;硬件升…

Python_Flask02

所有人都不许学Java了&#xff0c;都来学Python&#xff01; 如果不来学的话请网爆我的老师 连接前的准备 安装pymysql 和 flask_sqlalchemy&#xff0c;安装第三下面两个所需要的包才能连接上数据库 pip install pymysql pip install flask_sqlalchemy pymysql是一个Pyth…

YOLOv6

YOLOv6 是继 YOLOv5 之后&#xff0c;由 Meituan 的团队开发的一个目标检测模型。YOLOv6 的目标是进一步提高模型的性能&#xff0c;特别是在处理速度、准确度、以及模型的精简化方面&#xff0c;并且它在一些特定任务上进行了优化。YOLOv6 引入了多个创新&#xff0c;并优化了…

VBA信息获取与处理第四个专题第二节:将工作表数据写入VBA数组

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。这部教程给大家讲解的内容有&#xff1a;跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…

Linux安装Cuda和多个Cuda版本切换

解决的问题&#xff1a;服务器上跑深度学习代码&#xff0c;通常都需要用到Cuda。有时候跑的不同程序要求的配置Cuda版本可能也不同&#xff0c;会需要不同Cuda版本的替换。 Linux安装Cuda CUDA官网&#xff0c;下载安装&#xff0c;网址为&#xff1a;https://developer.nvi…

云渲染特效广告一秒费用预估是多少?

在计算云渲染特效广告每秒钟的费用时&#xff0c;我们需要综合考虑多个关键因素&#xff0c;包括特效的复杂性、所需的渲染计算能力以及对渲染质量的具体要求。通常情况下&#xff0c;影视特效级别的广告因其场景极其复杂&#xff0c;每帧渲染所需时间较长&#xff0c;从而导致…

【计算机组成原理统考历年真题解析】2010年真题

1. 下列选项中&#xff0c;能缩短程序执行时间的措施是: I.提高CPU时钟频率 II.优化数据通路结构 III,对程序进行编译优化 A.仅I和II B.仅I和III C.仅II和III D.I、II和III D 2. 假定有4个整数用8位补码分别表示为 r1FEH&#xff0c;r2F2H&#xff0c;r390H&#xff0c;r4F…

一、理论基础-PSI

之前参加了隐语第2期&#xff0c;对隐语SecretFlow框架有了大致的了解&#xff0c;这次参加隐语第4期&#xff0c;学习下PSI和PIR。 一、PSI定义 首先介绍PSI的定义&#xff0c;PSI&#xff08;隐私集合求交&#xff0c;Private Set Intersection即PSI)是安全多方计算&#x…

php 系统函数 记录

PHP intval() 函数 PHP函数介绍—array_key_exists(): 检查数组中是否存在特定键名 如何使用PHP中的parse_url函数解析URL PHP is_array()函数详解&#xff0c;PHP判断是否为数组 PHP函数介绍&#xff1a;in_array()函数 strpos定义和用法 strpos() 函数查找字符串在另一字符串…

数据挖掘之回归算法

引言 回归分析是数据挖掘中最常见的技术之一&#xff0c;它用于建立自变量&#xff08;或称特征&#xff09;与因变量&#xff08;或目标变量&#xff09;之间的数学关系。回归模型不仅在统计学中占据重要地位&#xff0c;也广泛应用于预测、优化、风险管理等各个领域。在数据…

鸿蒙DevEco Profiler无法识别设备

一、问题 DevEco Studio运行项目处可以识别到设备信息&#xff0c;但是Profiler工具无法识别 二、背景知识 注意 DevEco Profiler工具不支持模拟器进行调优。macOS 12及以上系统版本支持使用DevEco Profiler工具。 知识来源&#xff1a;文档中心 三、解决方案 重启DevEco …

网上商城系统设计与实现

文末获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 题目&#xff1a;网上商城系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理…

微服务的熔断、限流和降级

1 服务问题 系统的运行是避免不了问题的产生&#xff0c;而服务问题可以从如下两个角度来分析&#xff1a; 服务系统问题&#xff1a;如机器宕机、网络、机房故障&#xff0c;虽然这个是有问题但概率很小&#xff0c;在面试的时候简单提即可。服务程序问题&#xff1a;如业务响…

C++ 哈希表、unordered_map 和 unordered_set 的实现

哈希表&#xff08;Hash Table&#xff09;是一种常用的数据结构&#xff0c;它能够以接近常数时间复杂度的效率完成插入、删除和查找操作。在现代编程中&#xff0c;标准模板库&#xff08;STL&#xff09;提供了 unordered_map 和 unordered_set&#xff0c;它们都是基于哈希…

多行为推荐-KBS 24|基于HyperGRU对比网络的短视频推荐多行为序列建模

论文&#xff1a;https://www.sciencedirect.com/science/article/abs/pii/S0950705124004751?via%3Dihub 关键词&#xff1a;短视频推荐&#xff0c;多行为推荐&#xff0c;对比学习&#xff0c;RNN 1 动机 这是我第一次看短视频推荐里涉及到多行为的论文&#xff0c;动机还…

【AI系统】ESPNet 系列

ESPNet 系列 本文将会介绍 ESPNet 系列&#xff0c;该网络主要应用在高分辨率图像下的语义分割&#xff0c;在计算内存占用、功耗方面都非常高效&#xff0c;重点介绍一种高效的空间金字塔卷积模块&#xff08;ESP Module&#xff09;&#xff1b;而在 ESPNet V2 上则是会更进…