JSP2自定义标签(一)——简单标签

JSP2自定义标签库技术 1、概述:     JSP本质其实仍然是Servlet,部署JSP后,服务器会将其自动转化成Servlet进行运行。用JSP取代Servlet的原因是利用Servlet实现用户界面比较繁琐,将大量的静态HTML代码穿插于Java代码中增加了代码维护工作的难度,并且也不利于前端开发人员和美工人员参与项目开发。     JSP 2 标准为开发者提供了自定义标签库的功能。使用自定义标签库的目的跟使用 阅读详情

 本文摘自:李刚 著 《轻量级 Java EE企业应用实战 Struts2+Spring+hibernate整合开发》

 

 

        在JSP规范的1.1版中增加自定义标签库规范,自定义标签库是一种非常优秀的表现层组件技术。通过使用自定义标签库,可以在简单的标签中封装复杂的功能。

为什么要使用自定义标签呢?主要是为了取代丑陋的JSP脚本。在HTML页面中插入JSP脚本有如下几个坏处:

        (1)JSP脚本非常丑陋,难以阅读;

        (2)JSP脚本和HTML代码混杂,维护成本高。

        (3)HTML页面中嵌入JSP脚本,导致美工人员难以参与开发。

        处于以上考虑,我们需要一种在页面中使用的标签,这种标签要具有和HTML标签类似的语法,但可以完成JSP 脚本的功能——这种标签就是JSP自定义标签。

在JSP1.1规范中开发自定义标签库比较复杂,JSP2简化了标签库的开发,在JSP2中开发标签库只需如下几个步骤:

        (1)开发自定义标签处理类;

        (2)建立一个*.tld文件,每个*.tld文件对应一个标签库,每个标签库对应多个标签。

        (3)在JSP文件中使用自定义标签。

        提示:标签库是非常重要的技术,通常来说,初学者,普通开发人员自己开发标签库的机会很少,但如果希望成为高级程序员,或者希望自己开发通用框架,就需要大量开发自定义标签。所有的MVC框架,如Struts2、SpringMVC、JSF等都提供丰富的自定义标签。

 

一. 开发自定义标签类

 

        当我们在JSP页面使用一个简单的JSP标签时,底层实际上由标签处理类提供支持,从而可以使用简单的标签来实现复杂的功能,从而使团队更好地协作开发。

自定义标签都必须继承一个父类:javax.servlet.jsp.tagext.SimpleTagSupport,除此之外,自定义标签还有如下的要求:

        (1)如果以标签类包含属性,每个属性都有对应的getter和setter方法;

        (2)重写doTag方法,这个方法负责生成页面内容。

        下面开发一个最简单的自定义标签,该标签负责在页面上输出HelloWorld: 

package ppp;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;

public class HelloWorldTag extends SimpleTagSupport{
	//重写doTag()方法,该方法在标签结束时生成页面内容
	public void doTag() throws JspException,IOException{
		//获取页面输出流,并输出字符串
		getJspContext().getOut().write("Hello World");
	}
}

        上面的这个标签处理类非常简单,它继承了SimpleTagSupport父类,并重写了doTag()方法,而doTag()方法则负责输出页面的内容。该标签没有属性,所以无需提供Setter和Getter方法。

 

二. 建立TLD文件

 

        TLD是Tag Library Definition的缩写,即标签库定义,文件的后缀是tld,每个tld文件对应一个标签库,一个标签库中可以包含多个标签,tld文件也可以被称作标签库定义文件。

        标签库定义文件的根元素是taglib,它可以包含多个tag子元素,每个tag子元素都定义一个标签。通常我们都可以到web容器下复制一个标签库定义文件,并在此基础上进行修改即可。例如在tomcat6.0中,在webapps\examples\WEB-INF\JSP2路径下包含了一个jsp2-example-taglib.tld文件。这就是一个示范用的标签库定义文件。

        将该文件复制到web应用的WEB-INF\路径下,或者任意WEB-INF子路径下 ,并对该文件进行简单的修改,修改后的mytaglib.tld文件如下:

 

 

         上面标签库定义文件也是标准XML文件,该XML文件的根元素是taglib元素,因此我们编写标签库定义文件时都直接添加该元素即可。

