25.JSP标准标签库

JSTL概述

JSTL 全名为 JavaServer Pages Standard TagLibrary,即jsp标准标签库。JSTL 是由 JCP (Java Community Process)所指定的标准规格,它主要提供给 Java Web 开发人员一个标准通用的标签函数库。
Web 程序开发人员能够利用 J STL 和 EL 来开发 Web 程序,取代传统直接在页面上嵌入 Java 程序(Script)的做法,以提高程序可读性、维护性和方便性。

JSTL简介

JavaServer Pages Standard TagLibrary ( 1. 1 ) ,它的中文名称为 JSP 标准标签函数库。JSTL 是一个标准的已制定好的标签库,可以应用于各种领域,如:基本输入输出、流程控制、循环、XML 文件剖析、数据库查询及国际化和文字格式标准化的应用等。JSTL 所提供的标签函数库主要分为五大类:
• 核心标签(用得最多)
• 国际化标签(I18N格式化标签)
• 数据库标签(SQL标签,很少使用)
• XML标签(几乎不用)
• JSTL函数(EL函数)
在这里插入图片描述

安装 JSTL

1)下载jstl库
从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。
官方下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
2)jstl库安装(拷贝导入)
下载jakarta-taglibs-standard-1.1.2.zip 包并解压,将jakarta-taglibs-standard-1.1.2/lib/下的两个jar文件:standard.jar和jstl.jar文件拷贝到创建的工程中的/WEB-INF/lib/下即可。
3)jstl库引入
在需要用到jstl库的jsp页面的开头引入jstl库,格式如下:
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
prefix为引用库的前缀,建议不要改动,url必须为http://java.sun.com/jsp/jstl/core

核心标签库

JSTL的核心标签库标签共13个,使用这些标签能够完成JSP页面的基本功能,减少编码工作。
从功能上可以分为4类:表达式控制标签、流程控制标签、循环标签、URL操作标签。
    (1)表达式控制标签:out标签、set标签、remove标签、catch标签。
    (2)流程控制标签:if标签、choose标签、when标签、otherwise标签。
    (3)循环标签:forEach标签、forTokens标签。
    (4)URL操作标签:import标签、url标签、redirect标签、param标签。

<c:out>标签

<c:out>标签主要是用来输出数据对象(字符串、表达式)的内容或结果。
  在使用Java脚本输出时常使用的方式为: <% out.println(“字符串”)%> 或者 <%=表达式%> ,在web开发中,为了避免暴露逻辑代码会尽量减少页面中的Java脚本,使用<c:out>标签就可以实现以上功能。
<c:out>语法如下:
• <c:out value=”字符串” [escapeXml=”true|false”] [default=”默认值”] >
• <c:out value=”EL表达式” [escapeXml=”true|false”] [default=”默认值”] >

<c:set>标签

<c:set>标签用于把某一个对象存在指定的域范围内,或者将某一个对象存储到Map或者JavaBean对象中。
<c:set>语法如下:
<c:set value=”值1” var=”name1” [scope=”page|request|session|application”]/>
含义:把一个变量名为name1值为“值1”的变量存储在指定的scope范围内。

<c:remove>标签

<c:remove>标签主要用来从指定的JSP范围内移除指定的变量。
<c:remove>语法如下:
<c:remove var=”变量名” [scope=”page|request|session|application”]/>其中var属性是必须的,scope可以以省略。
<c:catch>标签
<c:catch>标签用于捕获嵌套在标签体中的内容抛出的异常。
<c:catch>语法如下:
<c:catch [var=“varName”]>容易产生异常的代码</c:catch>  var属性用于标识<c:catch>标签捕获的异常对象,它将保存在page这个Web域中。
在这里插入图片描述

<c:if>标签

<c:if>标签和程序中的if语句作用相同,用来实现条件控制。
<c:if>语法如下:
【语法1】:没有标签体内容(body)
 <c:if test=“testCondition” var=“varName” [scope=“{page|request|session|application}”]/>
【语法2】:有标签体内容
 <c:if test=“testCondition” [var=“varName”] [scope=“{page|request|session|application}”]>
      标签体内容
 </c:if>
