高级自定义标记功能

在这里插入图片描述

在这里插入图片描述

高级自定义标记功能


自定义标记时用户定义的标记,它可通过创建可重用的组件来尽量较少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.mfbz.cn/a/384245.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

matlab发送串口数据,并进行串口数据头的添加,我们来看下pwm解析后并通过串口输出的效果

uintt16位的话会在上面前面加上00&#xff0c;16位的话一定是两个字节&#xff0c;一共16位的数据 如果是unint8的话就不会&#xff0c; 注意这里给的是13&#xff0c;但是现实的00 0D&#xff0c;这是大小端的问题&#xff0c;在matlanb里设置&#xff0c;我们就默认用这个模式…

面了滴滴的数据分析师(实习),几道面试题都是原题啊。。。

年前&#xff0c;技术群组织了一场数据类的技术&面试讨论会&#xff0c;邀请了一些同学分享他们的面试经历&#xff0c;讨论会会定期召开&#xff0c;如果你想加入我们的讨论群或者希望要更详细的资料&#xff0c;文末加入。 喜欢本文记得收藏、关注、点赞 。技术交流文末…

Unity类银河恶魔城学习记录7-2 P68 Setting up details of sword源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Sword_Skill.cs using System.Collections; using System.Collections.Gen…

【数据结构】14 队列(带头结点的链式存储和顺序存储实现)

定义 队列是一个有序线性表&#xff0c;但是队列的插入、删除操作是分别在线性表的两个不同端点进行的。 设一个队列 Q ( a 1 , a 2 , . . . , a n ) Q (a_1, a_2,...,a_n) Q(a1​,a2​,...,an​)&#xff0c;那么 a 1 a_1 a1​被称为队头元素&#xff0c; a n a_n an​为队…

【实战】一、Jest 前端自动化测试框架基础入门 —— 前端要学的测试课 从Jest入门到TDD BDD双实战(一)

文章目录 一、前端要学的测试课1.前端要学的测试2.前端工程化的一部分3.前端自动化测试的例子4.前端为什么需要自动化测试&#xff1f;5.课程涵盖内容6.前置技能7.学习收获 二、Jest 前端自动化测试框架基础入门1. 自动化测试背景及原理前端自动化测试产生的背景及原理 2.前端自…

Javaweb之SpringBootWeb案例之事务进阶的详细解析

1.3 事务进阶 前面我们通过spring事务管理注解Transactional已经控制了业务层方法的事务。接下来我们要来详细的介绍一下Transactional事务管理注解的使用细节。我们这里主要介绍Transactional注解当中的两个常见的属性&#xff1a; 异常回滚的属性&#xff1a;rollbackFor 事…

springboot179基于javaweb的流浪宠物管理系统的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

【C++】STL之string 超详解

目录 1.string概述 2.string使用 1.构造初始化 2.成员函数 1.迭代器 2.容量操作 1.size和length 返回字符串长度 2.resize 调整字符串大小 3.capacity 获得字符串容量 4.reserve 调整容量 5.clear 清除 6.empty 判空 3.string插入、追加 、拼接 1.运算…

【MySQL】MySQL函数学习和总结

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-Ny0xnYjfHqF7s3aS {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

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

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

招商证券流年不利:屡因保荐失职“连坐”,各业务分部收入下滑

近日&#xff0c;安徽证监局发布公告称&#xff0c;招商证券股份有限公司&#xff08;下称“招商证券”&#xff09;“15城六局”债券的受托管理方面存在未督导发行人做好募集资金管理、未持续跟踪和监督发行人履行有关信披临时报告义务等情形。 根据《公司债券发行与交易管理…

Java中的IO介绍

本章内容 一 、File概念 File可以代表一个目录或者一个文件&#xff0c;并不能代表文件的内容 文件和流的区别&#xff1a;File关注的是文件本身的特征&#xff0c;如名称、路径、修改时间、大小。 流关注的是文件的内容。 二、File基本的操作 常见构造方法 | File(String p…

nginx2

mkdir /usr/local/develop cd /usr/local/develop 下载 wget http://nginx.org/download/nginx-1.17.4.tar.gz yum install git git clone https://github.com/arut/nginx-rtmp-module.git 解压文件 tar zxmf nginx-1.17.4.tar.gz 进入解压目录 cd nginx-1.17.4/ 安装编译…

EMC学习笔记(二十六)降低EMI的PCB设计指南(六)

降低EMI的PCB设计指南&#xff08;六&#xff09; 1.PCB布局1.1 带键盘和显示器的前置面板PCB在汽车和消费类应用中的应用1.2 敏感元器件的布局1.3 自动布线器 2.屏蔽2.1 工作原理2.2 屏蔽接地2.3 电缆屏蔽至旁路2.4 缝隙天线&#xff1a;冷却槽和缝隙 tips&#xff1a;资料主要…

蓝桥杯嵌入式第六届真题(完成)STM32G431

蓝桥杯嵌入式第六届真题&#xff08;完成&#xff09;STM32G431 题目部分 相关文件 main.c /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program b…

windows11 MSYS2下载安装教程

MSYS2 可以理解为在windows平台上模拟linux编程环境的开源工具集 当前环境&#xff1a;windows11 1. 下载 官网地址可下载最新版本&#xff0c;需要科学上网 https://www.msys2.org/ 2. 安装 按照正常安装软件流程一路next就可以 打开 3. 配置环境 网上很多教程提到需…

基于multiprocessing.pool的多进程池与单进程访问多网页的比较示例

一、示例代码&#xff1a; from multiprocessing import Pool import time import requestsurls [ # URL队列&#xff0c;通过多进程访问http://www.python.org,http://www.python.org/about/,http://www.python.org/doc/,http…

【JavaEE】_CSS选择器

目录 1. 基本语法格式 2. 引入方式 2.1 内部样式 2.2 内联样式 2.3 外部样式 3. 基础选择器 3.1 标签选择器 3.2 类选择器 3.3 ID选择器 4. 复合选择器 4.1 后代选择器 4.2 子选择器 4.3 并集选择器 4.4 伪类选择器 1. 基本语法格式 选择器若干属性声明 2. 引入…

模拟串口LV2,解决硬件串口资源不足问题!!!!

模拟串口通信 2.0 版本&#xff01;&#xff01; 我在前面的文章里面有写了 虚拟串口通信&#xff0c;虽然说能用&#xff0c;但是用过的小伙伴都说 “好!” 优缺点: 先说一点&#xff0c;2.0版本并不适用于同硬件串口的所有场合&#xff0c;仅仅针对自己开发的电子垃圾的主…

Python - 面向对象编程 - 类变量、实例变量/类属性、实例属性

什么是对象和类 什么是 Python 类、类对象、实例对象 类变量、实例变量/类属性、实例属性 前言 只是叫法不一样 实例属性 实例变量 类属性 类变量 个人认为叫属性更恰当 类属性和实例属性区别 类属性&#xff0c;所有实例对象共享该属性实例属性&#xff0c;属于某一…
最新文章