开发JSP自定义标记

在这里插入图片描述

在这里插入图片描述

开发JSP自定义标记

您已经学习了如何用JavaBean处理JSP页面的业务逻辑。除此以外,您还可以用自定义标记处理JSP应用程序中反复出现的业务逻辑要求。

tag是程序中使用的执行重复性任务的可重用单元。例如,

是使主体文本在网页中间出现的HTML标记。JSP可用于创建于XML标记类似地自定义标记,以便在JSP应用程序中避免重复性任务。例如,您可以创建欢迎标记来显示欢迎消息。应用程序中所有使用了上述标记的JSP页面都会显示此消息。自定义标记在标记库中封装。您可以在JSP页面中包括此标记库来使用标记库的自定义标记。


在这里插入图片描述

1. JSP自定义标记

自定义标记为Web程序提供了一种在JSP应用程序中重用和封装反复出现的复杂代码的机制,从而实现了Java代码的易用性和可重用性。自定义标记可用于执行各种功能,例如:

  1. 访问JSP页面的request、response、in和out等所有隐式变量。
  2. 修改通过调用JSP页面生成的响应。
  3. 将JavaBean组件初始化和实例化。

您可以在JSP中开发以下各种类型的自定义标记:

  1. 空标记:指没有任何属性或主体的自定义标记。以下代码段显示了空自定义标记:
    td:welcome
  2. 带属性的标记:值可以定义属性来对标记行为进行自定义的自定义标记。可以通过字符变量或带有request对象的运行时表达式来设置属性值。以下代码段显示了带属性的自定义标记color:
    <td:welcome color =''bule"></td:welcome>
  3. 带主体的标记:指带有嵌套自定义标记、脚本元素、动作、HTML文本及JSP指令的自定义标记。以下代码段显示了一个带有JSP脚本元素作为主体的自定义标记。
    td:welcome
    <%=today_date%>
    </td:welcome>
  4. 嵌套标记:指一个自定义标记包含一个或多个自定义标记的自定义标记集。包含其他标记的标记称为父标记。被父标记包含的标记称为子标记。以下代码段显示了嵌套标记:
    <td1:ifTag condition “<%=eval>”>
    td2:valueTrue
    The expression evaluates to true
    td2:valueTrue
    td1:ifTag

在这里插入图片描述

2. 创建自定义标记

要创建自定义标记,需要执行以下步骤:

  1. 开发标记处理程序。
  2. 开发TLD文件。
  3. 将标记库纳入JSP页面。
  4. 部署应用程序。

开发标记处理程序

所有自定义标记都有对应的标记处理程序,即实现自定义标记的功能的Java类。
javax.servlet.jsp.tagext包提供了可用于开发标记处理程序的类和接口。
javax.servlet.jsp.tagext包的基类,如TagSupport和BodyTagSupport,实现Tag接口来提供接口方法的实现。您可以在标记处理程序类中的扩展这些辅助类并重写实现标记功能所要求的方法。

要开发空标记处理程序,您可以在标记处理程序中扩展javax.servlet.jsp.tagext包的TagSupport类。

以下代码段显示了扩展TagSupport类以实现自定义标记的标记处理程序WelcomeTag。

		import javax.servlet.http

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

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

相关文章

(c语言版)数组去重和排序 题目描述: 给定一个乱序的数组,删除所有的重复元素,使得每个元素只出现一次,并且按照出现的次数从高到低

【编程题目 | 100分】数组去重和排序 [ 100 / 中等 ] 数组去重和排序 题目描述&#xff1a; 给定一个乱序的数组&#xff0c;删除所有的重复元素&#xff0c;使得每个元素只出现一次&#xff0c;并且按照出现的次数从高到低进行排序&#xff0c;相同出现次数按照第一次出现顺序…

R语言【utlis】——alarm():提示音或提示符

Package utils version 4.2.0 Description 给用户一个声音或视觉信号。 Usage alarm() Details alarm()通过向控制台发送一个“\a”字符来工作。在大多数平台上&#xff0c;这将向用户发出铃声、嘟嘟声或其他信号(除非重定向了标准输出)。 它尝试刷新控制台(请参阅flush.co…

极限的唯一性推导

定义推导 根据函数的 y f ( x ) yf(x) yf(x)的定义,x∈集合A,y∈集合B,集合A对应B的关系是单射即一个x只能对应一个y。固 lim ⁡ x − > ∗ f ( x ) A \lim\limits_{x->*}f(x)A x−>∗lim​f(x)A存在,那么其极限必定唯一 反证法 函数 f ( x ) 存在极限 lim ⁡ x −…

【Rust】——猜数游戏

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

【数据结构与算法】【小白也能学的数据结构与算法】递归 分治 迭代 动态规划 无从下手?一文通!!!

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《数据结构与算法&#xff1a;初学者入门指南》&#x1f4d8;&am…

例37:爱好选择

建立一个新的EXE工程&#xff0c;放两个单选&#xff0c;两个复选框如图33。 图33 输入代码&#xff1a; Sub Form1_Check1_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)Text1.Text ""If Check1.Value ThenText1.Text"你喜欢" & Check1.Cap…

Linux运行级别 | 管理Linux服务

