J2EEJSP自定义标签库01out标签if标签

目录

一.什么是标签

二.JSP自定义标签库

2.1 JSP标签库是什么

2.2 处理流程

2.3 如何自定义标签 

2.4 标签类型

三.开发示例

3.1  out标签

1.创建助手类

2.编写tld(标签库的描述)文件,(必须放在WEB-INF目录或其目录下)

3.在页面使用

4.将项目部署运行,即可可到效果

3.2 if标签

1.创建助手类

2.编写tld(标签库的描述)文件,(必须放在WEB-INF目录或其目录下)

3.在页面使用


一.什么是标签

标记语言,是一种注释文本的语言,以便于计算机可以操作。很多与“ML”结尾的语言都是标记语言,比如:HTML,XML,XHTML,VML等等。
标记语言与其他语言一样,也需要运行它们的环境,比如HTML的运行环境时浏览器,XML也要自己的解析和运行的环境。

基本结构:
<开始标签>标签体</结束标签>

空标签:
<开始标签 属性名="属性值"/></结束标签>
<br/><br/>
<开始标签 属性名="属性值"/>

二.JSP自定义标签库

2.1 JSP标签库是什么

是一个JSP标签集合,它封装了JSP应用的通用核心功能, 基于JSP标签我们可以理解为,是JSP应该通用功能的一种封装方式

2.2 处理流程

2.3 如何自定义标签 

常见自定义标签主要步骤:

  • 编写助手类
  • 编写标签库描述文件(tld)
  • 在页面上引入标签使用

2.4 标签类型

  1. UI标签, 输出页面元素
  2. 控制标签, 如if标签,foreach标签等
  3. 数据标签,用于向页面输入数据

三.开发示例

3.1  out标签

1.创建助手类