taglib有2个字元素:

        (1)tlib-version:指定该标签库的事先版本,这是一个作为标识的内部版本号,对于程序没有太大的作用。

        (2)short-name:标签库的默认短名,该名称通常也没有太大的用处。

        (3)uri:这个属性通常非常重要,他指定了标签库的URI,相当于指定了标签库的唯一标识。JSP页面使用标签库时就是根据该名称来使用此标签库的。

除此之外,taglib元素下可以包含多个tag元素,每个tag元素定义一个标签,tag元素下至少要包含以下三个子元素:

        (1)name:该标签库的名称,这个属性很重要,JSP页面就是根据该名称来使用此标签的。

        (2)tag-class:指定标签的处理类,毋庸置疑,这个标签非常重要,他指定了标签有哪个Java类来处理。

        (3)body-content:这个属性也很重要,他指定了标签体的内容。该元素的值可以是以下这几个:

                            a.    tagdependent:指定标签处理类自己负责处理标签体。

                            b.    empty:指定该标签的标签体只能作为空标签来使用。

                            c.    scriptless:指定该标签的标签体可以是静态的HTML元素、表达式语言,但绝不允许是JSP脚本。

                            d.    JSP:指定该标签可以使用JSP脚本。

         注意:因为JSP2规范不再推荐使用JSP脚本,所以JSP2自定义标签的标签体中不能在包含JSP脚本。所以,实际上,body-content元素的值不可以是JSP脚本。

定义了以上标签库定义文件之后,将标签库文件放在Web应用的WEB-INF路径或任意子路径下,Java Web会自动加载该文件,则该文件定义的标签库也将生效。

 

三. 使用标签库

 

        JSP页面中确定指定的标签需要两点:

        (1)标签库URI:确定使用哪个标签库。

        (2)标签名:确定使用哪个标签。

        使用标签库分成以下两个步骤:

        (1)导入标签库:使用taglib编译指令导入标签库,就是将标签库和指定前缀关联起来。

        (2)使用标签:JSP页面中自定义标签。

         taglib的语法格式如下:

         <% @ taglib uri = "tagliburi" prefix = "tagprefix" %>

        其中uri属性确定标签库的URI,这个URI可以确定一个标签库。而prefix属性指定标签库的前缀,即所有使用该前缀的标签都由此标签库处理。

使用标签的语法格式如下:

 

  

 

 如该标签没有标签体,则可以使用如下的语法格式:

 

 

        上面的使用标签的语法里都包含了设置属性值,前面介绍的HelloWorldTag标签没有任何的属性,所以使用该标签只需要用<mytag:helloWorld/>即可。其中mytag是taglib指令为标签库指定的前缀,而helloWorld是标签名。

 

 

  

简单标签的开发 简单标签的开发 和 详细的代码说明 立即下载

相关推荐

HUAWEI华为荣耀MagicBook MateBook B D E X 13 14 16 笔记本MateStation台式机原装Win10出厂Windows11系统

HUAWEI华为MateBookX原装出厂系统恢复原厂系统,型号:MACHC-WAE9LP、EUL-W29P、MACHR-W19L、MACHR-W29、MACHD-WFE9、MRGF-16、MACHR-W19BL、MACHD-WFE9Q、WT-W19、Mach-W19、Mach-W29、WT-W09、WT-W19、MACH-W29等。HUAWEI华为MateBookE原装出厂系统恢复原厂系统,型号:PAK-AL09、GK-W7X、GK-G58、GK-W76、DRC-W76等。

QQ17855069的博客 17万+

自定义标签开发和使用步骤

我们在javaweb中常常会用到一些jsp的标签,比如c:foreachc:if等标签,但是sun公司提供的这些标签虽然能够满足我们大部分的应用需求,但是对于一些特殊应用需求就不能满足了,这时候我们就需要自定义一些我们自己的标签库移除jsp页面的java代码控制jsp页面某一部分内容是否执行(内容权限控制)控制整个jsp页面是否执行(页面权限控制)控制jsp页面内容(标签体)重复执行修改jsp页面的内容输出标签由三部分组成:标签体

