高级自定义标记功能

在这里插入图片描述

在这里插入图片描述

高级自定义标记功能


自定义标记时用户定义的标记,它可通过创建可重用的组件来尽量较少JSP中复杂、重复的业务逻辑代码。这些组件可用于其他应用程序。Javax.servlet.jsp.tagtext包定义了开发自定义标记的类和接口。您可以使用此包的类和接口创建标记处理程序,这些程序可实现带属性的自定义标记、带主体的自定义标记、嵌套自定义标记。


在这里插入图片描述

1. 自定义标记API

自定义标记API有javax.servlet.jasp.tagtext包的类和接口组成,它们用于创建自定义标记。这些类和接口可在自定义标记和其运行时环境之间进行通信。javax.servlet.jsp.tagtext包中定义的接口有:

  1. Tag:定义在标记的生命周期中由JSP实现类调用的方法。标记处理程序实现这些方法以执行自定义操作。Tag接口中定义的方法由doEndTag()、doStartTag()、release()、setPageContext()、setParent()、getParent()。
  2. InterationTag():扩展了Tag接口,除Tag接口中定义的方法外,还定义了doAfterBody()方法。此方法可重新计算自定义标记的主体内容。
  3. BodyTag:扩展了InterationTag接口,定义了可让标记处理程序操作自定义标记主体内容的方法。此接口定义了doInitBody()和setBodyContent()方法。doInitBody()方法可让标记处理程序准备用于计算的标记。setBodyContent()方法可让标记处理程序操作标记的主体内容。

下表描述了javax.servlet.jsp.tagtext包的各种类:

描述
BodyContent是JSPWriter类的子类,表示标记的主体内容。
TagSupport作为标记处理程序的基类并实现空标记。
BodyTagSupport实现jBodyTag接口。此类用于开发带主体的自定义标记。
TagData表示属性及其值。
TagInfo表示TLD文件的元素中指定的信息。JSP将JSP页面转换为servlet时使用此类。
TagLibraryInfo表示TLD文件的信息,例如它定义的标记和版本信息。
TagVariableInfo表示自定义标记的变量的相关信息。

下表描述了可在标记处理程序中实现的各种方法:

方法描述
public int doStartTag( )是由Tag接口定义的。当遇到自定义标记的开始标记时调用此方法。doStartTag() 方法返回SKIP_BODY值指定跳过主体内容的处理。此方法还返回EVAL_BODY_INCLUDE值指定应处理标记的主体内容。
public void release( )是由Tag接口定义的。调用此方法可让标记处理程序释放其部分资源。
doAfterBody( )是由BodyTagSupport类实现的。计算主体标记后调用此方法。doStartTag() 方法返回EVAL_BODY_AGAIN值指定应重新计算主体内容。doStartTag()方法返回SKIP_BODY值指定跳过主体内容的计算。
public int doEndTag( )是由Tag接口定义的。当遇到自定义标记的结束标记时调用此方法。doEndTag()方法返回EVAL_PAGE值处理剩余的JSP页面或返回SKIP_PAGE值以跳过剩余页面的处理。

javax.servlet.jsp包包含PageContent类,该类表示JSP页面并将JSP页面的信息提供给标记处理程序。PageContent类定义可在标记处理程序中调用来访问JSP页面各种隐式对象的方法。下表描述了PageContext类的一些重要方法:

方法描述
public abstract JspWriter getOut( )返回JSP隐式对象out。
public abstract ServletRequest getRequest( )返回JSP隐式对象request。
public abstract ServletResponse getResponse( )返回JSP隐式对象response。
public abstract HttpSession getSession( )返回JSP隐式对象session。
public abstract Exception getExcepiton( )返回JSP隐式对象exception。
public abstract ServletContext getServletContext( )返回JSP隐式对象application。
public abstract ServletConfig getServletConfig( )返回JSP隐式对象config。
public abstract Object getPage( )返回JSP隐式对象page。

在这里插入图片描述

2. 页面中的自定义标记

根据应用程序的需要,您可开发不同类型的自定义标记并将其包含在JSP页面中。自定义标记的各种类型有:

  1. 带属性的自定义标记
  2. 带主体的自定义标记
  3. 嵌套自定义标记

带属性的自定义标记

自定义标记可包含各种属性。您可使用各种属性定制自定义标记执行的功能。每个自定义属性(attribute)需定义一个属性(property)。您可以使用getXXX()和setXXX()方法访问和设置标记处理程序类的属性。例如,以下代码段显示了带有属性copyright的自定义标记,该属性的值为books:
<cpyrt

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

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

相关文章

【机器学习】卷积和反向传播

