当前位置:文档之家› 自定义标签库

自定义标签库

自定义标签库
自定义标签库

JSP标签库(也称自定义库)可看成是一套产生基于XML脚本的方法,它经由JavaBeans来支持。在概念上说,标签库是非常简单和可以重用的代码构造。

自定义标签有着丰富的特点,它们可以:

1.可以通过调用页面传递的属性进行自定义;

2.可以访问对于JSP页面可能的所有对象;

3.可以修改由调用页面产生的响应。

4.可以相互间通信。你可以创建并初始化一个JavaBean组件,创建一个变量引用标签中的bean,接着在其它的标签中引用该bean.

5.可以在一个标签中嵌套另一个,可以在JSP页面中进行复杂的交互。自定义标签为在JSP项目中创建易于重用的代码打开了一扇大门。你所需要的只是标签库和它的文档说明。

通过实现接口或者继承现有的类,我们就可以开发自定义的标签。常用的接口有:

TagSupport类

该类是IterationTag的缺省实现。除了实现原有方法外,本身还增加了一些有用的其他方法和成员变量。下表列出其中重要的几个:

BodyTagSupport类

该类同时继承了TagSupport类,并实现BodyTag接口。除了前表所示方法,该类还提供了一些其它方法便于使用。

实现Tag接口

所有的标签处理器都需要间接或直接的实现这个接口。

下面列出Tag接口定义的方法和常量:

setPageContext()方法

setPageContext()方法是一个定制标签声明周期内第一个要被调用的方法。完整写法是:

public void setPageContext(PageContext);

jsp引擎会将jsp页转换时隐含创建的pageContext对象,作为参数,调用setPageContext方法。

通常的做法会将这个参数保存为本标记处理器的参数。

setParent()和getParent()方法

当标签嵌套使用时,外层的标签被成为父标签,内部的被称为子标签。完整的写法是:

public void setParent(Tag);

public Tag getParent();

其中setParent方法对父标签对象进行设置。而getParent方法用以获得父标签对象。

setter方法

当定制标签中包含属性时,在标签处理器中有和javaBean相同的设置机制。即每一个属性XXX,都有对应的setXXX()方法。

这些方法的调用是在setPageContext()和setParent()之后,doStartTag()之前。(就是说所有的属性-即实例变量-必须完全赋值,因为随后的方法可能会调用到它们)

doStartTag()方法

该方法标志着真正的标签处理开始。当前三阶段的方法执行完后,jsp 引擎就会调用doStartTag()方法了。完整写法是:

public int doStartTag() throws JspException;

该方法给了标签处理器一个初始化计算和校验属性值合法性的机会。如果初始化失败或属性值不合法,则抛出JspException异常,或其子类,如JspTagException。

初始化计算过后,该方法将决定是否继续对标签体进行计算。作为结果,返回一个整数常量(EVAL_BODY_INCLUDE或SKIP_BODY),用以指示是否跳过标签体的执行。除此之外不返回任何其它值。

doEndTag()方法

执行完doStartTag()方法后,就该执行doEndTag()了。完整写法是:

public int doEndTag() throws JspException;

该方法标志着真正的标签处理结束。同样该方法将决定是否继续执行

jsp文件中该标签之后的内容。它也会返回一个整数常量(EVAL_PAGE 或SKIP_PAGE),用以指示页面后续内容是否跳过。注意此处的范围是页,并不是转换单位。所以计算不计算全都是针对该页而言。release()方法

最后,jsp引擎将调用release方法,当标签处理结束,标签处理器对象不再使用时。完整写法是:

public void release();

注意。一个页面内同时有多个相同标签时,jsp引擎会只会为该标签创建一个对象。只有等该页内相同标签全部处理完了。jsp引擎才会调用release()方法,将该标签对象从内存清理掉。

自定义标签的开发包括两个部分的开发:

(1)开发标签的处理程序(java类)

(2)标签描述文件(.tld文件)

自定义标签的种类有许多,可以根据实际项目的需要进行编写。但为了不重复的开发,jsp标准推出JSTL(标准标签库)。

在JSP应用程序中添加自定义标签的能力可以使工作重点放到以文档为中心的开发方式上。可以使 Java 代码不出现在 JSP 页中,从而使这些页面更容易维护。

在创建自定义标签之前,需要创建一个标签处理程序。标签处理程序是一个执行自定义标签操作的 Java 对象(Java类)。在使用自定义

标签时,要导入一个标签库——即一组标签/标签处理程序对,这样页面编译时才能处理你的自定义标签。通过在 Web 部署描述符(web.xml)中声明库导入它,然后用指令taglib将它导入 JSP 页。

如果JSP容器在编译JSP文件时遇到了自定义标签,那么它就检查标签库描述符(tag library descriptor)(TLD)文件以查询相应的标签处理程序。TLD 文件对于自定义标签处理程序,就像 Web 部署描述符对于 servlet 一样。

