2_Jsp标签_传统标签功能简介

1传统标签接口关系:                                  

2功能简介                                                  

3代码测试                                                  

  1.标签体内容控制 StartTag

package com.tag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

public class EvalBodyTag extends TagSupport {
    private boolean show;
    public void setShow(boolean show){
        this.show = show;

    }
    public int doStartTag() throws JspException {
        // TODO Auto-generated method stub
        if(show==true)
            return super.EVAL_BODY_INCLUDE;
        else
            return super.SKIP_BODY;
    }

}

EvalBodyTag

  2.标签结束后的处理  EndTag

package com.tag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

public class ShowPageTag extends TagSupport {
    private boolean show;
    public void setShow(boolean show){
        this.show = show;
    }
    @Override

    public int doEndTag() throws JspException {
        System.out.println(show);
        if(show==true)
            return super.EVAL_PAGE;
        else
            return super.SKIP_PAGE;
    }
    @Override
    public int doStartTag() throws JspException {
        return super.EVAL_BODY_INCLUDE;
    }

}

ShowPageTag

  3. 标签内容处理完后--doAfterBody

package com.tag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.IterationTag;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;

public class RepeatTag extends TagSupport{

    private int count;
    public void setCount(int count){
        this.count = count;
    }
    public int doAfterBody() throws JspException {
        count--;
        if(count>0)
            return RepeatTag.EVAL_BODY_AGAIN;
        else
            return RepeatTag.SKIP_BODY;
    }

    public int doStartTag() throws JspException {
        return Tag.EVAL_BODY_INCLUDE;
    }

}

RepeatTag

 4. 内容格式化

package com.tag;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;

public class BodyContentTag extends BodyTagSupport {

    @Override
    public int doEndTag() throws JspException {
        BodyContent body = this.getBodyContent();
        String bc = body.getString();
        bc = bc.toUpperCase();
        try {
            this.pageContext.getOut().write(bc);
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
        return super.doStartTag();

    }

    @Override
    public int doStartTag() throws JspException {
        return super.EVAL_BODY_BUFFERED;
    }

}

BodyContentTag

4 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 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>SimpleTagLibrary</short-name>
    <uri>http://self-tag-with-hello</uri>

    <tag>
        <name>helloWorld</name>

        <tag-class>com.tag.HelloWorldTag</tag-class>
        <body-content>empty</body-content>
          <attribute>
                <name>name</name>
                <required>true</required>
                <rtexprvalue>true</rtexprvalue>
          </attribute>
    </tag>

    <tag>
        <name>evalbody</name>
        <tag-class>com.tag.EvalBodyTag</tag-class>
        <body-content>JSP</body-content>
        <attribute>
            <name>show</name>
            <required>true</required>
        </attribute>

    </tag>

    <tag>
        <name>showpage</name>
        <tag-class>com.tag.ShowPageTag</tag-class>
        <body-content>JSP</body-content>
        <attribute>
            <name>show</name>
            <required>true</required>
        </attribute>

    </tag>

      <tag>
        <name>repeatbody</name>
        <tag-class>com.tag.RepeatTag</tag-class>
        <body-content>JSP</body-content>
        <attribute>
            <name>count</name>
            <required>true</required>
        </attribute>

    </tag>
      <tag>
        <name>changeContent</name>
        <tag-class>com.tag.BodyContentTag</tag-class>
        <body-content>JSP</body-content>