一、说明 自从 AlexNet 在 2012 年赢得 ImageNet 竞赛以来&#xff0c;卷积神经网络 (CNN) 就变得无处不在。从不起眼的 LeNet 到 ResNets 再到 DenseNets&#xff0c;CNN 无处不在。 您是否想知道 CNN 的反向传播中会发生什么&#xff0c;特别是反向传播在 CNN 中的工作原理。…

黄金交易策略(Nerve Nnife.mql4):趋势做单

完整EA&#xff1a;Nerve Knife.ex4黄金交易策略_黄金趋势ea-CSDN博客 当大小趋势相同行情走向也相同&#xff0c;就会开仓做顺势单&#xff0c;并会顺势追单&#xff0c;以达到快速止盈平仓的效果。大趋势追求稳定&#xff0c;小趋势追求敏捷&#xff0c;行情走向比小趋势更敏…

关于PLC数据采集上报,系统平台对接、设备数据转发

设备数据采集上报与系统平台对接 相关案例 PLC与SQLServer&#xff0c;MySQL&#xff0c;PostgreSQL&#xff0c;Oracle数据库双向通讯&#xff1b;HTTP协议GET/POST/PUT请求上报&#xff0c;解析返回数据&#xff1b;MQTT协议JSON/XML文件格式发布/订阅&#xff1b;无需…

Java图形化界面编程——弹球游戏 笔记

Java也可用于开发一些动画。所谓动画&#xff0c;就是间隔一定的时间(通常小于0 . 1秒 )重新绘制新的图像&#xff0c;两次绘制的图像之间差异较小&#xff0c;肉眼看起来就成了所谓的动画 。 ​ 为了实现间隔一定的时间就重新调用组件的 repaint()方法&#xff0c;可以借助于…

【Django】Django日志管理

Django日志管理 Django使用Python内置的logging模块处理系统日志。 1.日志框架的组成元素 Python logging 配置由下面四部分组成&#xff1a; Loggers Handlers 过滤器 Formatters 1.1 Loggers logger是日志系统的入口&#xff0c;每个 logger都是命名了的 bucket&…

一句话总结Docker与K8S的关系

一句话总结&#xff1a;Docker只是容器的一种&#xff0c;它面向的是单体&#xff0c;K8S可以管理多种容器&#xff0c;它面向的是集群&#xff0c;Docker可以作为一种容器方案被K8S管理。下文继续具体介绍。 1、容器的核心概念 介绍这几个核心概念&#xff1a;OCI、CR、Runc、…

properties

作用&#xff1a;可以操作配置文件&#xff1b;配置文件的好处&#xff1a; 可以把软件的设置永久化存储如果我们要修改参数&#xff0c;不需要改动代码&#xff0c;直接修改配置文件就可以了 常见的配置文件&#xff1a;XmL 、ini、 properties、YAML 操作后缀properties配置…

C++ Qt框架开发| 基于Qt框架开发实时成绩显示排序系统(1)

目标&#xff1a;旨在开发一个用户友好的软件工具&#xff0c;用于协助用户基于输入对象的成绩数据进行排序。该工具的特色在于&#xff0c;新输入的数据将以红色高亮显示&#xff0c;从而直观地展现出排序过程中数据变化的每一个步骤。 结果展示&#xff1a; 本程序是一个基于…

vue-生命周期+工程化开发(三)

生命周期 Vue 生命周期 和 生命周期的四个阶段 思考&#xff1a; 什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09;什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a;一个Vue实例从 创建…

C#入门及进阶|数组和集合(六):集合概述

1.集合概述 数组是一组具有相同名称和类型的变量集合&#xff0c;但是数组初始化后就不便于再改变其大小&#xff0c;不能实现在程序中动态添加和删除数组元素&#xff0c;使数组的使用具有很多局限性。集合能解决数组存在的这个问题&#xff0c;下面我们来学习介绍集合…

【DDD】学习笔记-精炼领域分析模型

通过统一语言与“名词动词法”可以迫使团队研究问题域的词汇表&#xff0c;简单而快速地帮助我们获得初步的分析模型。但是这种方法获得的模型品质&#xff0c;受限于语言描述的写作技巧&#xff0c;统一语言的描述更多体现在是对现实世界的模型描述&#xff0c;缺乏深入精准的…

2013-2022年上市公司迪博内部控制指数、内部控制分项指数数据

2013-2022年上市公司迪博内部控制指数、分项指数数据 1、时间&#xff1a;2013-2022年 2、范围&#xff1a;上市公司 3、指标&#xff1a;证券代码、证券简称、辖区、证监会行业、申万行业、内部控制指数、战略层级指数、经营层级指数、报告可靠指数、合法合规指数、资产安全…