对正文进行操作——即对在开始和结束标签之间的内容进行操作的——标签必须实现 BodyTag 接口。我们将称这些标签为正文标签。我们将不对其正文操作的标签称为简单标签。简单标签可以实现Tag接口,尽管不要求它们这样做。要记住不对其正文操作的标签仍然有正文,只不过,它的标签处理程序不能读取这个正文。

要构建简单标签,我们需要完成以下步骤:

1. 创建实现了Tag接口(准确地说是

javax.servlet.jsp.tagext.Tag)的标签处理程序类。

2. 创建一个 TLD 文件。

3. 在标签处理程序 Java 类中创建属性。

4. 在 TLD 文件中定义与标签处理程序 Java 类中定义的属性对应的属性。

5. 在 TLD 文件中声明 scriptlet 变量。

6. 实现 doStartTag() 方法。在标签处理程序类中,根据属性将值设

置到 scriptlet 变量中。

在jsp1.2时代已经有标记库了,并且功能强大,但标记库的编程和调用都比较复杂,导致真正使用到WEB开发中的还是不多。JSP2.0推出的简单标记库扩展解决了以上的问题。简单标记库相对JSP1.2中的标记库来说,优点在于对后台程序员来说,结构更简单,实现接口更少,可以轻松实现后台程序。

JSP 2.0中加入了新的创建自制标记的API:

javax.servlet.jsp.tagext.SimpleTag,该API定义了用来实现简单标记的接口。和JSP 1.2中的已有接口不同的是,SimpleTag接口不使用doStartTag()和doEndTag()方法,而提供了一个简单的doTag()方法。这个方法在调用该标记时只被使用一次。而需要在一个自制标记中实现的所有逻辑过程、循环和对标记体的评估等都在这个方法中实现。从这个方面来讲,SimpleTag可以和IterationTag达到同等的作用。但SimpleTag的方法和处理周期要简单得多。在SimpleTag中还有用来设置JSP内容的setJspBody()和getJspBody()方法。Web容器会使用setJspBody()方法定义一个代表JSP内容的JspFragment对象。实现SimpleTag标记的程序可以在doTag方法中根据需要多次调用getJspBody().invoke()方法以处理JSP内容。

自定义标签的分类:

(1)不带主体和属性的简单标签:如< mytag:helloworld/>

(2)不带主体但有属性的标签:如”/>

(3)带标签体和属性的标签:在自定义标签的起始和结束标签之间的部分为标签体(Body)。Body的内容可以是JSP中的标准标签,也可以是HTML、脚本语言或其他的自定义标签。

(4使用脚本变量的标签:

定义了id和type属性的标签可以被标签后面的Scriptlet使用。

<%sqlDB.getConnection(); %>

传统的标签必须实现javax.servlet.jsp.tagext.Tag接口,在Tag接口中,主要定义的是和标签生命周期相关的方法,比如:doStartTag(),doEndTag()等。在Tag中,可以通过PageContext对象来访问JSP页面的上下文。结合标签的生命周期标签的处理过程:

1当容器创建一个新的标签实例后,通过setPageContext()来设置标签的页面上下文。

2使用setParent方法设置这个标签的上一级标签,如果没有上一级嵌套,设置为null。

3设置标签的属性,这个属性在标签库描述文件中定义,如果没有定义属性,就不用调用此类方法。

4调用doStartTag方法,这个方法可以返回EVAL_BODY_INCLUDE和SKIP_BODY,当返回EVAL_BODY_INCLUDE时,就计算标签的Body,如果返回SKIP_BODY,就不计算标签的Body。

5调用doEndTag方法,这个方法可以返回EVAL_PAGE或者SKIP_PAGE,当返回EVAL_PAGE时,容器将在标签结束时继续计算JSP页面其他的部分;如果返回SKIP_PAGE,容器将在标签结束时停止计算JSP页面其他的部分。

6调用release方法释放标签程序占用的任何资源。

开发标签时可以有两种选择,已从是实现原始的接口,另一种是从TagSupport类继承。

14.2.1 实现Tag接口

按照下面的步骤进行:

1)开发标签实现类

2)编写标签描述文件,tld为扩展名。

3)在Web.xml中映射标签库的使用。

4)在JSP网页中调用标签。

开发带Body的标签库

带有Body的T ag必须实现javax.servlet.jsp.tagext.BodyT ag接口,

BodyT ag接口中定义了一些处理标签体的方法。

通过实现BodyT ag接口,就可以方便的操作标签体,比如可以让标签体迭代多次等。BodyT ag的处理过程:

1)当容器创建一个新的标签实例后,通过setPageContext来设置标签的页面上下文。

2)使用setParent方法设置这个标签的上一级标签。

3)设置标签的属性。

4)调用doStartT ag方法,这个方法可以返回EVAL_BODY_INCLUDE 和SKIP_BODY,当返回EVAL_BODY_INCLUDE时,就计算标签的Body,如果返回SKIP_BODY,就不计算标签的Body。

5)调用setBodyContent设置当前的BodyContent。

6)调用doInitBody,如果在计算BodyContent时需要进行一些初始化,就在这个方法中进行。