2301_81912959的博客 1320

(一)DaVinci Developer AutoSAR工具 如何新建SWC、Component、RTE工程,超级详细步骤,赚到

​ 1,创建SWC,第一步需要创建一个App组件类型,首先点击Object Brower菜单,然后左键Application Component Types 选项,然后右键New Application Component Type,组件类型的作用是来后续实例一个Compoent 2、 Properties 选项卡中Nane中输入Type的名字,注意根据规范命名规则已CtAp开头,其他默认就好 ​

weixin_42602687的博客 3572

使用简单标签进行开发

简单标签执行的流程图     l  控制标签体的执行   1.标签处理器类 package com.jstl.simple.tag; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.JspFragment; import ja

vaecherisher的专栏 883

期权专题9:雪球期权(一)(BSM+蒙特卡罗定价)

python;雪球定价;蒙特卡罗

mhmh123789的博客 8100

ANSYS 2022R2 安装教程:系统准备、许可证配置与故障排查

ANSYS 是面向工程仿真的多物理场商业软件平台,其安装远非普通应用软件的图形化向导流程,而涉及操作系统版本、运行库精确版本、硬件虚拟化支持、许可证服务架构等系统级配置。理解 ANSYS License Manager 的服务机制与端口依赖、掌握 Visual C++ 和 .NET Framework 的启用逻辑,是保障 Fluent、Mechanical、HFSS 等求解器稳定调用的基础。该技术栈广泛应用于高校教学、航空航天结构分析、电子设备电磁兼容仿真等场景。本指南聚焦 ANSYS 2022R2 版本在

weixin_28559803的博客 595

(41)自定义标签库开发(简单标签的使用和带属性的标签)

11,11,09 自定义标签库开发(简单标签的使用和带属性的标签) 一、简单标签的应用: 1、  SimpleTag方法介绍: (1)setContext方法 用于把JSP页面的pageContext对象传递给标签处理器对象 (2)setParent方法        用于把父标签处理器对象传递给当前标签处理器对象 (3)getParent方法        用于获得当前标签的父

*~~~~~向日葵、的眼里只有【太阳】 549

10-142 6-4 查询厂商“D“生产的PC和便携式电脑的平均价格

分数 10全屏浏览题目切换布局作者 lhm单位 河北农业大学本题目要求编写SQL语句,查询厂商D生产的PC和便携式电脑的平均价格。

dqd66的博客 2748

JavaWeb实战开发

本课程详细讲解了以下内容:    1.jsp环境搭建及入门、虚拟路径和虚拟主机、JSP执行流程    2.使用Eclipse快速开发JSP、编码问题、JSP页面元素以及request对象、使用request对象实现注册示例    3.请求方式的编码问题、response、请求转发和重定向、cookie、session执行机制、session共享问题     4.session与cookie问题及application、cookie补充说明及四种范围对象作用域     5.JDBC原理及使用Statement访问数据库、使用JDBC切换数据库以及PreparedStatement的使用、Statement与PreparedStatement的区别     6.JDBC调用存储过程和存储函数、JDBC处理大文本CLOB及二进制BLOB类型数据     7.JSP访问数据库、JavaBean(封装数据和封装业务逻辑)     8.MVC模式与Servlet执行流程、Servlet25与Servlet30的使用、ServletAPI详解与源码分析     9.MVC案例、三层架构详解、乱码问题以及三层代码流程解析、完善Service和Dao、完善View、优化用户体验、优化三层(加入接口和DBUtil)    1 0.Web调试及bug修复、分页SQL(Oracle、MySQL、SQLSERVER)     11.分页业务逻辑层和数据访问层Service、Dao、分页表示层Jsp、Servlet     12.文件上传及注意问题、控制文件上传类型和大小、下载、各浏览器下载乱码问题     13.EL表达式语法、点操作符和中括号操作符、EL运算、隐式对象、JSTL基础及set、out、remove     14.过滤器、过滤器通配符、过滤器链、监听器     15.session绑定解绑、钝化活化     16.以及Ajax的各种应用     17. Idea环境下的Java Web开发

