起定义之标签库
同等、基本概念:

1.标签(Tag):
标签,通常为化为动作,是一律组按照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>

4.标签处理类(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”>

其次、创建与采取一个Tag Library的骨干步骤:


  1. 创立标签的拍卖接近
    — 继承TagSupport
    — 实现doStartTag和doEndTag方法
  2. 开创标签库描述文件tld
  3. 每当JSP文件被引入标签库
  4. 实施时假如有性,会调用setXXX方法。

重大掌握:
pageContext属性
doStartTag()
doEndTag()
doAfterBody()


统一资源一定符(URL,英语 Uniform / Universal Resource Locator
的缩写)也于称网页地址,是因特网上标准的资源的地址(Address)

Web上可用之各种资源 – HTML文档、图像、视频片段、程序等 –
由一个通用资源标志符(Uniform Resource Identifier, 简称”URI”)进行定点。

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 隐含1
将body的始末输出及在的出口流中。包括是jsp代码,也堪让输出
SKIP_PAGE 隐含5 忽略标签剩下的页面。
EVAL_PAGE 隐含6 继续执行标签下的页

pageContex属性:代表Web以中之javax.servlet.jsp.PageContext对象
JSP容器在调用doStartTag或者doEndTag方法前,会先调用setPageContext方法,
设置pageContext。因此于标签处理接近吃得直接看pageContext变量

doAfterBody()这个主意是在亮完标签间文字之后呼叫的,其回来值有EVAL_BODY_AGAIN与SKIP_BODY,
设标明签体决定要再次计同一不成则由doStartTag和doAfterBody返回EVAL_BODY_AGAIN。
前者会另行显平坏标签内的字,后者则继续执行标签处理的生一致步。

2.创造标签库描述文件(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动作。最少用

3.于JSP文件被引人标签库

 

其三、自定义JSP标签的处理过程:

1.每当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”
4.Web容器自动到WEB-INF下面的tld文件中找到
<uri>http://org.hellohowlow.1401/jsp/jstl/core&lt;/uri&gt;
5.打要素被获得相应的素的值 hello
6.从.tld文件被找到与tagname对应之要素
<tag>
<name>hello</name> <!– 标签的号 –>
<tag-class>org.hellohowlow.tags.HelloTag</tag-class><!–
标签的落实类 –>
<body-content>JSP</body-content> <!– 标签中支持之情节
–>
</tag>
7.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地图