7)每次计算完BodyT ag后调用doAfterBody,如果返回EVAL_BODY_TAG,表示继续计算一次BodyT ag,直接返回SKIP_BODY才继续执行doEndT ag方法。

8)调用doEndT ag方法,这个方法可以返回EVAL_PAGE或者SKIP_PAGE,当返回EVAL_PAGE时,容器将在标签结束时继续计算JSP页面其他的部分;如果返回SKIP_PAGE,容器将在标签结束时停止计算JSP页面其他的部分。

9)调用release()方法释放标签程序占用的任何资源。

多个标签的嵌套

类似于循环的嵌套和开关语句,在实际开发中,往往需要多个标签嵌套在一起完成特定的任务。教材中例举的例子如下:

my value is test1

my value is test

上面的标签中,为父标签,为子标签,一个父标签可以嵌套多个子标签和HTML、Scriptlets等。

开发迭代的标签库

在没有迭代标签的时候,要循环输出内容到网页,一般采用while语句进行循环,如:

while(rst.next())

{

out.println("bookName:"+rst.getString("bookName"));

out.println("
");

}

上述循环结构可以用迭代标签替代。

如果要实现内容的迭代输出,需要开发两个类,一个类实现BodyTagSupport接口,另一个类扩展TagExtraInfo类。TagExtraInfo 旨在提供标签运行时的信息。

SimpleT ag开发

SimpleTag有自己的生命周期,最主要就是doTag方法。

1) 每次遇到标签,容器构造一个SimpleTag的实例,这个构造方法没有参数。和红典的标签一样,SimpleTag不能缓冲,故不能重用,每次都需要构造新的实例。

2) setJspContext()、setParent(): 只有这个标签在另一个标签之内时,才调用setParent()方法;

3) 设置属性:调用每个属性的setter方法;

4) setJspBody();

5) doTag(): 所有标签的逻辑、迭代和Body计算,都在这个方法中;

6) return,当doTag方法返回时,所有的参数被锁定。

自定义标签设计灵感

自定义标签设计灵感:20世纪80年代 通过东莞多加宝标签印刷 威廉·福克纳(WilliamFaulkner)在一句引文中写道:“过去永远不会死。”“它甚至还没有过去。” 怀旧是人类最强大和最普遍的情感之一。根据YouGov最近的一项研究: ?9/10的人说,他们至少偶尔会深情地回忆过去。 ?几乎有一半的人说他们经常或几乎总是深情地思考过去。 ?55%的人说,如果他们能够使用时间机器,他们就会回到过去。只有28%的人会走向未来。(那个幸运的家伙马蒂·麦克弗利 (MartyMcFly)两者都是。) 我们怀旧的具体重点因人而异。对于X世代和年长的千禧一代来说,上世纪80年代唤起了特别温暖的感觉(…)。品牌也注意到了。

当任天堂发布其迷你游戏时其他经典版2016年(一款于1985年首次推出的游戏机的复兴),它立即销售一空。在Netflix上,上世纪80年代的“荒诞不经”是收视率和文化巨人. 20世纪80年代的设计潮流也在经历着复兴。这个曾经被嘲笑为过于浮华和肤浅的十年,现在因其冒险精神和与传统决裂的意愿而受到赞扬。 你的品牌如何进入80年代的怀旧热潮?就像你的X代和千禧一代的客户一样,你可以从过去寻找灵感。以下是80年代美学的一些标志,以及如何将外观应用于定制产品标签。 孟菲斯灵感设计 当你想到80年代的陈词滥调时,你想象的是一种由一群米兰设计师在本世纪初开创的风格。孟菲斯集团正如人们所熟知的那样(顺便说一句,这与田纳西的城市无关),拒绝了现代主义的简约主义,而是玩弄着粗糙的线条、棱角分明的几何图形和粗犷的色彩。

孟菲斯的设计在20世纪80年代和90年代是一股不可忽视的力量,它在家具、床上用品上找到了出路,电视节目是的,诱捕器. 对于您的自定义标签:少即多的方法已经玩完了。突出架子上的外观,强调运动,颜色和乐趣。 氖色 不管80年代是怎么回事,都不是很微妙。十年来你脸上的态度就是它最喜欢的调色板:霓虹灯。明亮,明亮的颜色到处都是,从时尚到薄膜. 对于您的自定义标签:询问标签打印机扩展颜色范围可能包括霓虹灯。“未来派”造型 在20世纪80年代,每个人都期待着一个技术主导的未来,它既诱人又有点吓人。金属材质,能量螺栓,电网和激光束在电影“创”和“刀锋”中占据了很大的比重,更不用说产品包装了。

自定义标签打印和复杂作业

自定义标签打印和复杂作业 通过东莞多加宝标签印刷 “我们怎样才能做到这一点?” 每一个创造性的想法最终都遇到了这个问题。你可以在脑海中看到成品,你知道你想要它做什么,看上去像…。但这有可能吗? 我们也碰到了那个问题。 作为负责生产标签打印机的副总裁,我一直在从事我们处理过的最复杂和最不寻常的工作。当我们团队深厚的专业知识、数十年的经验和创造性的创造力结合在一起,创造出突破的项目来推动项目的发展时,我永远不会停止惊讶于什么才是可能的。 我将深入探讨我们是如何做到这一点的,但首先,让我们看看我们(或任何其他定制标签制造商)如何将一项工作归类为“复杂”。

