这几天学习了一下自定义标签.很有意思的东东.
在我看来呀,写一个自定义标签可以分为三步:1:先写一个处理这个标签的JAVA类,我认为这个应该是最重要的,你首先明白你要做的是什么,那么你就要先写这个JAVA类.2:进行编写这个标签的描述文件.3:验证,这一步要编写一个JSP网页来验证你所写的TAG.下面我们用一个实例来告诉大家.
(其实我也是刚刚开始学习的,只是认为这样可以而已,呵呵)
目的:我们写一个在我们的JSP页面上输出一些String的标签,这个标签有二个属性:name 和count,其中count是为了控制要显示的条数的,显示的内容由标签体和name共同决定.这个标签还会对它的标签体进行处理.
第一步:写一个JAVA类 叫:InfoTagSupport
package com.terence.zhaody;
import java.io.IOException;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
//BodyTagSupporte 有一个 bodyContent的成员变量,类型是BodyContent.通过它可以得到很多东西
//-----getEnclosingWriter---用来返回一个JspWriter对象
//-----getReader-----用来返回一个Reader对象
//-----getString----用来返回整个标签体的字符串.
//-----clearBody----清空标签体的处理的结果
public class InfoTagSupport extends BodyTagSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
String userName;
int count;
public InfoTagSupport()
{
super();
}
public void setUserName(String userName)
{
this.userName=userName;
}
public void setCount(int count)
{
this.count=count;
}
public int doStartTag()throws JspTagException
{
System.out.print("in dostarttag");
if(count>0)
{
return EVAL_BODY_TAG;
}
else{
return SKIP_BODY;
}
}
//doAfterBody 这个方法每次执行完标签体都会执行.若返回的是SKIP_BODY 则表示没有标签体要处理了
//若返回的是EVAL_BODY_TAG则表示这个标签休被 在次处理了,并调用下一次的soAfterTag
public int doAfterBody()throws JspTagException
{
if(count-->=1)
{
try
{
JspWriter out=bodyContent.getEnclosingWriter();
out.print(bodyContent.getString()+userName);
out.print("<br>");
}catch(IOException e)
{
e.printStackTrace();
}
return EVAL_BODY_TAG;
}
else
{
return SKIP_BODY;
}
}
public int doEndTag()throws JspTagException
{
return EVAL_PAGE;
}
}
第二步:编写描述文件:mytag.tld
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC
"-//Sun Microsystems,Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.1</tlib-version>
<jsp-version>1.2</jsp-version>
<description>It is just a test</description>
<short-name>mytag</short-name>
<tag>
<name>info</name>
<tag-class>com.terence.InfoTagSupport</tag-class>
<body-content>jsp</body-content>
<attribute>
<name>userName</name>
<required>true</required>
</attribute>
<attribute>
<name>count</name>
<required>true</required>
</attribute>
</tag>
</taglib>
第三步:可以写的一个JSP页面来验证一下,当然还要对web.xml进行配置.
分享到:
相关推荐
### 自定义标签学习笔记 #### 一、什么是自定义标签? 自定义标签是JSP(Java Server Pages)中的一种功能,允许开发者创建可重用的组件。这些组件封装了特定的功能,可以在不同的JSP页面中复用,从而提高开发效率...
本篇学习笔记将深入探讨JSP自定义标签的相关概念、创建方法以及实际应用。 一、概述 1.1 使用简单标签机制 JSP自定义标签提供了类似HTML标签的语法结构,通过自定义标签,开发者可以封装复杂的Java代码,使得页面...
通过学习和实践这一技术,开发者可以更好地利用JSP自定义标签的灵活性,提高Web应用的开发效率和质量。同时,了解源码和工具的运用也是提升编程技能的关键,这能帮助我们深入理解底层机制,从而编写出更加高效和可靠...
通过研究这些文件,你可以理解自定义标签的工作原理,并学习如何在自己的项目中应用它们。 总的来说,自定义标签是JSP中一种非常实用的技术,它允许开发者将复杂的页面逻辑封装起来,提高了代码的可重用性和可维护...
通过深入学习JSP自定义标签的生命周期和`BodyTagSupport`类提供的方法,开发者能够更好地理解和解决问题,从而编写出高效、可靠的自定义标签。如果你在实现过程中遇到具体的错误或疑惑,可以参考`JSP自定义标签各...
总结,JSP自定义标签是提升JSP应用质量的关键技术,通过学习和实践,开发者可以构建出高效、可扩展的Web应用程序。本手册旨在帮助开发者深入理解自定义标签的开发过程,通过实例解析各个步骤,以便于快速上手和应用...
通过阅读源码,我们可以深入理解自定义标签的工作原理,学习如何处理各种标签属性、如何与页面上下文交互、以及如何正确释放资源等。 ### 7. 总结 JSP自定义标签是提高JSP代码可读性和复用性的有效手段。通过创建和...
JSP自定义标签是一种扩展JSP表达式语言和标准标签库的机制,允许开发者创建自己的标签,以简化页面代码和提高代码重用性。自定义标签的创建和使用是JSP开发中一项重要的技能,尤其在需要封装特定业务逻辑或流程时...
首先,创建一个标签处理类,该类继承自BodyTagSupport,这是自定义标签的处理类,可以重写其中的方法来实现具体的逻辑。例如,在这个案例中,重写了doEndTag()方法,该方法在标签体结束时执行。处理类MyReferer中...
Java Web开发是构建基于Web的应用程序的关键技术,涵盖了多种组件和技术,如Servlets、JSP、过滤器、监听器和自定义标签等。本篇主要关注的是Java Web开发中的过滤器、监听器和自定义标签。 1. **过滤器(Filter)*...
在学习JSP自定义标签库(User Taglib)的过程中,我们常常会遇到各种设计和实现的问题。本笔记将概述在创建自定义标签时的关键点,包括标签支持类、TLD文件中的类型定义、数据传递方法以及标签之间的通信方式。 1. ...
- **自定义标签属性**:讲解如何为自定义标签添加属性。 - **自定义动态标签属性**:介绍如何创建动态属性。 - **SimpleTagSupport 类别**:用于创建无体内容的简单标签。 - **ScriptingVariable**:允许在JSP...
4. **自定义标签的增强**:通过提供`TagSupport`和`BodyTagSupport`等类,开发者可以更轻松地创建自定义标签,这些标签可以更好地集成到EL和JSTL中。 5. **分离的Java源文件**:JSP2.0允许将JSP页面编译为单独的...