public class OutTag extends BodyTagSupport {private String val;public String getVal() {return val;}public void setVal(String val) {this.val = val;}// 默认值private String defaultVal;public String getDefaultVal() {return defaultVal;}public void setDefaultVal(String defaultVal) {this.defaultVal = defaultVal;}@Overridepublic int doStartTag() {//pageContext为页面上下文对象,用于和jsp共享数据JspWriter out = this.pageContext.getOut();try {if (this.val == null || "".equals(this.getVal())) {//利用JspWrite对象将val输出到页面out.print(this.getDefaultVal());}else {//利用JspWrite对象将val输出到页面out.print(this.val);}} catch (IOException e) {e.printStackTrace();}return SKIP_BODY;}}

2.编写tld(标签库的描述)文件,(必须放在WEB-INF目录或其目录下)

<!DOCTYPE taglibPUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN""http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<!-- 标签库描述符 -->
<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor"><tlib-version>1.0</tlib-version><jsp-version>1.2</jsp-version><short-name>Simple Tags</short-name><uri>/zking</uri><tag><!-- 标签名 --><name>out</name><!-- 标签助手类 --><tag-class>com.zking.tagdemo.tag</tag-class><!-- 标签的内容类型:empty表示空标签,jsp表示可以为任何合法的JSP元素 --><body-content>empty</body-content><attribute><!-- 属性名, OutTag类中的val属性相匹配 --><name>val</name><!-- 表示该属性为必要的属性 --><required>true</required><!-- 该属性可以接受EL表示式的值 --><rtexprvalue>true</rtexprvalue><!-- 标签描述,用于说明标签的作用 --><description>out标签val属性,用于输出val的值</description></attribute><attribute><!-- 属性名, OutTag类中的val属性相匹配 --><name>defaultVal</name><!-- 表示该属性为必要的属性 --><required>false</required><!-- 该属性可以接受EL表示式的值 --><rtexprvalue>false</rtexprvalue><!-- 标签描述,用于说明标签的作用 --><description>out标签defaultVal属性,用于输出defaultVal的值</description></attribute></tag></taglib>

3.在页面使用

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglib prefix="z" uri="/zking" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><z:out val="abc"/>
</body>
</html>

4.将项目部署运行,即可可到效果

3.2 if标签

1.创建助手类

public class IfTag extends BodyTagSupport{private boolean test = false;public boolean isTest() {return test;}public void setTest(boolean test) {this.test = test;}@Overridepublic int doStartTag() {if(this.test) {return EVAL_BODY_INCLUDE;}return SKIP_BODY;}
}

2.编写tld(标签库的描述)文件,(必须放在WEB-INF目录或其目录下)

<!DOCTYPE taglibPUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN""http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<!-- 标签库描述符 -->
<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor"><tlib-version>1.0</tlib-version><jsp-version>1.2</jsp-version><short-name>Simple Tags</short-name><uri>/zking</uri><tag><!-- 标签名 --><name>if</name><!-- 标签助手类 --><tag-class>com.zking.tagdemo.tag.IfTag</tag-class><!-- 标签的内容类型:empty表示空标签,jsp表示可以为任何合法的JSP元素 --><body-content>jsp</body-content><attribute><!-- 属性名, OutTag类中的val属性相匹配 --><name>test</name><!-- 表示该属性为必要的属性 --><required>true</required><!-- 该属性可以接受EL表示式的值 --><rtexprvalue>true</rtexprvalue><!-- 标签描述,用于说明标签的作用 --><description>out标签test属性,用于输出test的值</description></attribute></tag></taglib>

3.在页面使用

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglib prefix="z" uri="/zking" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><z:if test="${100==100 }">测试if(100 == 100)</z:if></body>
</html>

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

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

相关文章

Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么

目录 Chat GPT是什么 初学者怎么使用Chat GPT 使用Chat GPT需要注意什么 一些简单的prompt示例 Chat GPT是什么 Chat GPT是由OpenAI开发的一种大型语言模型&#xff0c;它基于GPT&#xff08;Generative Pre-trained Transformer&#xff09;架构。GPT是一种基于深度学习的…

【ArcGIS Pro二次开发】(47):要素类追加至空库(批量)

本工具主要是针对国空数据入库而做的。 如果你手头已经整理了一部分要素类数据&#xff0c;但是数据格式&#xff0c;字段值可能并没有完全按照规范设置好&#xff0c;需要将这些数据按规范批量和库&#xff0c;就可以尝试用这个工具。 准备数据&#xff1a;标准空库、你已做…

mongodb,redis,mysql 区别

一、MySQL 关系型数据库。 在不同的引擎上有不同 的存储方式。 查询语句是使用传统的sql语句&#xff0c;拥有较为成熟的体系&#xff0c;成熟度很高。 开源数据库的份额在不断增加&#xff0c;mysql的份额页在持续增长。 缺点就是在海量数据处理的时候效率会显著变慢。 二、Mo…

Java8之Stream流

目录 简介 特点 Stream操作步骤 创建 中间操作 筛选与切片 filter(Predicate p) distinct() limit(long maxSize) skip(long n) 映射 map(Function f) flatMap(Function f) 排序 自然排序 定制排序 终止操作 匹配与查找 归约 收集 好处 不足 简介 在编写…

postgresql 内核源码分析 表锁relation lock的使用,session lock会话锁的应用场景,操作表不再困难

​专栏内容&#xff1a; postgresql内核源码分析 手写数据库toadb 并发编程 个人主页&#xff1a;我的主页 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. 表锁介绍 当表打开&#xff0c;或者操作表时&#xff0c;都需要…

应用案例|探索高精度3D机器视觉在车间滑橇检测与测量中的应用

Part.1 应用行业 随着科技的不断进步&#xff0c;3D机器视觉技术逐渐成为了现实世界与数字世界之间的桥梁。3D机器视觉技术能使计算机感知和理解三维空间重的物体和场景&#xff0c;被广泛应用于机器人引导、工业检测等行业&#xff0c;例如&#xff1a;物流、电商、教育、医疗…

知识图谱推理的学习逻辑规则(上)

知识图谱推理的学习逻辑规则 摘要介绍相关工作模型知识图谱推理逻辑规则概率形式化参数化优化 实验实验设置实验结果 结论 原文&#xff1a; 摘要 本文研究了在知识图谱上进行推理的学习逻辑规则。 逻辑规则用于预测时提供了可解释性并且可以推广到其他任务中&#xff0c;因…

【Ceph集群应用】Ceph块存储之RBD接口详解

Ceph块存储之RBD接口详解 1.创建Ceph块存储系统RBD接口1.1 删除镜像1.2 还原镜像1.3 在线扩容1.4 回滚镜像到指定位置1.5 删除快照1.6 快照分层1.7 快照展平1.8 镜像的导出导入 接上文基于ceph-deploy部署Ceph集群详解 1.创建Ceph块存储系统RBD接口 &#xff08;1&#xff09;…

Godot实用代码-存取存档的程序设计

1. Settings.gd 全局变量 用于保存玩家设置 对应Settings.json 2. Data.gd 全局变量 用于保存玩具数据 对应Data.json 实践逻辑指南 1.在游戏开始的时候&#xff08;游戏场景入口的_ready()处&#xff0c; Settings.gd

【源码解析】Mybatis执行原理

Mybatis执行原理 1.获取SqlSessionFactory2.创建SqlSession3.创建Mapper、执行SQL MyBatis 是一款优秀的持久层框架&#xff0c;MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息&#xff0c;将接口和…

密码学学习笔记(十二):压缩函数 - Davies–Meyer结构

密码学中压缩函数是指将输入的任意长度消息压缩为固定长度输出的函数。压缩函数以两个特定长度的数据为输入&#xff0c;产生与其中一个输入大小相同的输出。简单来说就是它接受一些较长的数据&#xff0c;输出更短的数据。 压缩函数接收长度为X和Y的两个不同输入&#xff0c;并…

输入 jar cvf 后指令提示‘jar‘ 不是内部或外部命令,也不是可运行的程序

输入 jar cvf 后指令提示jar 不是内部或外部命令&#xff0c;也不是可运行的程序 一堆说jdk系统环境配置的文章&#xff0c;我都看哭了&#xff0c;还好有这位老兄拯救了我&#xff01;&#xff01;&#xff01;献上地址 https://www.cnblogs.com/wadezhou/p/16647474.html 我输…