什么是“复杂的”自定义标签打印工作? 随着添加更多组件,任何作业都变得更加困难。考虑一个单色的工作,一个单一的模切作为你的基线。然后添加另一种颜色,再加上另一种颜色,再加上另一种模具,或者再添加两种模具--这个项目变得越来越困难。 模具是一种切削工具或装置,用于创建标签的所需形状或在标签内冲压形状。使用我们的标签印刷术语汇编. 我们的一些最具挑战性的工作包括添加多个网络(基本上,多个材料组合成一个多层解决方案)。例如,打印扩展内容标签您可能会使用附加折叠优惠券到产品涉及到一个复杂的印刷和折叠顺序。 在我们的印刷机上增加辅助设备是我们解决这类产品的办法。我们拿第三个网站,运行它的顶部,通过一些鼓,然后折叠网络本身,把它回到底部的网络,并在上面添加一层。 如果听起来很复杂,那是因为它很复杂。幸运的是,熟能生巧,因此,重要的是与有丰富经验的标签打印机使用这类产品。 自定义标签印刷挑战:促销卡 你知道我们的印刷能力远远超出了标签吗?我们最复杂的工作之一根本不涉及标签。

JavaEE自定义标签(DOC)

JavaEE自定义标签:标签类的创建、tld配置文件的创建(位置、如何创建)、Web-XML配置、JSP应用 1、标签 以类似于html标签的方式实现的java代码的封装。 第一:形成了开发标签的技术标准---自定义标签的技术标准。 第二:java标准标签库(sun之前自己开发的一系列的标签的集合)jstl,以及表达式语言E L。 2、自定义标签 (1)理解: 可以允许用户自己根据自己的需要,去开发自己的标签的技术规范。 通俗:在Jsp页面上,以简单的标签封装java代码的操作。 //在自定义标签类中,先调用setPageContext()实例化内置对象: //然后是doStartTag()方法,核心代码放在这个方法里面:

//定义变量,变量的Get、Set方法: private String UserName = "";

//tld配置文件放置在WEB-INF目录下,主要的标记如下,主要的配置如下: //前面tlib-version版本号、Jsp-version JSP的版本号、short-name 命名空间、是必须有的 //uri,注意是uri而不是url,url是访问的路径。 //而uri为访问时候的别名,写在JSP页面上的标签的别名。 //name为此标签类的别名,tag-class 为标签类的存放的物理路径 //body-content 为是否有标签体,如果是/子关闭标签设置为EMPTY //如果涉及到标签属性,可以设置attribute,其中name为属性的名称,而不是别名,required 属性是否必须设置,rtexprvalue 是否程序运行时候为属性赋值。 //如果在tld文件中不设置uri,则在web-xml中必须对talib-uri进行设置。

自定义标签库

JSP标签库(也称自定义库)可看成是一套产生基于XML脚本的方法,它经由JavaBeans来支持。在概念上说,标签库是非常简单和可以重用的代码构造。 自定义标签有着丰富的特点,它们可以: 1.可以通过调用页面传递的属性进行自定义; 2.可以访问对于JSP页面可能的所有对象; 3.可以修改由调用页面产生的响应。 4.可以相互间通信。你可以创建并初始化一个JavaBean组件,创建一个变量引用标签中的bean,接着在其它的标签中引用该bean. 5.可以在一个标签中嵌套另一个,可以在JSP页面中进行复杂的交互。自定义标签为在JSP项目中创建易于重用的代码打开了一扇大门。你所需要的只是标签库和它的文档说明。 通过实现接口或者继承现有的类,我们就可以开发自定义的标签。常用的接口有:

TagSupport类 该类是IterationTag的缺省实现。除了实现原有方法外,本身还增加了一些有用的其他方法和成员变量。下表列出其中重要的几个:

BodyTagSupport类 该类同时继承了TagSupport类,并实现BodyTag接口。除了前表所示方法,该类还提供了一些其它方法便于使用。 实现Tag接口 所有的标签处理器都需要间接或直接的实现这个接口。 下面列出Tag接口定义的方法和常量:

setPageContext()方法 setPageContext()方法是一个定制标签声明周期内第一个要被调用的方法。完整写法是: public void setPageContext(PageContext); jsp引擎会将jsp页转换时隐含创建的pageContext对象,作为参数,调用setPageContext方法。 通常的做法会将这个参数保存为本标记处理器的参数。 setParent()和getParent()方法 当标签嵌套使用时,外层的标签被成为父标签,内部的被称为子标签。完整的写法是: public void setParent(Tag); public Tag getParent(); 其中setParent方法对父标签对象进行设置。而getParent方法用以获得父标签对象。

自定义标签(Custom Tag)

