如何定义和使用tag文件?

如何定义和使用tag文件?,第1张

jsp自定义标签需要引入两个jar 分别是

javax.servlet.jsp.jarjavax.servlet.jar

建立tld文件,建议目录为WEB-INF下,tld文件结构为下图,uri为整个标签库的名称,可以理解为java类,每一个tag分支,可以理解为java类中的每一个方法,我们在调用jsp自定义标签的时候就和调用java类一样,通过类找方法。tag分支重点要讲tag-class,该属性为该标签方法所指向的java类。

页面调用,首先需要引入标签,<%@ taglib uri="option" prefix="option"%>option为标签名 定义在tld文件中,引用之后就可以在页面调用自定义标签了,简单的一行代码。即可实现一个grid的输出,且可以重复利用。

JSP标签有两种实现方法,一种是使用tag 文件,一种是使用tld文件。

1、使用tag文件

标签名和tag文件名一致, tag文件为JSP文件,可以有属性,把JSP页面当JavaBean文件一样使用。

例子:

1)WEB-INF/lib下放置TAG文件:MyTag.tag,那么就有了一个名为MyTag的标签:

<%@ tag pageEncoding="UTF-8" %>  

<%@ attribute name="id" required="true" rtexprvalue="true" %>  

<%@ attribute name="webletID" required="true" rtexprvalue="true" %>  

  

<B>JSP TAG ATTRIBUTE GET<B>  

  

<div id="<%=getId() %>" style="border:solid 1px #ff0000">  

    Here, got the attribute value by get method:<%=getWebletID() %>  

    <br>Got the attribute value by variable:<%=webletID %>  

</div>  

  

<script>  

  

</script>  

<br>

可定义属性attribute,有变量名(name),是否必需(required)等属性,相当于定义一个JavaBean的属性。在使用属性的值时,可通过get方法来访问或通过变量名的方式来访问。

2)创建引用标签的JSP文件test.jsp,放置于Web目录下,如何WEB-INF同级目录

[html] view plain copy

<%@ page language="java" contentType="text/html charset=UTF-8" pageEncoding="UTF-8"%>  

<%@ taglib prefix="mx" tagdir="/WEB-INF/tags"%>  

<html>  

<head>  

<meta http-equiv="Content-Type" content="text/html charset=GBK" />  

    <title>Tag test</title>   

</head>  

  

<body>  

    <h1>Tag Test is ok!</h1>  

  

    <mx:MyTag id="Weblet1" webletID="W1001"/>  

</body>  

  

</html>

在定义好属性后,就可在TAG被引用时,接受传入参数。标签TAG的属性id,webletID。

3)访问test.jsp,效果如下:

JSP TAG ATTRIBUTE GET

Here, got the attribute value by get method:W1001 

Got the attribute value by variable:W1001

2、使用tld文件

tld为XML格式文件,在其中描述标签组件的类和属性等。

方法1的使用比较直接简单,修改标签直接修改JSP文件即可;方法2使用定义方式来描述标签,修改标签需要修改tld描述文件和对应的class文件。

JSP中的TAG文件和TLD文件小结

在jsp文件中,可以引用tag和tld文件。 

1.对于tag文件 

<%@ taglib prefix="ui" tagdir="/WEB-INF/tags" %> 

其中的tags是个目录,里面有若干tag文件。 

但使用<ti:XXXX>时,目录WEB-INF/tags下,必然有个XXXX.tag文件与之对应。

2.对于tld文件 

在jsp中可以引用TLD文件,如 

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>

但是这个http://struts.apache.org/tags-html对应着什么呢?

jsp会在当前目录的\WEB-INF下找所有tld文件,确认这个URL对应哪个TLD文件。 

当找到struts-html.tld文件时,发现其中的内与这个URL对应。 

但使用<html:YYYYY>时,这个TLD文件中必然有个YYYY项与之对应。 

还有一种更保险的方法是,在WEB-INF/web.xml中加上 

<taglib> 

    <taglib-uri> 

http://jakarta.apache.org/tomcat/examples-taglib 

    </taglib-uri> 

    <taglib-location> 

       /WEB-INF/jsp/example-taglib.tld 

    </taglib-location> 

</taglib>

这样表示http://jakarta.apache.org/tomcat/examples-taglib对应着/WEB-INF/jsp/example-taglib.tld

tag文件作用一般是一段小代码,类似include文件的作用。 

tld文件作用比较复杂,可以实现很多高级的作用。

tld是taglib description 的缩写

定制标签拼图中的最后一块是TLD(标签库描述符)文件。创建的每个标签都必须在一个TLD文件中声明,而且这一文件还必须连同标签的Java处理器类一起被部署。正如在前一节中所看到的,servlet容器知道在何处放置了TLD文件,因为已经在web.xml标准servlet配置文件中声明了路径。

定制标签拼图中的最后一块是TLD(标签库描述符)文件。创建的每个标签都必须在一个TLD文件中声明,而且这一文件还必须连同标签的Java处理器类一起被部署。正如在前一节中所看到的,servlet容器知道在何处放置了TLD文件,因为已经在web.xml标准servlet配置文件中声明了路径。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/8082358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存