JavaWeb ( 七 ) JSTL Tag标签

news2024/9/28 15:27:05

2.5.JSTL标签与EL表达式

2.5.1.EL表达式

EL表达式 : Expression Language

目的:为了使JSP写起来更加简单
格式:${expression}

  1. EL 提供“.“和“[ ]“两种运算符来存取数据。${user.name}, ${user[“name”] }
  2. 支持算术操作符, 关系操作符, 逻辑操作符; ${empty A} , ${a?b:c}, ${25*(4+3)}
  3. 支持作用域 pageScope, requestScope, sessionScope, applicationScope
  4. param: 代替 request.getParameter(); 用于页面之间传递值
  5. 可以使用JSTL函数标签库,也可以自定义函数

2.5.2.JSTL标签

JSTL标签 : JavaServer Pages Standard Tag Library JSP 标准标签函数库

  1. 使用时要引入 jstl.jar, standard.jar 两个jar包

  2. 经常与${e}EL表达式结合使用

  3. 在使用标签时先要使用jsp的taglib指令

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

<%@taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="xml" %> 
<%@taglib uri="http://java.sun.com/jsp/jstl/sql"  prefix="sql" %> 

2.5.2.1.迭代标签 c:forEach

导入标签库

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

标签用法

<c:forEach  var= "别名"  items= " ${集合}"  varStatus= "序号" begin= "开始" end= "结束" step= "增幅" > 
	内容HTML代码
</c:forEach>

属性说明

属性说明
begin从第几条开始
end循环到第几条
step步长
var每一个元素的名称
items要循环的变量,使用${作用域中的名称}
varStatus序号对象, 有count, index, first, last等属性

2.5.2.2.判断标签 c:if

导入标签库

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

标签用法

<c:if test= "${条件}" > 
	内容HTML代码 
</c:if> 

注意 : 没有 else 标签

2.5.2.3.选择标签 c:choose

相当于switch结构

导入标签库

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

标签用法

<c:choose>
	<c:when test= " ${条件}" >内容HTML代码 </c:when>
	<c:when test= " ${条件}" >内容HTML代码 </c:when>
	<c:otherwise>内容HTML代码 </c:otherwise>
</c:choose>

注意 : 这是个结合嵌套标签, 有 多个标签共同使用

2.5.2.4.设值标签 c:set

对结构复杂的信息起别名, 可以别名调用

导入标签库

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

标签用法

设置别名
<c:set  value=“${信息}"   var=“别名"></c:set>

调用
<%=别名%>

2.5.2.5.输出标签 c:out

导入标签库

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

标签用法

<c:out value=“${要输出的信息}" default="默认值" escapeXml="是否转换特殊字符" ></c:out>

2.5.2.6格式化输出时间 fmt:formatDate

导入标签库

<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

标签用法

<fmt:formatDate value=" ${时间信息}" pattern="yyyy-MM-dd(输出模式)"></ fmt:formatDate>

注意 : value 属性必须是时间类型java.util.Date的信息

2.5.2.7.函数标签库

导入标签库

<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

标签用法

<c:choose>
	<c:when test="${fn:length(list)>0 }">
		${ list.size() }
	</c:when>
	<c:otherwise>
		没有信息
	</c:otherwise>
</c:choose>

说明 : 选择标签与函数标签 混合使用
在 EL表达式 中, 使用了 length() 函数 判断集合的长度

2.5.3.自定义标签

JSP自定义标签就是通过自定义标签实现类来实现复杂的、可重复利用的功能。简化jsp页面,提高代码的复用性

本质上说自定义标签 就是在页面上生成一段固定的HTML代码

2.5.3.1.定义标签类

public class  MyTag  extends TagSupport {

	@Override
	public int doStartTag throws JspException  {
		JspWriter out = this.pageContext.getOut();		
		try {
			out.print("HTML代码");
		} catch (IOException e) {
			e.printStackTrace();
		}
		return 	 super.doStartTag();
	}
}

2.5.3.2.配置标签信息

编写标签配置文件 , 默认放在 web-inf 文件夹下, 扩展名是 .tld

<?xml  version="1.0"   encoding="UTF-8"  ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
                        "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd" >
