`
anyeeye
  • 浏览: 145487 次
  • 来自: ...
社区版块
存档分类
最新评论

自定义标签

阅读更多
test.jsp
<%@ page contentType="text/html;charset=GB2312" language="java" %>
<%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
<%--<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>--%>
<html>
<head><title>Simple jsp page</title></head>

<body>

<p><B>My first tag prints</B>:
    <mytag:hello/>
    <br>
</p>


<H2>News Portal: Another Tag File Example</H2>
<TABLE border="0">
    <TR valign="top">
        <TD><tags:display color="#ff0000" bgcolor="#ffc0c0" title="Travel"> Last
            French Concorde Arrives in NY<br/> Another Travel Headline<br/> Yet
            Another Travel Headline<br/> </tags:display></TD>
        <TD><tags:display color="#00fc00" bgcolor="#c0ffc0" title="Technology">
            Java for in-flight entertainment<BR> Another Technology Headline<BR>
            Another Technology Headline<BR> </tags:display></TD>
        <TD><tags:display color="#ffcc11" bgcolor="#ffffcc" title="Sports">
            American Football<BR/> NBA<BR/> Soccer<BR/> </tags:display></TD>
    </TR>
</TABLE>

<HR>
<%--<c:set var="times" value="5"/>--%>
<p><B>Reminder:</B></p><br>
<%--<mytag:iteration times="${times}">
    This is the ${sequence} Of ${times} times of reminder<br>
</mytag:iteration>--%>

<br>
<mytag:loop counts="5">
    现在时间是:<%=new java.util.Date().toString()%><br>
</mytag:loop>
<br>

<mytag:HTMLEncode>
<Hello  ,  Simple sample>
</mytag:HTMLEncode>

</body>
</html>

BodyTagExample.java
public class BodyTagExample
        extends BodyTagSupport
{
    private int counts;

    public BodyTagExample()
    {
        super();
    }

    public void setCounts( int counts )
    {
        this.counts = counts;
    }

    public int doStartTag() throws JspTagException
    {
        System.out.println( "doStartTag..." );
        if ( counts > 0 )
        {
            return EVAL_BODY_INCLUDE;
        }
        else
        {
            return SKIP_BODY;
        }
    }

    public void setBodyContent( BodyContent bodyContent )
    {
        System.out.println( "setBodyContent..." );
        this.bodyContent = bodyContent;
    }

    public void doInitBody() throws JspTagException
    {
        System.out.println( "doInitBody...." );
    }

    public int doAfterBody() throws JspTagException
    {
        System.out.println( "do After body..." + counts );
        if ( counts > 1 )
        {
            counts--;
            return EVAL_BODY_AGAIN; //EVAL_PAGE;
        }
        else
        {
            return SKIP_BODY;
        }
    }

    public int doEndTag() throws JspTagException
    {
        System.out.println( "do end Tag..." );
        try
        {
            if ( bodyContent != null )
            {
                bodyContent.writeOut( bodyContent.getEnclosingWriter() );
            }
        }
        catch ( java.io.IOException e )
        {
            throw new JspTagException( "IO Error:" + e.getMessage() );
        }
        return EVAL_PAGE;
    }
}

HelloTag.java
public class HelloTag extends SimpleTagSupport
{
    public void doTag() throws JspException, IOException
    {
        getJspContext().getOut().write( "This is my first tag!" );
    }
}

jsp2-example-taglib.tld
<?xml version="1.0" encoding="GB2312" ?>

<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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
        version="2.0">

    <!--
整个标签库标记信息
tlibversion    标签库版本号。是一个点式十进制数,最多为4组小数点分隔的数字组成。
jspversion    标签库所需的JSP规范最低版本。例如JSP1.1
shortname    标签库的缩写名。JSP可以使用该名字作为库中标签的缺省前缀。
uri    标签库唯一URI的元素。典型URL位置来自可下载taglib的位置。
info    标签库描述信息。
每个标签处理器及其属性
tag    在TLD中加入标签,描述组成库的每个标签。
name    与标签库的名字前缀一起使用的标签的名字, 是JSP容器唯一的标签标识。
tagclass    实现标签的标签处理器类的全名。
teiclass    标签附加信息(TEI)类的全名。TEI类给出关于标签处理器创建变量及对标签司性执行的任意有效性验证的信息。
bodycontent    描述标签处理器如何使用标签体的内容。有三种取值:
    empty:表示标签体必须为空;
    JSP:表示脚本元素和模板及其它标签一样被评估。
    tagdependent:体内容被原封不动写入BodyContent,其它脚本元素以源码形式出现,而不被JSP容器解释。
info    标签的人工可读描述性信息。
attribute    使用标签时被编码的属性信息。用于定义标签的属性。
    属性名:属性的名字。
    true|false:属性在标签用到的位置是否要被编码。
    true|false:属性值能否用表达式指定。

    -->

    <description>jsp2 Simpletag Library</description>
    <display-name>Simpletag</display-name>
    <tlib-version>1.1</tlib-version>
    <short-name>tag</short-name>
    <!--<uri>http://community.ceci.com/news</uri>-->

    <tag>
        <description>Prints this is my first tag</description>
        <name>hello</name>
        <tag-class>jsp2.examples.simpletag.HelloTag</tag-class>
        <body-content>empty</body-content>
    </tag>


    <tag>
        <name>iteration</name>
        <tag-class>jsp2.examples.simpletag.IterationSimpleTag</tag-class>
        <!--<body-content>scriptless</body-content>-->
        <body-content>JSP</body-content>
        <!--<description>Iteration Tag</description>-->
        <!--   如果在标签定义文件中用了variable,会生成变量定义和变量赋值的代码  -->
        <variable>
            <description>Current iterationnumber</description>
            <name-given>sequence</name-given>
        </variable>
        <attribute>
            <name>times</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>

    <!--  迭代标签 -->
    <!--
    tag中的name属性:定义了我们的tag名称,在后面会用到。
    tag中的tagclass属性:指定了我们这个tag的实现类。
    tage中的bodycontent属性:指定我们的页面内容是什么性质的。(注意:在jsp开发中这里必须写JSP)
    tage中的attribute属性:定义了我们的这个tag可能有的属性。
    attribute中的name属性:指定了属性的名称。它和我们类中定义的“int counts;”必须一样,并且在类中还必须包含一个setCounts(int counts)方法,否则这个属性就不能设置。
    attribute中的required属性:表示这个属性是否是必须的。
    attribute中的rtexprvalue属性:表示这个属性是否可以用JSP的程序段的结果输出。
    -->

    <tag>
        <name>loop</name>
        <tag-class>jsp2.examples.simpletag.BodyTagExample</tag-class>
        <body-content>JSP</body-content>
        <attribute>
            <name>counts</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>

    <!--  HTMLEncode -->
    <tag>
        <name>HTMLEncode</name>
        <tag-class>TransformerTag.HTML_FormatTag</tag-class>
        <body-content>JSP</body-content>
    </tag>

</taglib>

display.tag
<%@ attribute name="color" %>
<%@ attribute name="bgcolor" %>
<%@ attribute name="title" %>
<TABLE border="0" bgcolor="${color}">
<TR>
    <TD><B>${title}</B></TD>
</TR>
<TR>
    <TD bgcolor="${bgcolor}">
        <jsp:doBody/>
    </TD>
</TR>
</TABLE>

greetings.tag
Hello there. How are you doing?

web.xml
<?xml version="1.0" encoding="UTF-8"?>

<web-app 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 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
         version="2.4">


    <display-name>tag-jsp</display-name>

    <jsp-config>
        <jsp-property-group>
            <description>JSP Configurations</description>
            <display-name>JSPConfig</display-name>
            <url-pattern>*.jsp</url-pattern>
            <el-ignored>false</el-ignored>
            <page-encoding>GBK</page-encoding>
            <scripting-invalid>false</scripting-invalid>
        </jsp-property-group>
    </jsp-config>

    <welcome-file-list>
        <welcome-file>/test.jsp</welcome-file>
    </welcome-file-list>
</web-app>
分享到:
评论

相关推荐

    mybatis自定义标签.zip

    在实际开发中,有时我们需要根据项目需求实现特定的功能,比如动态生成SQL或者进行复杂的业务逻辑处理,这时MyBatis的自定义标签功能就显得尤为重要。 自定义标签是MyBatis框架的一大特色,它允许我们扩展XML映射...

    struts2 自定义标签

    在Struts2中,自定义标签是提高代码可读性和可维护性的重要工具。本文将深入探讨Struts2自定义标签的实现机制、优点以及如何在实际项目中进行应用。 一、Struts2自定义标签的概念 自定义标签是JSP的一种扩展,允许...

    jsp 自定义标签实例

    在JavaServer Pages (JSP) 技术中,自定义标签是扩展JSP功能的关键手段,它允许开发者创建可重用的组件,提高代码的可维护性和可读性。本实例将深入探讨如何实现一个简单的JSP自定义标签。 首先,自定义标签的实现...

    tp自定义标签

    在ThinkPHP中,自定义标签(Tag Lib)是一种强大的特性,允许开发者扩展模板引擎的功能,使其更符合项目需求。下面将详细解释如何在ThinkPHP 3.0版本中实现自定义标签及其使用方法。 1. **自定义标签的作用** ...

    一个用于分页的自定义标签

    一个“自定义标签”是开发者为了扩展JSP(JavaServer Pages)功能而创建的,它允许我们封装复杂逻辑并将其作为可重用的组件。本项目提供了一个用于分页的自定义标签,适用于那些需要在网页上进行数据分页展示的应用...

    ckeditor4.0自定义标签操作详细步骤及修改后编辑器jar包下载

    本篇文章将详细阐述如何在CKEditor 4.0中进行自定义标签操作,并提供经过修改的编辑器JAR包供下载。 CKEditor 4.0是一款开源的JavaScript富文本编辑器,它支持多种浏览器环境,提供丰富的功能和高度可定制性。...

    jsp2.0 自定义标签和自定标签函数

    在Java Server Pages (JSP) 2.0版本中,自定义标签和自定义标签函数极大地扩展了JSP开发的灵活性和可重用性。这些特性允许开发者创建可复用的组件,使代码更加清晰,易于维护。本文将深入探讨JSP 2.0中的自定义标签...

    spring自定义标签例子

    在Spring框架中,自定义标签是一项非常实用的功能,它允许我们创建符合XML语法的自定义元素,以便在配置文件中更方便地表达业务逻辑。在"spring自定义标签例子"这个项目中,我们可以深入理解这一特性,特别是通过...

    用js实现自定义标签

    本案例通过JavaScript来实现自定义标签的功能。具体而言,它通过遍历文档中的内容,将自定义的标签转换为标准的HTML标签,并应用相应的样式。下面我们将详细介绍其实现细节。 #### 自定义标签代码解析 ```...

    jsp 自定义标签的使用

    在JavaServer Pages (JSP) 技术中,自定义标签是提高代码可重用性和模块化的重要手段。自定义标签允许开发者创建自己的组件,这些组件可以像HTML标签一样在页面上使用,使得代码更加清晰易读。本教程将深入探讨JSP...

    struts实现自定义标签

    在 Struts 中,自定义标签是提供一种灵活的方式,使得视图层(通常为 JSP 页面)能够更好地与业务逻辑交互,从而提高代码的可读性和可维护性。本文将深入探讨如何在 Struts 中实现自定义标签。 一、自定义标签概述 ...

    JSP自定义标签学习笔记

    在JSP(JavaServer Pages)开发中,自定义标签是一种扩展JSP功能的强大工具,它允许开发者创建可重用的代码组件,以提高代码的可读性和可维护性。本篇学习笔记将深入探讨JSP自定义标签的相关概念、创建方法以及实际...

    html自定义标签的使用

    首先,创建自定义标签的目的是为了增加语义化,使网页内容更易于机器理解,同时提高人类阅读的清晰度。例如,可以定义`&lt;article&gt;`、`&lt;sidebar&gt;`等标签来明确内容区块的类型。自定义标签遵循驼峰式命名规则,如`...

    自定义标签,标签实例,ppt

    在Java Web开发中,自定义标签(Custom Tags)是一个强大的工具,它允许开发者创建可重用的组件,提高代码的可读性和维护性。自定义标签是JSP标准标签库(JSTL)的一种扩展,它能将复杂的业务逻辑封装起来,使JSP...

    java自定义标签.......java自定义标签

    Java自定义标签是JavaServer Pages (JSP)技术的一个强大特性,它允许开发者扩展JSP的标准标签库,创建自己的定制化标签,以提高代码的可读性和可维护性。自定义标签可以封装复杂的业务逻辑或者视图呈现,使得页面...

    由浅到深详细讲解JSP自定义标签

    JSP(JavaServer Pages)自定义标签是JSP技术中一个重要的特性,允许开发者创建可重用的、自定义的组件,从而提高代码的可读性和可维护性。本文将深入讲解JSP自定义标签的相关概念、格式、处理过程以及创建和使用...

    jsp权限控制,jsp自定义标签实现

    使用jsp自定义标签的功能实现权限的控制。(如果用户没有某个模块的删除权限,就不现实这个删除按钮) 在整个项目中所有的页面都可以引入自定义的标签去做到权限的控制。 自定义标签文件 删除 可以控制页面中的每...

    Freemarker 自定义标签 简单案例

    在这个"Freemarker自定义标签简单案例"中,我们将深入探讨如何利用Freemarker进行模板设计,并结合自定义标签来增强模板的功能。 首先,让我们理解Freemarker的基础知识。Freemarker是一个与语言无关的模板引擎,它...

    用户自定义标签.

    JSP自定义标签是用户定义的JSP语言元素,可以看成是一种通过标签处理器生成基于XML脚本的方法。自定义标签在功能上和逻辑上都与JavaBean类似,都是一组可重用的组件代码。相较于JavaBean,自定义标签可以使Web开发者...

Global site tag (gtag.js) - Google Analytics