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

JSTL标签库简介 JSTL的下载和使用 核心标签库的使用

一、JSTL 核心概念

1.1. 什么是 JSTL?

JSTL 是JSP 标准标签库,由 Apache 组织提供的开源标签库,是 Java Web 开发的标准组件。它通过自定义标签的形式,封装了通用的业务逻辑(判断、循环、格式化、数据库操作等),让 JSP 页面无 Java 代码化。

1.2. JSTL 的核心优势

分离前后端:JSP 专注页面展示,Java 代码专注业务逻辑,降低耦合

提高可读性:标签语法比 Java 脚本更简洁,非开发人员也能看懂

功能强大:内置判断、循环、格式化、数据库、XML 操作等通用功能

可复用性:标签可以在多个页面重复使用,减少代码冗余

统一标准:跨服务器、跨项目通用,无需重复开发

1.3. JSTL 五大标签库(核心)

标签库名称作用前缀URI 地址
核心标签库流程控制、循环、输出、URL 处理等(最常用)chttp://java.sun.com/jsp/jstl/core
格式化标签库日期、数字、国际化格式化fmthttp://java.sun.com/jsp/jstl/fmt
SQL 标签库数据库增删改查(不推荐生产使用)sqlhttp://java.sun.com/jsp/jstl/sql
XML 标签库XML 文档解析、操作xhttp://java.sun.com/jsp/jstl/xml
函数标签库字符串处理、长度计算等fnhttp://java.sun.com/jsp/jstl/functions

1.4.JSTL 使用注意事项

必须配合 EL 表达式使用:JSTL 标签的属性值几乎都用 EL 表达式赋值,不能直接写 Java 代码

域对象规范:优先使用request域传递数据,避免session域滥用

SQL/XML 标签弃用:生产环境禁止使用<sql:xxx><x:xxx>,数据库操作交给 Service 层

路径问题:跳转路径必须用<c:url>自动拼接根路径,避免 404

依赖版本:JSTL 1.2 是稳定版,兼容所有主流服务器(Tomcat 8+)

二、JSTL的下载和使用

三、核心标签库使用

3.1 核心标签库是什么?

核心标签库(Core Tag Library) 是 JSTL 中最基础、最常用的标签库,前缀为 c,用来在 JSP 页面中替代 Java 脚本(<% %>),完成变量操作、条件判断、循环遍历、URL 处理等通用逻辑,让页面更干净、易维护。

引入方式:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

3.2 核心标签库-输入输出标签

3.2.1 数据输入标签:<c:set> <c:out> —— 页面数据的“容器”

<c:set> 是JSTL中最常用的「输入标签」,核心作用是:在指定的域对象中定义变量、存储数据,或修改已有变量/对象的属性。替代的是JSP脚本中的<% request.setAttribute("name", "value"); %>,但语法更简洁,无需写Java代码,且支持更灵活的配置。

3.2.2 输入案例

3.2.3 注意事项

scope属性尽量不用session和application,优先用request和page,避免数据污染和内存泄漏。

修改对象属性时,target必须是JavaBean对象(有get/set方法),否则会报错。

如果var对应的变量已存在,<c:set> 会覆盖原有值;如果不存在,则创建新变量。

3.2.4数据删除标签:<c:remove> <c:catch>—— 页面数据的“清理工”

<c:remove> 是输入输出标签中相对少用,但必要时不可或缺的标签,核心作用是:删除指定域对象中的变量,释放资源,避免数据残留。替代的是JSP脚本中<%request.removeAttribute("name"); %>,语法更简洁,无需关注Java API。

3.2.5 输出案例

3.3 核心标签库-流程控制标签

3.3.1 概述

3.3.2 案例

3.3 核心标签库-迭代标签

3.3.1 概述

<c:forEach> 是JSTL迭代标签中最核心、最常用的标签,没有之一。它的核心作用是:遍历集合、数组,或执行指定次数的循环,覆盖了Java中for循环、foreach循环的所有场景,灵活度极高。无论是后台传递的List<User>、数组、Map集合,还是单纯需要循环N次(如生成页码、循环渲染列表项),用<c:forEach>都能轻松实现,是开发中必不可少的标签。

<c:forTokens> 是专门用于「字符串拆分遍历」的迭代标签,核心作用是:将一个字符串按指定的分隔符拆分,然后遍历拆分后的每一个子字符串。

3.3.2 讲解