• test属性用于存放判断的条件,一般使用EL表达式来编写。
• var属性用来存放判断的结果,类型为true或false。
• scopes属性用来指定var属性存放的范围。

流程控制标签

流程控制标签包括choose标签、when标签、otherwise标签.这3个标签通常情况下是一起使用的,<c:choose>标签作为<c:when>和<c:otherwise>标签的父标签来使用.类似 “if-else if-else” 的条件判断结构.

<c:choose><c:when test="条件1">//业务逻辑1<c:when><c:when test="条件2">//业务逻辑2<c:when><c:when test="条件n">//业务逻辑n<c:when><c:otherwise>//业务逻辑</c:otherwise></c:choose>

在这里插入图片描述

<c:forEach>标签

该标签根据循环条件遍历集合(Collection)中的元素。
<c:forEach>语法如下:

<c:forEach var=”name” items=”Collection” varStatus=”StatusName” begin=”begin” end=”end” step=”step”>本体内容
</c:forEach>

• var设定变量名用于存储从集合中取出元素。
• items指定要遍历的集合。
• begin、end用于指定遍历的起始位置和终止位置(可选)。
• step指定循环的步长。
• varStatus描述循环的状态信息。
对于varStatus,可以取值index\count\first\last\current。
• current:当前这次迭代的(集合中的)项
• index:当前这次迭代从 0 开始的迭代计数
• count:当前这次迭代从 1 开始的迭代计数
• first:用来表明当前这轮迭代是否为第一次迭代的标志,返回true/false
• last:用来表明当前这轮迭代是否为最后一次迭代的标志,返回true/false

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rouyi-vue-pro+vue3+vite4+Element Plus项目中使用生成Vue2+Element UI标准模板

运行一个pro-vue3的前端项目&#xff0c;以及后端服务 在基础设施-代码生成模块中选择某张数据库表导入&#xff0c;并编辑生成信息&#xff0c;前端类型&#xff1a;Vue2Element UI标准模板 在vue3项目中创建一个vue文件 <template> </template><script>…

如何进一步优化Ubuntu服务器的性能

导读&#xff1a; 要进一步优化Ubuntu服务器的性能&#xff0c;您可以考虑以下几个方面&#xff1a;优化软件包管理&#xff1a; Ubuntu使用APT&#xff08;Advanced Package Tool&#xff09;作为其软件包管理工具。为了提高性能&#xff0c;您可以采取以下措施 要进一步优化U…

教师教育研究的意义有哪些

教师教育研究对于提高教育质量、推动教育改革的重要性。也有许多网友对教师教育研究的意义进行了深入探讨。 一、提高教师专业素养 教师是教育的核心力量&#xff0c;教师的专业素养直接影响到教育质量。教师教育研究通过对教育理论、教学方法、教育技术等方面的研究&#xff…

数据分析:继loopy、卡皮巴拉后,小红书下个可爱“顶流”是?

导语 温柔胆小又爱哭的吉伊、乐观开朗会说人话的哈奇&#xff0c;还有自由奔放整天发癫的兔子乌萨奇&#xff0c;三只小可爱共同组成了《吉伊卡哇》&#xff08;ちいかわ&#xff0c;Chiikawa&#xff09;的主角三人组&#xff0c;持续引领当代年轻人的社交话题。 据千瓜数据…

网络编程day5

作业 1> 使用select完成TCP客户端程序 //client #include<myhead.h> #define CLINET_IP "192.168.125.79" #define CLINET_PORT 9999 #define SERVE_IP "192.168.125.79" #define SERVE_PORT 8888 int main(int argc, const char *argv[]) {/…

类和对象(中篇)

类的六个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员函数。 默认成员函数&#xff1a; 用户没有显式实现&#xff0c;编译器会…

网易面试:亿级用户,如何做微服务底层架构?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业网易、美团、字节、如阿里、滴滴、极兔、有赞、希音、百度、美团的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; 微服务改造&#xff0c;你是怎么做的&#xff1…

【PIE-Engine 数据资源】全球2.5分分辨率累积降水量数据集

