JavaWeb JSP标签-自定义标签处理 tld文件

自定义标签处理

标签库的组成部分

要求特性
标签处理程序包含类的定义和定义标签功能的方法
标签描述符(TLD)文件描述标签库的XML文件

使用Jsp标签作用:
(1)创建实现Tag接口或继承TagSupport类的标签处理程序。它定义标签执行的任务。
(2)使用TLD文件来映射标签与标签处理程序文件。
(3)Jsp文件包含taglib指令,指出标签的使用与标签的定义。
使用uri映射到标记库语法:

<%@ taglib prefix=”c”  uri=”http://java.sun.com/jsp/jstl/core” %>

告诉容器此JSP将使用与uri相关联的标记库。可以通过一个tld文件将这个uri与一个标记库关联。

标签处理程序步骤

1、识别标签处理程序的结构(继承TagSupport类)
2、标签处理程序中常用方法在这里插入代码片
3、doStartTag()返回值
4、doEndTag()返回值
5、doAfterBody()返回值

标签描述符(TLD)文件

<taglib>
  <tlib-version>1.2</tlib-version>
  <jsp-version>1.2</jsp-version>
  <short-name>pfc Web Taglib</short-name>
  <uri>http://www.pfc.cn/taglib</uri>
  <description>
        An example tab library for Web Application.
  </description>
  <tag>
    <name>heading</name>
    <tag-class>pfc.taglibs.HeadingHandler</tag-class>
    <body-content>JSP</body-content>
    <description>heading</description>
    <attribute>
      <name>alignment</name>
      <required>true</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
      <name>color</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
    </attribute>
  </tag>
</taglib>

对上述tld文件中用到的标签做了说明
在taglib级上TLD文件的元素

标签说明
<tlib-version>标签库版本(1.2)
<jsp-version>标签库依赖的Jsp版本(1.2)
<short-name>标签库名(pfc Web Taglib)
<uri>标签库唯一id(http://www.pfc.cn/taglib)
<description>关于标签库详细信息

在tag级上TLD文件的元素

标签说明
<name>标签的名(heading)
<tag-class>标签处理程序类(pfc.taglibs.HeadingHandler)
<body-content>标签体的定义。empty:为空标签。JSP(默认):能放在JSP中的东西都能放在这个标记体中。tagdependent:标记体要看作纯文本,所以不会计算EL,也不会触发标记/动作,例如SQL语句。Scriptless:默认,标记体中不能有脚本元素,而脚本元素可以是sciptlet(<%…%>)、脚本表达式((<%=…%>))和声明(<%!..%>)。
<description>关于标签的详细信息
<attribute>关于标签的属性名与需求说明

在attribute级上TLD文件的元素

标签说明
<name>属性名
<required>true:属性是必须的。false: 属性可有可无。
<rtexprvalue>true:属性值可动态生成。false: 默认,属性值不可动态生成。例如:true代表,<xxx:yyyy zzz="<%= something %>" />标签库zzz的属性是<%= %>表达式的结果而非"<%= something %>"这几个字母

实例:
JSP主文件(GSTExample.jsp):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<%@ page language="java" contentType="text/html; charset=GB2312" %>
<%@ taglib uri="/WEB-INF/tagExampleTld/zxc.tld" prefix="GSTTag" %>
<HTML>
    <HEAD><TITLE>自定义标签实例</TITLE></HEAD>
    <BODY><CENTER><BR><BR>
			<H3>这里调用一个标签:hello</H3>
			<H3><GSTTag:Hello/></H3>
  	</CENTER></BODY> 
</HTML>

tag文件(zxc.tld):

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
	version="2.0">
	<description>自定义标签实例</description>
	<display-name>TAG</display-name>
	<tlib-version>2.0</tlib-version>
	<short-name>tagExampleTld</short-name>
	<uri></uri>
	<tag>
		<description>这里调用一个标签:hello</description>
		<name>Hello</name>
		<tag-class>tagexample.tagexample</tag-class>
		<body-content>empty</body-content>
	</tag>
</taglib>

java文件(tagexample.java):

package tagexample;
import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class tagexample extends SimpleTagSupport {
	public void doTag() throws JspException, IOException {
	JspWriter out = getJspContext().getOut();
	out.println("这里调用一个标签:hello的一个例子");
	}

}

程序说明:
在zxc.tld文件中 和之间没有内容,所以在GSTExample.jsp文件中,uri取值为标记文件所在路径"/WEB-INF/tagExampleTld/gst.tld" ,即:
<%@ taglib uri="/WEB-INF/tagExampleTld/zxc.tld" prefix=“GSTTag” %>
在标签处理程序GSTExample.java中,getJspContext()返回JspContext类对象,该对象存储的是jsp页面上下文。

在这里插入图片描述
在这里插入图片描述
运行结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

废人一枚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值