<taglib>
	<tlibversion>标签版本</tlibversion>
	<jspversion>JSP版本</jspversion>
	<uri>引用名</uri>
 
	<tag>
		<name>标签名</name>
		<tagclass>标签类路径</tagclass>
		<attribute>
			<name>属性名</name>
			<required>是否是必须的</required>
			<rtexprvalue>是否接收表达式</rtexprvalue>
		</attribute>
	</tag>
</taglib>

在使用的页面通过<%@taglib>引入标签文件

2.5.3.3.标签类家族

javax.servlet.jsp.tagext

在这里插入图片描述

2.5.3.4.标签类运行顺序 IterationTag

在这里插入图片描述

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

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

相关文章

Python:Python进阶:内存管理机制

Python内存管理机制 1. 堆2. 栈3. 引用4. Python中可变对象和不可变对象有个问题&#xff1a;你可以好好思考下总结 Python内存管理程序是用 C/C写的&#xff0c;这里我们以 CPython解释器为例说明。 在Python 中 所有数据类型 包括&#xff1a;int dict str都是一个对象&#…

层次分析法及找工作问题实战

学习知识要实时简单回顾&#xff0c;我把学习的层次分析法简单梳理一下&#xff0c;方便入门与复习。 AHP 层次分析法&#xff08;Analytic Hierarchy Process&#xff0c;简称 AHP&#xff09;是对一些较为复杂、较为模糊的问题作出决策的简易方法&#xff0c;它特别适用于那…

C++类和对象上

专栏&#xff1a;C/C 个人主页&#xff1a;HaiFan. 专栏简介&#xff1a;本章为大家带来C类和对象相关内容。 类和对象 前言面向过程和面向对象类的引入类的定义对于类中成员的命名建议 类的访问限定符及封装访问限定符封装 类的作用域类的实例化如何计算类对象的大小this指针t…

Web自动化测试——XAPTH高级定位

XAPTH高级定位 一、xpath 基本概念二、xpath 使用场景三、xpath 相对定位的优点四、xpath 定位的调试方法五、xpath 基础语法&#xff08;包含关系&#xff09;六、xpath 顺序关系&#xff08;索引&#xff09;七、xpath 高级用法1、[last()]: 选取最后一个2、[属性名属性值 an…

ESP32设备驱动-PCF8575IO扩展器驱动

PCF8575IO扩展器驱动 文章目录 PCF8575IO扩展器驱动1、PCF8575介绍2、硬件准备3、软件准备4、驱动实现1、PCF8575介绍 PCF8575用于两线双向总线 (I2C) 的 16 位 I/O 扩展器专为 2.5-V 至 5.5-V VCC 操作而设计。 PCF8575 器件通过 I2C 接口 [串行时钟 (SCL)、串行数据 (SDA)]…

flask教程8:模板

文章目录 一、模板与自定义过滤器1 模板2 过滤器转义过滤器讲解 3自定义过滤器 二、表单1表单2表单扩展 三、创建表单模型类与模板使用3.1 表单模型类 四 、使用表单接受并检验参数五、模板宏的使用六 、宏定义在外部的使用七 &#xff1a;模板继承与包含继承包含include 八 、…

PVE 安装 windows10

pve 安装教程大家可以参考视频&#xff1a;pve 安装 pve 安装 Windows10 视频教程&#xff1a;pve 安装Windows10 在安装好 pve 后我们就可以进行虚拟机的安装了。当然我们可以自行决定是否有必要进行 win10 的安装。 准备工作 1. 下载 win10 镜像文件&#xff1a;https://…

数据结构与算法基础(王卓)(35):交换排序之快排【第二阶段:标准答案、初步发现问题】

目录 第二阶段&#xff1a;一分为二 整个快排算法的程序运行大框架&#xff1a; 做出的改动&#xff08;和原来程序的区别&#xff09;&#xff1a; Project 1: PPT标准答案&#xff1a; Project 1小问题&#xff1a; Project 1还存在着一个巨大的问题&#xff1a; 具体问…

嵌入式软考备考_8 软件测试

软件测试 测试&#xff1a;在规定的条件下操作程序&#xff0c;以发现错误&#xff0c;对软件质量进行评估。 对象&#xff1a;程序&#xff0c;数据&#xff0c;文档。 目的&#xff1a;发现错误&#xff0c;看是否满足用户需求&#xff0c;发现错误产生的原因&#xff08;…