文章目录 一、 简介二、描述三、波段四、示例代码参考资料 一、 简介 数据名称全球2.5分分辨率累积降水量数据集时间范围1961年- 2018年空间范围全球数据来源worldclim代码片段var images pie.lmageCollection(WORLDCLIME/GLOBAL_PREC_MONTH") 二、描述 全球2.5分分率果…

【Python炫酷系列】祝考研的友友们金榜题名吖(完整代码)

文章目录 环境需求完整代码详细分析系列文章环境需求 python3.11.4及以上版本PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这个库哦~)【注】 python环境搭建请见:https://want595.…

10、Qt:对数据进行加密、解密

一、说明 在Qt项目中简单的对数据进行加密解密&#xff0c;有如下两种方式 1、QCryptographicHash Qt提供了用于加密的类QCryptographicHash&#xff0c;但是QCryptographicHash类只有加密功能&#xff0c;没有解密功能 2、Qt-AES 使用第三方AES库&#xff0c;对数据进行加密解…

【动态规划】08路径问题_下降路径最小和_C++(medium)

题目链接&#xff1a;leetcode下降路径最小和 目录 题目解析&#xff1a; 算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 编写代码 题目解析&#xff1a; 题目让我们求通过 matrix 的下降路径 的 最小和 由题可得&#xff1a; 在下一行选择的元…

用户管理第2节课-idea 2023.2 后端--删除表,从零开始

一、鱼皮清空model文件夹下 二、鱼皮清空mapper文件夹下 三、删除 test 测试类下的部分代码 3.1删除SampleTest 3.2删除部分代码 UserCenterApplicationTests

【SQL】根据年份,查询每个月的数据量

根据年份&#xff0c;查询每个月的数据量 一种 WITH Months AS (SELECT 1 AS Month UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION…

Axure中如何使用交互样式交互事件交互动作情形

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《产品经理如何画泳道图&流程图》 ⛺️ 越努力 &#xff0c;越幸运 目录 一、Axure中交互样式 1、什么是交互样式&#xff1f; 2、交互样式的作用&#xff1f; 3、Axure中如何…

DRF从入门到精通二(Request源码分析、DRF之序列化组件)

文章目录 一、Request对象源码分析区分原生request和新生request新的request还能像原来的reqeust一样使用吗源码片段分析总结&#xff1a; 二、DRF之序列化组件序列化介绍序列化步骤序列化组件的基本使用反序列化基本使用反序列化的新增反序列化的新增删除单条 反序列化的校验 …

mangokit:golang web项目管理工具,使用proto定义http路由和错误

文章目录 前言1、mangokit介绍1.1 根据proto文件生成http路由1.2 根据proto文件生成响应码1.3 使用wire来管理依赖注入 2、mangokit实现2.1 protobuf插件开发2.2 mangokit工具 3、使用示例3.1 创建新项目3.2 添加新的proto文件3.3 代码生成 前言 在使用gin框架开发web应用时&a…

Linux学习(1)——初识Linux

目录 一、Linux的哲学思想 1.1 基础知识 1.2 根目录下的文件夹 二、Shell 1、Shell的定义 2、Shell的作用 三、Linux命令行 1、Linux通用命令行使用格式 四、Linux命令的分类 1、内部命令和外部命令的理解 2、内部命令和外部命令的区别 3、命令的执行过程 五、编辑…

[每周一更]-(第31期):Mysql安装汇总

写自&#xff1a;20230204 23:25 一. mysql rpm二进制包 rpm -Uvh http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm yum install mysql-community-server service mysqld start set password password(“123456”)二. mysql yum安装 1、安装查看有没有安装…

开源高星精选,10个2023企业级Python测试项目,再不学习今年没了

纸上得来终觉浅&#xff0c;光学习理论知识是不够的。 想要学好软件测试必须要结合实战项目深入掌握&#xff0c;今天给大家分享十个2023最新企业级Python软件测试项目&#xff1a; ▌Rank 1&#xff1a;Requests-HTML v0.9&#xff08;7385 stars on Github&#xff0c;来自K…

Python-基于fastapi实现SSE流式返回(类似GPT)

最近在做大模型对话相关功能&#xff0c;需要将对话内容流式返回给前端页面&#xff08;类似GPT的效果&#xff09;。下面直接说下如何实现&#xff1a; 1.首先导入fastapi和sse流式返回所需要的包 from fastapi import APIRouter, Response, status from sse_starlette.sse …