一、概述 JSP中有一块重要的技术:自定义标签(Custom Tag),最近这几天在学习Struts的时候发现Struts中使用了很多自定义标签,如html、bean等。所以我就做了个简单的试验,学习一下这种技术。 首先介绍一下这种技术吧! 1.优点: 取代了JSP中的Java程序,并且可以重复使用,方便不熟悉Java编程的网页设计人员。 2.开发流程: (1)编写JSP,在JSP中使用自定义标签。 (2)在web.xml中指定JSP中使用的标签的.tld(标签库描述文件)文件的位置。 (3) .tld文件中指定标签使用的类。 3. 自定义标签的分类: (1)简单标签:如< mytag:helloworld/> (2)带属性标签:如”/> (3)带标签体的标签: 在自定义标签的起始和结束标签之间的部分为标签体(Body)。Body的内容可以是JSP中的标准标签,也可以是HTML、脚本语言或其他的自定义标签。 ”> (4)可以被Script使用的标签: 定义了id和type属性的标签可以被标签后面的Scriptlet使用。 <%oraDB.getConnection(); %> 4.接口及其他

jsp自定义标签实例

jsp自定义标签实例 JSP自定义标签。在自定义标签的起始和结束标签之间的部分为标签体(Body)。 标签处理程序类:定义标签的行为,并在JSP引擎遇到自定义标签时调用执行。 标签库描述符(TLD)文件:描述标签库的XML文档,向JSP引擎提供有关自定义标签的标签处理程序的信息。tag标签相关属性:实现简单标签处理程序标签处理程序是一个在运行时调用的Java类,它包含在JSP文件中使用的自定义标签的实现代码.标签处理程序必须实现或扩展javax.servlet.jsp.tagext包中的类和接口.javax.servlet.jsp.tagext含有允许标签处理程序类与JSP容器通信的接口和类。 最近在项目中要用到这种技术,所以自己就写一个经典的HelloWorld实例:其实对自定义标签已经早有接触了(Struts中使用了很多自定义标签,如html、bean等)使用这种技术的优点:取代了JSP中的Java程序,并且可以重复使用,方便不熟悉Java编程的网页设计人员。 实现步骤: 首先启动eclipse,新建一个web项目(废话...) 1、修改web.xml文件,增加自定义标签支持。 Java代码 2、创建标签库TLD文件tlds\helloworld.tld 。 Java代码 这里注意:web.xml和xxx.tld这两个XML文件的头信息的版本匹配很重要,否则会导致页面报错找不到标签。

3、创建标签处理程序类HelloWorldTag(重写doStartTag和doEndTag方法)。 Java代码 补充: doStartTag()方法是遇到标签开始时会呼叫的方法,其合法的返回值是EVAL_BODY_INCLUDE与 SKIP_BODY,前者表示将显示标签间的文字,后者表示不显示标签间的文字。 doEndTag()方法是在遇到标签结束时呼叫的方法,其合法的返回值是EVAL_PAGE与SKIP_PAGE,前者表示处理完标签后继续执行以下的JSP网页,后者是表示不处理接下来的JSP网页。 doAfterBody(),这个方法是在显示完标签间文字之后呼叫的,其返回值有EVAL_BODY_AGAIN与 SKIP_BODY,前者会再显示一次标签间的文字,后者则继续执行标签处理的下一步。 EVAL_BODY_INCLUDE:把Body读入存在的输出流中,doStartTag()函数可用。 EVAL_PAGE:继续处理页面,doEndTag()函数可用。 SKIP_BODY:忽略对Body的处理,doStartTag()和doAfterBody()函数可用。 SKIP_PAGE:忽略对余下页面的处理,doEndTag()函数可用。 EVAL_BODY_BUFFERED:申请缓冲区,由setBodyContent()函数得到的BodyContent对象来处理tag的body,如果类实现了BodyTag,那么doStartTag()可用,否则非法。

自定义HTML标签属性-cjl

自定义HTML标签属性 为HTML元素添加一自定义的属性非常方便,只须将其加到尖括号中即可,与内置属性地位相等。 如我们要为TextBox元素添加属性idvalue: 只须在原来的控件后面加上:idvalue=”…”,成为: idvalue即可正式成为txtInput的属性,地位与其他属性相等。 如以下例子,在IE6中调试通过: 自定义属性

自定义标签的整理(新手教程)

在J2EE项目中,JSP页面常常通过在静态页面模板中嵌入scriptlets来插入动态的内容。 然而,随着复杂程序的增加,JSP页面也变得难于管理。虽然用这种方法开发小形项目唾手可得, 但是scriptlets仍然要面对下面的不利情况: Scriptlet难于阅读和修改。带有Scriptlets的JSP 页面混合了两种语言,这使得阅读和维护变得很困难。 Scriptlets鼓励了将数据表现和逻辑处理的混合。JSP 页面主要功能是数据表现而不是逻辑处理。逻辑处理属于Java类的工作,他们应该由程序员维护并能够重用。 Scriptlets不能够被重用。当scriptlets被重用时,常常是鼓励拷贝-粘贴来达到重用的效果,这是一种危险的维护方法。每一次你拷贝-粘贴scriptlets时,将有更多行多余的代码需要维护。 Scriptlets的参数很难进行确定传递. 无论如何,绝大数人简单的拷贝,粘贴、编辑或者类似的增加,使得大部份的多余的代码需要更多的维护。 与其创建充满了scriptlets的巨大的JSP页面,不如考虑使用用户自定义标签。用户自定义标签允许你创建、在JSP中使用你自己定义的类HTML标签。每当JSP引擎遇到用户自定义标签时,就会自动查找标签处理类,并自动调用他。页面中的自定义标签将会被票签处理类的输出所代替。这就