汇编四、51单片机汇编指令2

1、机器码 (1)MOV A,#0x60对应机器码为7460 (2)7460对应二进制 0111 0100 0110 0000 0x74对应指令&#xff0c;0x60对应立即数。 (3)immediate data翻译为立即数。 (4)可人为查表把汇编转为机器码&#xff0c;也可通过编译器把汇编转为机器码。 2、汇编常见缩写 (1)Rn: n可…

leetcode-040-组合总和2

题目及测试 package pid040; /* 40. 组合总和 II 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用 一次 。注意&#xff1a;解集不能包含重复的组合…

Vue中使用EasyPlayer播放H265视频流

需求说明 需要在Vue2的项目中使用EasyPlayer进行H265视频流的播放。使用官方的最新版本加载H265会有问题。一直处于加载中… 实现步骤 引入easyplayer,这里最开始引入了最新版会有问题&#xff0c;因此引入的是3.3.12版本&#xff0c;可参照官方文档进行配置。 EasyPlayer示…

HBase整合Phoenix

HBase整合Phoenix 创建软件目录 mkdir -p /opt/soft cd /opt/soft下载软件 wget https://dlcdn.apache.org/phoenix/phoenix-5.1.3/phoenix-hbase-2.5-5.1.3-bin.tar.gz解压 hbase tar -zxvf phoenix-hbase-2.5-5.1.3-bin.tar.gz修改 hbase 目录名称 mv phoenix-hbase-2.5…

(初)进程概念

目录 认识冯诺依曼系统 操作系统(Operator System) 设计OS的目的&#xff1a; 定位&#xff1a; 如何理解管理&#xff1a; 总结&#xff1a; 系统调用和库函数概念&#xff1a; 进程 基本概念 &#xff1a; 描述进程PCB task_struct - PCB的一种 task_struct内容分…

编译安装最新的Linux系统内核

现在还有不少机器是CentOS8 Stream系统&#xff0c;虽然上了贼船&#xff0c;不影响用就是了。8的编译和7大同小异&#xff0c;只是踩了更多的坑在这里记录一下&#xff0c;或许会帮到看到的朋友。 安装编译环境 CentOS8安装必要的包 yum groupinstall "Development Too…

【P13】JMeter 常数吞吐量定时器(Constant Throughput Timer)

文章目录 1、基于计算吞吐量&#xff1a;只有此线程2、基于计算吞吐量&#xff1a;所有活动线程3、基于计算吞吐量&#xff1a;当前线程组中的所有活动线程4、基于计算吞吐量&#xff1a;所有活动线程&#xff08;共享&#xff09;5、基于计算吞吐量&#xff1a;当前线程组中的…

【2023/05/08】雅卡尔织布机

Hello&#xff01;大家好&#xff0c;我是霜淮子&#xff0c;2023倒计时第3天。 Share The world puts off its mask of vastness to its lover. It becomes small as one song,as one kiss of the eternal. 译文&#xff1a; 世界对着它的爱人&#xff0c;把它浩瀚的面具揭…

已做过算法题总结2

20. 有效的括号 (括号匹配是使用栈解决的经典问题&#xff0c;这道题主要是记住三种不成立的情况) 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串&#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用…

解密链表元素移除:三种巧妙思路,轻松驱逐难缠结点

本篇博客会讲解力扣“203. 移除链表元素”的解题思路&#xff0c;这是题目链接。 老规矩&#xff0c;先来审题&#xff1a; 以下是一些示例&#xff1a; 以下是提示&#xff1a; 本题的思路还挺多的&#xff0c;不过都是链表的常规操作。 思路1 万能的尾插法。遍历链表&am…

[Golang] 爬虫实战-用多层嵌套结构体去接收多层嵌套数据

&#x1f61a;一个不甘平凡的普通人&#xff0c;致力于为Golang社区和算法学习做出贡献&#xff0c;期待您的关注和认可&#xff0c;陪您一起学习打卡&#xff01;&#xff01;&#xff01;&#x1f618;&#x1f618;&#x1f618; &#x1f917;专栏&#xff1a;算法学习 &am…