Linux运行级别 级别&#xff1a; 0关机1单用户2多用户但是不运行nfs网路文件系统3默认的运行级别&#xff0c;给一个黑的屏幕&#xff0c;只能敲命令4未使用5默认的运行级别&#xff0c;图形界面6重启切换运行级别&#xff1a; init x管理Linux服务 systemctl命令&#xf…

鸿蒙实战开发-全局UI方法的功能

主要开发内容 时间调节 使用全局UI的方法定义日期滑动选择器弹窗并弹出。 操作说明&#xff1a;首先创建一个包含按钮的用户界面&#xff0c;当用户点击“时间设置”按钮时&#xff0c;会弹出调用TimePickerDialog组件的show方法&#xff0c;显示一个时间选择对话框&#xff…

[word] word表格内容自动编号 #经验分享#微信#其他

word表格内容自动编号 在表格中的内容怎么样自动编号&#xff1f;我们都知道Word表格和Excel表格有所不同&#xff0c;Excel表格可以轻松自动编号&#xff0c;那么在Word表格中如何自动编号呢&#xff1f; 1、选中内容后&#xff0c;点击段落-自动编号&#xff0c;选择其中一…

vscode远程连接失败

目录 解决方案尝试1解决方案尝试2 解决方案尝试1 最近通过vscode一直使用腾讯云的服务器作为远程开发环境&#xff0c;以前一直很好用。 直到最近重装了系统之后&#xff0c;发现vscode没法对云服务器进行连接了&#xff0c;即使在远程主机添加了本地的公钥也不行。直接报错:…

ChatGpt报错:We ran into an issue while authenticating you解决办法

在登录ChatGpt时报错&#xff1a;Oops&#xff01;,We ran into an issue while authenticating you.(我们在验证您时遇到问题)&#xff0c;记录一下解决过程。 完整报错&#xff1a; We ran into an issue while authenticating you. If this issue persists, please contact…

LeetCode 第384场周赛个人题解

目录 100230. 修改矩阵 题目链接 题目描述 接口描述 思路分析 代码详解 100186. 匹配模式数组的子数组数目 I 题目链接 题目描述 接口描述 思路分析 代码详解 100219. 回文字符串的最大数量 题目链接 题目描述 接口描述 思路分析 代码详解 100198. 匹配模式数…

qt-C++笔记之判断一个QLabel上有没有load图片

qt-C笔记之判断一个QLabel上有没有load图片 code review! 在Qt框架中&#xff0c;QLabel是用来显示文本或者图片的一个控件。如果你想判断一个QLabel控件上是否加载了图片&#xff0c;你可以检查它的pixmap属性。pixmap属性会返回一个QPixmap对象&#xff0c;如果没有图片被加…

error: object ‘FastMNNIntegration‘ not found

加载一个包即可 library(SeuratWrappers) #运行fastmnn之前&#xff0c;需要加载&#xff0c;否则报错 obj <- IntegrateLayers(object obj, method FastMNNIntegration,new.reduction "integrated.mnn",verbose FALSE )

C#系列-使用 Minio 做图片服务器实现图片上传 和下载(13)

1、Minio 服务器下载和安装 要在本地安装和运行 MinIO 服务器&#xff0c;你可以按照以下 步骤进行操作&#xff1a; 1. 访问 MinIO 的官方网站&#xff1a;https://min.io/&#xff0c;然后 点击页面上的”Download”按钮。 2. 在下载页面上&#xff0c;选择适合你操作系统的 …

什么是ZWDFS ?

1. 什么是ZWDFS? ZWDFS是ZeroWait DFS的缩写 &#xff0c;它的用途在于可以自动扫描并切换到最佳信道&#xff0c;避开WIFI拥挤的信道以及带来环境的信号干扰。 2. Maxlinear WAV600 ZWDFS详细说明. 5 GHz Wi-Fi 频谱包括动态频率选择 (DFS) 和非 DFS 信道。监管领域要求 D…

Docker 有哪些常见的用途?

Docker 是一种容器化技术&#xff0c;它允许应用程序在不同的环境之间具有一致的运行环境。这使得 Docker 在开发和运维领域中非常受欢迎&#xff0c;因为它简化了应用程序的部署和管理。以下是 Docker 的一些常见用途&#xff1a; 快速部署应用程序 Docker 允许开发人员和运…

Python for 循环

Python 中的 for 循环 Python 中的 for 循环是一个迭代函数。如果你有一个类似列表的序列对象&#xff0c;你可以使用 for 循环来迭代列表中包含的项目。 for 循环的功能与其他多个编程语言中看到的功能并没有太大的不同。 在本文中&#xff0c;我们将详细探讨 Python 中的 …

django中如何使用mysql连接池

一&#xff1a;介绍 在Django中使用MySQL时&#xff0c;通常情况下&#xff0c;Django的数据库层会为你管理数据库连接。Django的数据库接口是线程安全的&#xff0c;这意味着它会自动为每个线程创建和管理数据库连接。在大多数情况下&#xff0c;你不需要手动创建线程池来管理…

用数学思维去理解时间复杂度的计算

视频讲解过程 一.关于时间复杂度的数学理解 设要处理的数据总量为x,x足够大&#xff0c;为了某个目的&#xff1a;排序、查询、删除、添加之类&#xff0c;需要消耗的计算次数是y。则x和y存在以下关系&#xff1a; y ax b;(a是系数&#xff0c;b是常数) -------------------…