自定义的标签库
一、基本概念:

1.标签(Tag):
标签,常常也成为动作,是1组根据XML语法格式编写的代码片段,在JSP中,用来封装在页面中可重新利用的逻辑,通过标签可以使JSP网页变得简洁并且易于维护。由于标签是XML成分,所以它的名称和性情都是深浅写敏感的

2.标签库(Tag library):
由一雨后玉兰片功用相似、逻辑上互相联系的标签构成的集合称为标签库。
SUN就生产了规范的JSTL。

3.标签库描述文件(Tag Library Descriptor): tld
标签库描述文件是一个XML文件,那个文件提供了标签库中类和JSP中对标签引用的照射关系。它是贰个安插文件,和web.xml是相仿的。
loginServlet web.xml <servelt>
outTag xxx.tld <tag>

四.标签处理类(Tag Handle Class):
标签处理类是八个Java类,那么些类继承了TagSupport或然扩大了SimpleTag接口,通过那一个类能够完毕自定义JSP标签的现实作用

案例:

  1. <c:hello> hello标签,jsp页面使用标签时输出hello
  2. <c:out value=”” default=””>
    输出输入的值,假如未有值,输出default的值
  3. <c:forEach items=”${requestScope.book_list}” var=”book”>

2、创建和动用三个Tag Library的着力步骤:


  1. 创设标签的处理类
    — 继承TagSupport
    — 实现doStartTag和doEndTag方法
  2. 成立标签库描述文件tld
  3. 在JSP文件中引进标签库
  4. 推行时只要有总体性,会调用setXXX方法。

第一控制:
pageContext属性
doStartTag()
doEndTag()
doAfterBody()


合并能源一定符(U兰德酷路泽L,加泰罗尼亚语 Uniform / Universal Resource Locator
的缩写)也被称作网页地址,是因特网上专业的能源的位置(Address)

Web上可用的各样能源 – HTML文书档案、图像、录像片段、程序等 –
由2个通用财富标志符(Uniform Resource Identifier, 简称”U昂科拉I”)进行一定。

1.创立标签的处理类(Tag Handler Class)
hello标签,在jsp页面使用标签时输出helloworld
out标签,成效类似JSTL的<c:out>
forEach标签,成效类似JSTL的<c:forEach>

— 以三番四次TagSupport的形式去开发二个标签.TagSupport是Tag的一个达成,
咱俩只需去增添它,并掩盖相应的主意,那么就能够兑现标签的花费了
— 实现doStartTag和doEndTag方法
–doStartTag()和doEndTag()重临值是在Tag Interface里定义的静态int
SKIP_BODY隐含0 就是跳过了始于和甘休标签之间的代码。
EVAL_BODY_INCLUDE 隐含一将body的情节输出到存在的输出流中。蕴含是jsp代码,也足以被输出
SKIP_PAGE 隐含五 忽略标签剩下的页面。
EVAL_PAGE 隐含陆 继续执行标签下边的页

pageContex属性:代表Web应用中的javax.servlet.jsp.PageContext对象
JSP容器在调用doStartTag恐怕doEndTag方法前,会先调用setPageContext方法,
安装pageContext。因而在标签处理类中得以平素访问pageContext变量

doAfterBody()那几个形式是在显示完标签间文字之后呼叫的,其重临值有EVAL_BODY_AGAIN与SKIP_BODY,
要是标签体决定供给再总括一遍则从doStartTag和doAfterBody重临EVAL_BODY_AGAIN。
前者会再显示一遍标签间的文字,后者则继续执行标签处理的下一步。

二.创办标签库描述文件(Tag Library Descrptor File)
— 在WEB-INF下添加一个mytag.tld文件
tld是taglib description 的缩写

<tag>
<name>out</name> 标签名称
<tag-class>org.hellohowlow.tags.OutTag</tag-class>
标签完结类
<body-content>JSP</body-content> 标签里面补助的始末
<attribute>
<name>var</name>
<required>true</required> 是还是不是必须
<rtexprvalue>true</rtexprvalue> rtexprvalue的完备是 Run-time
Expression Value,
它钦定使用标签时能否利用表达式来动态内定数据${name}.。true是能够,false是不得以。
</attribute>
</tag>

body-content的值:
tagdependent:标签体内容一贯被写入BodyContent,由自定义标签类来进展处理,而不被JSP容器解释
JSP:接受全体JSP语法,如定制的或内部的tag、scripts、静态HTML、脚本成分、JSP指令和动作。
empty:空标记,即开头标记和了结标记之间平素不内容。
scriptless:接受文本、EL和JSP动作。最少用

叁.在JSP文件中引人标签库

 

3、自定义JSP标签的处理进度:

壹.在JSP中引进标签库:
<%@ taglib uri=”http://org.hellohowlow.1401/jsp/jstl/core
prefix=”hh” %>
2.在JSP中采取标签库标签:
<hh:hello/>
3.Web容器遵照第一个步骤中的prefix,得到第三个步骤中申明的taglib的uri属性值
prefix=”hh” uri=”http://org.hellohowlow.1401/jsp/jstl/core
四.Web容器自动到WEB-INF上面包车型大巴tld文件中找到
<uri>http://org.hellohowlow.1401/jsp/jstl/core&lt;/uri&gt;
五.从要素中拿走对应的要素的值 hello
陆.从.tld文件中找到与tagname对应的要素
<tag>
<name>hello</name> <!– 标签的名称 –>
<tag-class>org.hellohowlow.tags.HelloTag</tag-class><!–
标签的达成类 –>
<body-content>JSP</body-content> <!– 标签里面帮助的始末
–>
</tag>
七.Web容器依照成分的值创造相应的tag handle class的实例
<tag-class>org.hellohowlow.tags.HelloTag</tag-class>

  1. Web容器调用那一个实例的doStartTag/doEndTag方法成功相应的拍卖

 

总结:

  1. 创办标签的处理类

    — 继承TagSupport

    达成doStartTag和doEndTag方法,假设须要频仍在body之后展开张营业务处理,供给重写doAfterBody方法。

  2. 创建标签库描述文件tld
    注意:tld中的attribute对应标签处理类的property属性(set/get)。
  3. 在JSP文件中引进标签库
    <%@ taglib uri=”http://org.hellohowlow.1401/jsp/jstl/core
    prefix=”hh”%>
  4. 施行时一旦有品质,会调用setXXX方法。

相关文章

网站地图xml地图