使得JSP页面不用直接在页面写Java代码,就可以指定生成动态的内容的。 用户自定义标签为你的网页设计提供了N种好处:他提高了页面代码的可读性。页面设计人员而不是程序员,能够使用很比使用Scriptlets更容易的使用标签。维护代码的程序员也只需个性标签库面不是JSP页面,这样他就不要再冒着破坏页面美观的风险。在使用标签的每一处,增强或者固定的标签改变了标签了的表现。标签比Scriptlets更容易确定参数,因为他会被作为一种属性或者在标签体内被传达。最后,标签比Scriptlets高度的可重用性,因为你可以创建共享的、可重用的自定义标签库。 JSTL提供的就是这种标准的自定义标签集。 让我们通过看一个简单的JSP页面例子,来看看如何使用自定义标签。下面这个页面使用scriptlet来得到数据: <%@ page import="java.text.SimpleDateFormat" %> <%@ page import="java.util.Date" %> Sample JSP

The date and time at the server are: <% String sformat = "EEEE, d MMMM yyyy 'at' kk:mm:ss z"; SimpleDateFormat format = new SimpleDateFormat(sformat); Date date = new Date(); String sdate = format.format(date); out.print(sdate); %>

JSP自定义标签详细

JSP标签库 在这篇文章中,我们主要讨论: ·什么是自定义tag标签? ·怎么使用tag标签? o 声明要使用的tag库 o 找到与之对应的tag处理类 o tag标签的类型 ·自定义tag标签 o tag处理类 o tag库描述 o tag标签示例 o 带属性的tag o 带body的tag o 定义了脚本变量的tag o 具有协作关系的tag ·自定义tag标签 o 一个迭代tag的例子 o 一个模板tag库 o tag处理类到底是怎样被调用的? 什么是自定义的tag? 一个自定义的tag标签是用户定义的一种JSP标记。当一个含有自定义的tag标签的JSP页面被jsp引擎编译成servlet时,tag标签被转化成了对一个称为tag处理类的对象进行的操作。于是当JSP页面被jsp 引擎转化为servlet后,实际上tag标签被转化成为了对tag处理类的操作。 自定义tag标签有很多特色,诸如: ·可以在JSP页面中自定义tag标签的属性 ·访问JSP页面中的所有对象 ·可以动态地修改页面输出 ·彼此这间可以相互通信。你可以先创建一个JavaBeans组件,然后在一个tag中调用此JavaBeans 组件,同时可以在另一个tag中调用它。 ·tag允许相互嵌套,可以在一个JSP页面中完成一些复杂的交互。 使用tag标签 本节主要描述怎样在JSP页面中使用tag标签,以及tag标签的不同类型。 要使用tag标签,JSP程序员必须做2件事: ·声明此tag标签的tag库 ·实现此tag标签 声明tag标签所在的tag库 如果要使用tag标签,则应用JSP的taglib指示符来指定其tag库(注意:taglib要在在使用此tag标

JSP自定义标签-标签属性

JSP自定义标签-标签属性 对自定义标签添加一些属性,可以使我们的标签功能更加灵活和复用。例如前一篇博客使用简单标签来对标签体内容执行一定的次数,就无法在标签上规定要执行的次数,必须在标签处理器类中修改,很不方便,如果使用带属性的标签就能很好的解决这个问题。 要想使简单标签具有属性,通常需要满足以下两个步骤: ①在标签处理器类中定义属性,同时为每个属性生成setter方法; ②在TLD文件中对于的标签下添加属性的标签,同时标签下定义其从标签,其中 从标签是必须要有的。标签所拥有的从标签如下: name标签:用于指定标签中属性的名称。 required标签:指定该属性是否必须。 rtexprvalue标签:指定该属性是否支持运行时表达式,如JSP表达式(<%=value %>)和EL表达式( ${value} )。如果我们设定为“false”的话,那么该属性只能支持字符串。 例1:使用简单标签来控制标签体内容执行次数(带属性标签方式) 编写标签处理器类: 1package com.bjpowernode.simpletag; 2public class LoopTagBody extends SimpleTagSupport { 3private int count; //定义一个属性,用来指定循环次数 4 5public void setCount(int count) { //为该属性设置setter方法

6this.count = count; 7} 8@Override 9public void doTag() throws JspException, IOException { 10JspFragment fragment = this.getJspBody(); 11for(int i=0;i 2 6A tag library exercising SimpleTag handlers. 71.0 8SimpleTagLibrary 9 simpletag 10 11 12loopbody 13com.bjpowernode.simpletag.LoopTagBody 14scriptless 15 16count 17true 18true 19 20 21 在JSP页面的开头导入taglib指令: <%@ taglib uri="simpletag" prefix="simple" %>

Velocity增加自定义标签的方法

Velocity的自定义标签 Velocity是当前我们用得最多的模板,其好处和使用方法非常丰富,网上一大堆,这里就不介绍了,需要的去网上搜索即可。这里重点介绍一下velocity的自定义标签及使用方法。自定义标签有两种方式:宏和java自定义工具 Macro 宏其实就是velocity已支持的所有标签的组合,好处是方便快捷,可以递归,可以写复杂的方法,如下便是一个递归遍历树的宏,不足之外是只有利用现有的数据进行组合,方法也仅限于velocity提供的几个标签。实现方式有两种,1,直接写在使用的页面上,这样只有当前页可用。2,写在macro.vm里面,这样所有的页面都可以使用。 调用调用方法:#categoryTree($node)和velocity提供的原生的方法一样,括号里面是参数

自定义标签 流程 代码 写java代码,代码需要继承Directive,示例代码如下。 getName接口用来告诉velocity这个函数名是什么,也就是页面上调用这个函数的名称,比如#hellofun(); getType接口用来告诉velocity这个函数类型,可以是行也可以是块函数; reder接口用来输出html代码,当然也可以不输出,如果需要输出,则使用入参的 writer.write("some html");context是当前velocity的容器,可以取调用vm中的变量,比如在 页面上使用#set($name="bwong"),可以通过context.get("name")取出"bwong",node里面可以取出调用这个函数时的入参,比如#hellofun("a"),通过node.jjtGetChild(0).value(context) 取出"a",所以: writer.write("hello " + node.jjtGetChild(0).value(context)); 就可以输出"hello xxx",xxx是调用这个函数时的入参。 render就可以通过使用java的所有工具和类了,实现起来会丰富得多。 配置 配置起来非常简单。在velocity.properties配置文件中加入 userdirective=youpackage.HelloFun,youpackage.OtherUtil 多个工具用”,”隔开。

JSP自定义标签开发+TLD文件元素详解

自定义标签开发整理 从jsp1.1开始就可以在jsp页面中使用自定义标签了,使用自定义标签不但可以实现代码重用,而且可以使jsp代码更简洁。Jsp2.0的标签扩展API中又增加了SimpleTag接口和其实现类SimpleTagSupport。 标签扩展API层次结构: JspTag Tag SimpleTag SimpleTagSupport BodyTag IterationTag BodyTagSupport TagSupport TLD文件元素详解: 每个自定义标签都必须在TLD文件中声明,TLD文件只不过是一个XML 文件。根元素是,它包含一个或者多个标签,该元素用来声明定制标签。元素中只有元素是必须的,其他都是可选的。 TLD文件中的元素 标 签含 义 TLD文件的根元素 此标签库的版本 此标签库依赖的JSP版本。 当在JSP中使用标签时,此标签库首选或者建议的前缀。当然可以完全忽略这个建议 描述信息

图形工具可显示的一个简短名称 图形工具可显示的图标 指定使用该标签库中标签的URI 关于该库的TagLibraryValidator信息指定事件监听器类 定义一个在EL中使用的函数 定义一个标签 元素的子元素标 签含 义 指定针对标签的信息 开发工具用于显示的一个简短名称可被开发工具使用的图标 标签名称 Java标签处理器类的名称。注意这是处理器类的全限定名称,比如 com.xx.tag.TableTag Javax.servlet.jsp.tagext.TagExtraInfo 类的一个可选子类 此标签的主体部分的内容。其值可为scriptless\tagdependent\empty,默认为empty 定义脚本变量信息 使用该标签例子的可选的非正式描述 包含了此标签的一个属性的元数据 的子元素标 签含 义 有关描述的文本信息

html使用自定义标签

xml文件中可以自由的使用自定义标签,html文件中同样可以使用自定义标签,但有几个注意事项: 必需设置标签的xmlns属性。例如,可以这样声明:。 这是因为html文件有一个默认的“名字空间”,

,等标签就处在这个默认的“名字空间”中. 很显然,这个默认的“名字空间”中并不包含我们的“自定义标签”,因此我们只能自己定义一个“名字空间”,让“自定义标签”处在这个自定义的“名字空间”中. 经过我的尝试,自定义名字空间不可以使用中文。例如,这样声明:是错误的 在使用自定义标签时,应该使用这样的形式,不能写成<自定义标签>这样的形式。 也就是说,自定义标签的名称前一定要指明它所在的“名字空间” 自定义标签的样式,既可以在 注意,在

MT4 自定义标签设置详解

Version 1.00 Copyright ? 2008, 2009

Copyright Information

Disclaimer and Risk Warnings Trading any financial market involves risk. The content of this e-book, its various associated websites and all related correspondence are neither a solicitation nor an offer to purchase of sell any financial instrument. Although every attempt has been made to assure accuracy, we do not give any express or implied warranty as to its accuracy. We do not accept any liability for error or omission.Examples are provided for illustrative and educational purposes only and should not be construed as investment advice or strategy. No representation is being made that any account or trader will or is likely to achieve profits or losses similar to those discussed in this e-book.Past performance is not indicative of future results. By purchasing the software, subscribing to our mailing list or using the website you will be deemed to have accepted these terms in full. Martin Alexander (author), Accura-FX Limited (publisher), their representatives and associates do not and cannot give investment advice. We endeavor to insure that related websites are available 24 hours per day but we cannot be held liable if, for any reason, a site is unavailable. The information provided in this e-book is not intended for distribution to, or for use by,any person or entity in any jurisdiction or country where such distribution or use would be contrary to law or regulation or which would subject us to any registration requirement within such jurisdiction or country. Hypothetical performance results have many inherent limitations, some of which are mentioned below. No representation is being made that any account will or is likely to achieve profits or losses similar to those shown. In fact, there are frequently sharp differences between hypothetical performance results and actual results subsequently achieved by any particular trading program.

jsp自定义标签

一、基本概念: 1.标签(Tag): 标签是一种XML元素,通过标签可以使JSP网页变得简洁并且易于维护,还可以方便地实现同一个JSP文件支持多种语言版本。由于标签是XML元素,所以它的名称和属性都是大小写敏感的 2.标签库(Tag library): 由一系列功能相似、逻辑上互相联系的标签构成的集合称为标签库。 3.标签库描述文件(Tag Library Descriptor): 标签库描述文件是一个XML文件,这个文件提供了标签库中类和JSP中对标签引用的映射关系。它是一个配置文件,和web.xml是类似的。 4.标签处理类(Tag Handle Class): 标签处理类是一个Java类,这个类继承了TagSupport或者扩展了SimpleTag接口,通过这个类可以实现自定义JSP标签的具体功能 二、自定义JSP标签的格式: 1. <% @ taglib prefix=”someprefix”uri=”/sometaglib” %> 为了使到JSP容器能够使用标签库中的自定义行为,必须满足以下两个条件: 1)从一个指定的标签库中识别出代表这种自定义行为的标签 2)找到实现这些自定义行为的具体类 第一个必需条件-找出一个自定义行为属于那个标签库-是由标签指令的前缀(Taglib Directive's Prefix)属性完成,所以在同一个页面中使用相同前缀的元素都属于这个标签库。每个标签库都定义了一个默认的前缀,用在标签库的文档中或者页面中插入自定义标签。所以,你可以使用除了诸如jsp,jspx,java,servlet,sun,sunw(它们都是在JSP白皮书中指定的保留字)之类的前缀。 uri属性满足了以上的第二个要求。为每个自定义行为找到对应的类。这个uri包含了一个字符串,容器用它来定位TLD文件。在TLD文件中可以找到标签库中所有标签处理类的名称

php-自定义标签解析

php自己定义解析方式(比较简单的写法) 格式: {sxq:blist num="10" Intercept="10" order="desc"} {loop $data $r}

  • {$r[title]}
  • {$r[content]}
  • {$r[zut]}
  • {/loop} {/sxq:blist} ------------------------------------------------------------------------------ 以{sxq: }开始 以{/sxq:}结束 冒号紧跟的是传入的数据需要获取的方式 以英文空格分开后面的参数 第二行的{loop}目前里面的参数么有用到,但是不需填写,只要出现loop就行 需要循环的html里面的参数目前是写死的, 必需$r开始取值, 如果需要用到key直接用$k 取, 这个可以根据自己的需要变化, Php部分— Label_html($html_str); $string = count($matchest['0']) >1?$this->explodeRole($row_str,$html_str):$this->explodeRole_one($row _str,$html_str); } return $string?$string:'';

    自定义标签及打包步骤

    1.创建标签类继承TagSupport 或BodyTagSupport 2.编写标签描述文件(.tld文件) 1.0 1.2 javawebtaglib http://com.soft.tags showIP com.soft.tags.IPTag jsp 3.打包自定义标签 (1)将tld文件复制到META-INF 目录下 ( 2)将META-INF 目录和WEB-INF目录下存放.class文件的包文件夹(如: com) 复制到某个位置(如:E盘) (3) 使用jar命令创建jar包文件 Win+R 打开运行对话框, 输入cmd 打开dos窗口, 输入E:回车键进入E盘 Jar cvf iptag.jar META-INF com (4)在E盘将会创建一个iptag.jar文件,将该jar文件复制到某项目的WEB-INF/lib目录中 在jsp页面中使用taglib指令引入<%@taglib uri=”http:com.soft.tags”prefix=”web”%> doStartTag() 的返回值 (1)return SKIP_BODY; doStartTag()............... doEndTag()............... (2) return EVAL_BODY_BUFFERED; doStartTag()............... 执行setBodyContent()............... 执行doInitBody()............... 执行doAfterBody()............... doEndTag()............... (3)return EVAL_BODY_INCLUDE; doStartTag()............... 执行doAfterBody()............... doEndTag()...............

    相关主题
    文本预览