    </tag>

</taglib>  

MyTag

5页面结果展示                                           

2_Jsp标签_传统标签功能简介

时间: 2024-10-04 23:38:50

2_Jsp标签_传统标签功能简介的相关文章

3_Jsp标签_简单标签_防盗链和转义标签的实现

一概念 1防盗链 在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件,通过referer,网站可以检测目标网页访问的来源网页.有了referer跟踪来源就好办了,这时就可以通过技术手段来进行处理,一旦检测到来源不是本站即进行阻止或者返回指定的页面. 2页面中的转义字符 在HTML中,定义转义字符串的原因有两个:第一个原因是像“<”和“>”这类符号已经用来表示HTML标签,因此就不能直接当作文本中的符号来使用.为了在HTML文档中使用这些符号,就

(一)自定义标签之传统标签

(1)首先我们看看传统便签的类结构图,其中包括了简单标签 由上图可知,传统标签较为复杂,然而简单标签较为简单. (2)开发流程 (1)写一个类实现Tag接口 (2)写一个tld文件,描述写好的类 (3)在jsp页面中引入tld 实例:在jsp页面用自定义的标签输出ip地址 继承tag接口类 package tag; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp

javaEE(6)_自定义标签&amp;JSTL标签(JSP Standard Tag Library)

一.自定义标签简介 1.自定义标签主要用于移除Jsp页面中的java代码,jsp禁止出现一行java脚本. 2.使用自定义标签移除jsp页面中的java代码,只需要完成以下两个步骤: •编写一个实现Tag接口的Java类(标签处理器类). •编写标签库描述符(tld)文件,在tld文件中对标签处理器类进行描述. 3.快速入门:使用标签输出客户机IP //java类 public class ViewPortTag extends TagSupport{ @Override public int

JSP自定义标签——传统标签

同JSP标签一样,自定义标签主要用于移除JSP页面中的Java代码,可以看到我们在JSP中其实是禁止使用Java脚本的,任何要想通过Java代码实现的功能都必须以标签形式来处理,可以使用JSP标签,JSTL标签,EL函数,或者自定义标签. 自定义标签分为传统标签和简单标签,简单标签是Sun公司为减低自定义标签技术的学习难度而定义的,对于简单标签请看下一篇博客.本文先来学习传统自定义标签. 使用传统自定义标签需要满足以下两个步骤: ① 编写一个实现Tag接口(实际上我们更常的是继承Tag接口的实现

JSP传统标签开发

1.标签技术的API类继承关系 1).JspTag接口是所有自定义标签的父接口 该接口中没有任何属性和方法,只有两个直接子接口,Tag接口和SimpleTag接口,把实现Tag接口的自定义标签叫做传统标签,把实现SimpleTag接口的自定义标签叫做简单标签 2).Tag接口,所有传统标签的父接口,两个重要方法(doStartTag.doEndTag)和四个常量(EVAL_BODY_INCLUDE.SKIP_BODY.EVAL_PAGE.SKIP_PAGE) WEB容器在解释执行JSP页面过程中

JSTL标签库,自定义标签

JSTL 简介 JavaServer Pages Standard Tag Library由JCP(Java Community Process)指定标准 提供给 Java Web 开发人员一个标准通用的标签函数库 和 EL 配合来取代传统直接在页面上嵌入 Java 程序(Scripting)的做法,以提高程序可读性.维护性和方便性 JSTL1.1安装 下载 JSTL 主要由Apache组织的Jakarta Project 实现 http://tomcat.apache.org/taglibs/

传统标签库功能

1 package cn.itcast.web.tag; 2 3 import javax.servlet.jsp.JspException; 4 import javax.servlet.jsp.tagext.IterationTag; 5 import javax.servlet.jsp.tagext.Tag; 6 import javax.servlet.jsp.tagext.TagSupport; 7 8 //控制表前提执行5次 9 public class TagDemo3 exten

javaweb学习总结(二十四)——jsp传统标签开发

一.标签技术的API 1.1.标签技术的API类继承关系 二.标签API简单介绍 2.1.JspTag接口 JspTag接口是所有自定义标签的父接口,它是JSP2.0中新定义的一个标记接口,没有任何属性和方法.JspTag接口有Tag和SimpleTag两个直接子接口,JSP2.0以前的版本中只有Tag接口,所以把实现Tag接口的自定义标签也叫做传统标签,把实现SimpleTag接口的自定义标签叫做简单标签. 2.2.Tag接口 Tag接口是所有传统标签的父接口,其中定义了两个重要方法(doSt

javaweb学习总结(二十四)——jsp传统标签开发【转】

原文地址:http://www.cnblogs.com/xdp-gacl/p/3916946.html 一.标签技术的API 1.1.标签技术的API类继承关系 二.标签API简单介绍 2.1.JspTag接口 JspTag接口是所有自定义标签的父接口,它是JSP2.0中新定义的一个标记接口,没有任何属性和方法.JspTag接口有Tag和SimpleTag两个直接子接口,JSP2.0以前的版本中只有Tag接口,所以把实现Tag接口的自定义标签也叫做传统标签,把实现SimpleTag接口的自定义标