MicroCap声学仿真介绍(二)-创建声学仿真元件

声学库里包含孔、管、障板辐射器等器件,我们只需要按照仿真的需求,将声学库里的器件排列好,输入参数,用线连接起来即可。这里我们用D指代孔的直径,L指代孔的长度,N代表孔的数量。26.在弹出的界面中做如下设置:需要先在右面的选框里找到对应的项,然后右键Add Part,再之后就如下设置。3.在弹出的界面中,选择“Macro file(.mac)”,并点击右上角的“OK”下面就以声学仿真中常见的“孔”来做示例,跟大家一块演示一下宏程序的新建。10.在上图中“Value”中填入“R”,然后点击左边的“OK”按钮;

山无忧的博客 2195

汽车IVI中控开发入门及进阶(九):显示屏

显示屏Display panel和触控屏Touch panel,可以说随着汽车四化的进展,屏越来越多,越来越大,越来越高清,成为IVI中控、智能座舱系统的重要组成部分。比如如下一个电阻触摸屏。正文:显示屏主要功能就是显示,车载内容和信息的传递全靠显示屏,目前车载显示屏的种类可以分为:LCD液晶显示屏(TFT(薄膜晶体管)驱动的有源矩阵液晶显示,再细分IPS、TFT、SLCD,这几个子类)、LED显示屏(用 LED发光二极管作为背光光源)、OLED 显示屏。

码农17年的博客 2525

JSP之自定义jstl标签

让你秒懂自定义jstl标签😉😉

weixin_65474399的博客 2485

手游功耗优化:从猜想到硬核实测

功耗本质是“硬件在吃电”,要看电流/功率曲线,而不是只看帧率和温度;定量 = 有数字、有曲线、有对比能说“降了 15%”、“峰值从 7W 降到 5.5W”,而不是“我感觉凉快点”;工具方面:大厂会用外接功率仪 + 手机/芯片厂内部平台;平时也会用 Android/iOS/引擎自带的工具做趋势分析;流程上:选典型机型和场景 → 跑脚本采集 → 对齐 Profiler 数据 → 分析 CPU/GPU/网络谁在吃电;再通过版本对比、画质/帧率组合测试,指导配置和优化。这是一个。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 174

JSP自定义标签就是如此简单