3.3.3 核心属性详解

  • items:可选属性,用于指定要遍历的集合或数组(必须用EL表达式获取,如 ${userList}、${arr})。 注意:只有“遍历集合/数组”场景需要,“指定次数循环”场景无需该属性。

  • var:必填属性,定义循环变量,用于接收当前遍历的元素(遍历集合/数组时,var是集合中的单个元素;指定次数循环时,var是当前循环的数值)。 示例:遍历List<User>时,var="user",则可通过 ${user.name} 获取当前用户的姓名。

  • varStatus:可选属性,定义循环状态对象,用于获取循环的相关状态(如索引、计数、是否为第一个/最后一个元素),非常实用。 常用状态属性(重点记):

    • index:当前循环的索引(从0开始,和数组索引一致);

    • count:当前循环的计数(从1开始,用于显示序号,如1、2、3...);

    • first:布尔值,是否为第一次循环(true/false);

    • last:布尔值,是否为最后一次循环(true/false)。

  • begin:可选属性,指定循环的起始位置(遍历集合/数组时,是起始索引;指定次数循环时,是起始数值),默认从0开始。

  • end:可选属性,指定循环的结束位置(遍历集合/数组时,是结束索引;指定次数循环时,是结束数值),默认到集合/数组的最后一个元素,或指定次数的最后一个数值。

  • step:可选属性,指定循环的步长(每次循环跳过的元素/数值),默认步长为1(即每次循环获取下一个元素/数值)。

3.3.4 案例

http://www.jsqmd.com/news/801694/

相关文章:

  • 【信息科学与工程学】【产品体系】第十三篇 光刻机08 EUV光刻机的主要数学理论01
  • Beyond Compare 5激活终极指南:3分钟获取永久授权的完整教程
  • Webpack日志转发插件原理与实战:构建监控与性能优化指南
  • 终极指南:如何快速掌握阴阳师自动化脚本的完整使用技巧
  • 手把手教你用Olimex ARM-USB-TINY-H调试RISC-V开发板:OpenOCD配置文件详解与实战
  • 从正则表达式到最小DFA:图解整个编译流程中的状态化简到底在干嘛
  • 别再盲目用Google了!Perplexity vs Google搜索的权威测评:基于1,842次真实技术查询的准确率、时延与可验证性三重审计
  • 从零到一:用MicroPython驱动MPU6050打造姿态感知核心
  • 如何彻底告别网盘限速:9大平台直链解析工具完整指南
  • YOLOv5网络结构拆解:从608x608输入到三个特征图输出,新手也能看懂的模型数据流图解
  • Qt多线程接收周立功CAN数据实战:告别卡顿,实时显示报文到TableWidget
  • CCF CSP 校门外的树:从“打表”预处理到动态规划的精妙解法
  • 从捏合机,传感器,金属探测器到冷冻机:工业品推广平台怎么选?这份推荐清单值得收藏 - 品牌推荐大师
  • Windows平台SITL仿真环境搭建:从Cygwin到ArduPilot的完整指南
  • 别再照搬Zynq教程了!手把手教你为Arty A7-35T板子固化MicroBlaze程序到SPI Flash
  • 【收藏必看】2026 版|AI Coding 仅 3 年彻底重构职场!程序员必转 Agent 工程师风口
  • OpencvSharp 算子学习教案之 - Cv2.Sobel
  • 告别内存焦虑!STM32H743全系列SRAM(ITCM/DTCM/AXI)实战分配指南(MDK/IAR双环境)
  • 别再手动改代码了!用CubeMX+Keil V5一键搞定STM32F4的FPU配置(含ARM_MATH_CM4宏定义详解)
  • 从手机卡顿到eMMC寿命:聊聊UFS替换eMMC背后,那些被你忽略的协议层原因
  • 从零到一:使用DaVinci Developer进行AUTOSAR SWC设计与ECU集成
  • Win10 64位系统下,Questasim 10.6c安装与破解的保姆级避坑指南(附资源)
  • CTF新手必看:用零宽度字符在txt里藏信息,手把手教你从识别到解密
  • Go表驱动测试效率提升利器:VS Code扩展深度解析与实战
  • 批处理_基础补充、文件和文件夹处理_02
  • Gitee:中国开发者生态中的数字化转型基石
  • 告别手动拖拽!用ENVI的Crosshairs和Cursor Value功能,精准搞定无坐标影像拼接
  • KLayout版图设计工具:从零开始掌握免费芯片设计解决方案
  • 函数式编程中的函数组合与映射
  • 2026年浙江电动破碎阀与智能防堵塞系统全方位选型指南 - 精选优质企业推荐官