自定义标签由标签处理程序和标签的描述组成。当遇到特定标记时,标记处理程序就会告诉系统应该做什么。类中包含了请求期间将要执行的Java代码。标签的描述声明了怎么使用这个标签。标记可以带着属性和主体,这些属性和主体是可选的,最简单的标记可以没有属性和主体。以下是几种典型的标签。
1. 不带属性和主体的简单标签: <maytaglibs:SomeTag/>
2. 不带主体但是有属性的标签: <mytaglibs: SomeTag user="hello"/>
3. 带有主体和属性的标签: <mytaglibs:SomeTag user="hell" >
这里是标签体,可以是合法的JSP内容或者标签</mytaglibs:SomeTag>
另外,一个标签可以嵌套在另一个标签里面,这就使得标签可以有很强的也没内容管理能力。
标签的典型使用控制显示逻辑、访问数据库和内容迭代。
实例:HelloWorld标签开发
在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()方法释放标签程序占用的任何资源。
注意: 标签体是指位于标签开始和结束中间的部分,如
<mytag:test>helloworld</mytag:test>
在上面的标签中,HelloWorld为标签体。标签可以没有标签体,如
<mytag:test/>
在开发标签时,可以有两种选择,一种是直接实现原始的接口,另一种是从TagSupport类继承。
看看如何实现Tag接口
步骤:
1 开发标签实现类
2 编写标签描述,这个描述通常是以.tld结尾的文件
3 在web.xml中指定标签库的引用。
开发实现类
位置:在WEB-INF\classes\目录下新建一个HelloTag_interface.java文件。
package com.text.ch13;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.util.Hashtable;
import java.io.Writer;
import java.io.IOException;
import java.util.Date;
/** 演示实现Tag接口的方式来开发标签程序*/
public class HelloTag_Interface implements javax.servlet.jsp.tagext.Tag
{
private PageContext pageContext;
private Tag parent;
public HelloTag_Interface()
{
super();
}
/** 设置标签的页面的上下文*/
public void setPageContext(final javax.servlet.jsp.PageContext pageContext)
{
this.pageContext = pageContext;
}
/** 设置上一级标签*/
public void setParent(final javax.servlet.jsp.tagext.Tag parent)
{
this.parent = parent;
}
/** 开始标签时的操作*/
public int doStartTag()throws javax.servlet.jsp.JspTagException
{
return SKIP_BODY; // 返回SKIP_BODY,表示不计算标签体
}
/** 结束标签时的操作*/
public int doEndTag()throws javax.servlet.jsp.JspTagException
{
try{
pageContext.getOut().write("HelloWorld ! ");
}catch(java.io.IOException e)
{
throw new JspTagException("IO Error:" + e.getMessage());
}
return EVAL_PAGE;
}
/** Release 用于释放标签程序占用的资源*/
public void release(){}
public javax.servlet.jsp.tagext.Tag getParent()
{
return parent;
}
}
编写标签库描述
在WEB-INF\tlds目录下建立一个mytag.tld文件,
<?xml version="1.0" encoding="ISO-8859-1"?>
<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> A tag library exercising SimpleTag handlers</description>
<tlib-version>1.0</tlib-version>
<short-name>examples</short-name>
<uri>/demotag</uri>
<description>
标签学习
</description>
<tag>
<description> Outputs Hello, World</description>
<name>hello_int</name>
<tag-class>com.test.ch13.HelloTag_Integerface</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
标签的真正描述就是黑体字部分。首先要指定标签的名字,然后指定标签的实现类,接下来指定标签体,由于没有标签体(<body-content>),这里就指定位empty。
[b]使用自定义标签[/b]
要使用自定义标签,需要在web.xml描述文件中指定对标签的引用。
<web-app>
.....
<taglib>
<taglib-uri>/demotag</taglib-uri>
<taglib-location>/WEB-INF/tlds/mytag.tld</taglib-location>
</taglib>
</web-app>
万事俱备现在看看JSP中的使用吧
<%@taglib uri="/demotag" prefix="hello"%>
<%@page contentType="text/html; charset=gb2312" language="java"%>
<html>
<head>
<title> Test page</title>
<meta fttp-equiv="Content-Type" content="text/html;charset=gb2312">
</head>
<body>
<p>下面的内容从Taglib中显示:</p>
<p><i><hello:hello_init></p>
</body>
</html>
分享到:
相关推荐
挖掘类标签即算法类标签,需要用算法挖掘用户相关特征。 挖掘类标签开发环节包括:①用户行为特征工程开发、②算法调优、③上线工程化调度等环节,开发周期较长。
JSTL 以及自定义标签开发相关 JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out、set、remove、catch 2.流程控制标签:if、choose、when、otherwise 3.循环标签:forEach、forTokens 4.URL...
Java自定义标签开发是Java服务器页面(JSP)技术中的一种高级特性,它允许开发者创建自己的标签库,以提供更加可重用、可维护和可扩展的代码。本资源包包含的内容涵盖了Java自定义标签的各个方面,从基础概念到实际...
JSTL,全称为JavaServer Pages Standard Tag Library,是Java Web开发中的一种标准标签库,它为JSP页面提供了一套强大的标签...这个"JSTL标签开发必备jar包"正是为了满足这一需求,包含了进行JSTL开发所必需的库文件。
【JSP自定义标签开发使用】知识详解 JSP(JavaServer Pages)是一种动态网页技术,允许开发者在HTML页面中嵌入Java代码。在JSP中,自定义标签的使用可以增强代码的可读性和可维护性,使得复杂的业务逻辑更易于封装...
**一、传统标签开发模式** 1. **标签接口与执行流程** - 标签接口通常是`javax.servlet.jsp.tagext.Tag`,它定义了六个关键方法:`setPageContext()`、`setParent()`、`doStartTag()`、`doEndTag()`、`release()`...
Java JSP 自定义标签开发是Java Web开发中的一个重要组成部分,它允许开发者扩展JSTL提供的标准标签库,以满足特定的业务需求。JSTL(JavaServer Pages Standard Tag Library)包含四个主要的标签库,分别是核心标签...
佳博标签机是一款专业的标签打印设备,而"佳博标签机开发文件.zip_DEMO_佳博 二次开发_佳博 开发文档_佳博标签_佳博标签机开发文件"这个压缩包则包含了该设备的二次开发相关资料,旨在帮助程序员和系统集成商更好地...
**JSP自定义标签开发手册** 在JavaServer Pages (JSP) 技术中,自定义标签是扩展JSP功能的重要手段,它允许开发者创建可重用、可封装的组件,提升代码的可读性和可维护性。本手册将深入探讨JSP自定义标签的开发流程...
**JSP自定义标签开发入门** 在Java Web开发中,JSP(JavaServer Pages)是一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,以实现动态内容的生成。然而,为了提高代码的可读性和可维护性,通常会推荐...
【jsp标签开发的网上书店】是一个专为非Java开发者设计的在线图书销售平台,它利用JSP标签技术实现了用户友好的界面和高效的运营。JSP(JavaServer Pages)是一种动态网页开发技术,允许开发者在HTML页面中嵌入Java...
在Java EE(以前称为J2EE)开发...通过学习和熟练掌握Java EE中的标签开发,开发者可以创建出更加高效、可维护的Web应用,提高开发效率并提升代码质量。理解并运用上述知识点,将有助于你成为一名优秀的Java EE开发者。
而"pbootcms标签生成器 PbootCMS开发助手"就是为了简化这一过程,提升开发效率而设计的工具。 这个标签生成器可以帮助开发者快速创建PbootCMS中的自定义标签,避免手动编写繁琐的PHP代码。通过使用这个工具,你可以...
**JSP标签开发详解** JSP(JavaServer Pages)是一种基于Java的技术,用于创建动态网页。在JSP中,标签是HTML或XML文档中的特殊元素,它们提供了与服务器端交互的能力,增强了页面的功能和可维护性。JSP标签开发...
JAVA自定义标签开发
Java自定义标签开发Tag和tld开发,非常详细的哟
2. **标签开发**:标签开发涉及到设计和编程两个方面。设计部分可能包括使用特定的图形软件创建标签模板,而编程则是通过SDK与打印机通信,将这些设计转化为可打印的指令。开发者需要理解标签布局、字体、颜色、图像...