为什么要用到简单标签? 因此,为了简化标签开发的复杂度,在JSP 2.0中定义了一个更为简单、便于编写和调用的SimpleTag接口来实现标签的功能。。 一般来说,实现了SimpeTag接口的标签称之为简单标签 SimpleTag接口 首先我们来看一下它的源码吧: public interface SimpleTag extends JspTag { void doTag() ...

weixin_28695537的博客 911

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JSP 自定义标签详解

自定义标签是用户定义的JSP语言元素。当包含自定义标签的JSP页面转换为servlet时,这个标签就转换为一个名为tag handler的对象上的操作。之后当JSP页面的servlet执行时,Web容器就调用这些操作。JSP自定义标签可以分为两种类型:标记库和函数库。(必须在)SKIP_BODY跳过主体计算主体内容并输出再次计算主体一次EVAL_PAGE计算后续内容SKIP_PAGE跳过页面后续内容。

让优秀成为一种习惯! 2376

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

JSP自定义标签

前言:已经有好久没有和大家分享知识,今天我要与大家分享的知识是继反射之后的JSP自定义标签知识。 上面三张图是自己绘制的三张的思维导图。可以通过思维导图来进入我要跟大家分享的知识。 一、JSP的特点: 1、jsp的构成:开始标签、标签主体、结束标签 例如: <z:demo1>demo1</z:demo1>2 2、标签的分类:标签的分类主要是有四种 ...

m0_53151031的博客 2502

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

自定义标签(JSP2.0)简单标签

下图为自定义标签的两大方式: 本文讲述的是JSP2.0之后出现的简单标签,至于JSP传统标签请看我的这篇。 SimpleTag接口中的方法: 1.编写mySimple.tld文件,并放在web-Inf目录下 注意:下面的body-content属性不能为JSP! <?xml version="1.0" encoding="UTF-8"?> <!-- 标签库的头文件 --> <taglib xmlns="http://java.sun.com/xml/ns/j2ee"

JAVA领域优秀创作者 272

自定义jsp标签

标记语言,是一种注释文本的语言,以便于计算机可以操作。很多与“ML”结尾的语言都是标记语言,比如HTML,XML,XHTML,VML等等。标记语言与其他语言一样,也需要运行它们的环境,比如HTML的运行环境时浏览器,XML也要自己的解析和运行的环境。基本结构标签体空标签编写助手类编写标签库描述文件(tld)在页面上引入标签使用。......

weixin_64938628的博客 507

JSP 自定义标签

自定义标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时Web container调用那些操作。 JSP标签扩展可以让你创建新的标签并且可以直接插入到一个JSP页面。 JSP 2.0规范中引入Simple Tag Handlers来编写这些自定义标记。 你可以继承SimpleTagSupport类并重写的doTag()方法来开发一个最简单的自定义标签。

lifeyer的博客 993

JSP2自定义标签(三)——带标签体的标签

本文摘自:李刚 著 《轻量级 Java EE企业应用实战 Struts2+Spring+hibernate整合开发》 续 JSP2自定义标签(一)、JSP2自定义标签(二)              带标签体的标签,可以在标签内嵌入其他内容(包括静态的HTML内容和动态的

虽然我很菜 1776

JSP tld文件配置 自定义标签简单示例

本文代码转载自 《Servlet、JSP和Spring MVC初学指南》 有关自定义标签有一个比较全面的博文进行了较详尽的介绍,见: http://blog.youkuaiyun.com/a154832918/article/details/8002064 那里对一些前一版本的标签有关类给出了介绍,但是应当使用较新的标签相关类 javax.servlet.jsp.tarext.SimpleTagSuppo

斯温的博客 5804

jsp自定义标签

一、概述 JSP 2.0中提供了两种新的开发自定义标记的方法: 1、简单标签机制SimpleTag JSP 2.0中加入了新的创建自定义标记的API:javax.servlet.jsp.tagext.SimpleTag,该API定义了用来实现简单标记的接口。和JSP 1.2中的已有接口不同的是,SimpleTag接口不使用doStartTag()和doEndTag()方法,而提供了...

qq30211478的博客 471

JSP自定义标签(一)

JSP自定义标签 我们为什么要自定义jsp标签有什么用呢? 用途:在进行JSP页面显示处理的时候,有时候JSTL/Struts/Spring提供的标签库并不能满足项目中显示的需求,特别是对一些要求比较高的定制化服务中,可以使用自定义的标签库去处理。 标签语言特点 <开始标签>。标签体。</结束标签> 空标签 < br>< /br> < br/&...

qq_45384482的博客 942

【JavaWeb】Jsp的自定义标签

JSP技术提供了一种封装动态类型的机制—自定义标签,它扩展了JSP语言。自定义标签通常发布在标签库中,标签库定义了一个自定义标签集并包含实现标签的对象。本篇文章简单讲述了jsp自定义标签的一些基本知识和使用方法。

peng_YuJun的博客 1169

JSP2自定义标签(二)——带属性的标签

本文摘自:李刚 著 《轻量级 Java EE企业应用实战 Struts2+Spring+hibernate整合开发》 续JSP2自定义标签(一)             前面的简单标签既没有属性也没有标签体,用法功能都比较简单。实际上还有如下两种标签:带属性的标签和带标

虽然我很菜 3361
上一篇: 基于SSH框架的Web应用架构分析
下一篇: JSP2自定义标签(二)——带属性的标签
IMFuckingHigh
博客等级 码龄18年 85粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值