简单标签

 

简单标签

实现了SimpleTag接口的标签通常成为简单标签

setJspContext方法:用于把jsp页面的pageContext对象传递给标签处理器对象,从而通过pageContext对象获得web编程中的其他的八个内置对象(request、response、….)

setParent方法:用于把父标签处理对象传递给当前标签处理器对象

getParent方法:用于获得当前标签处理器对象的父标签

setJspBoay方法:用于把代表标签体的fragment对象传递给比群殴前处理器对象

dotage方法:用于完成所有的标签逻辑,包括输出、迭代、修改标题内容等。

                              在此方法中可以跑出javax.jspSkipPageException异常,用于通知web容器不再执行jsp页面中位于结束标记或面的内容,这等小雨传统标签的doEndTag、方法中返回Tag.SKIP_AGE敞亮的情况。

JspFragment类

·此类的实例代表一段符合jsp语法的jsp代码,这段代码

中不能包含脚本元素

·weeb容器在处理简单标签时,会把标签内容用一个jspfargment对象表示,并调用标签处理器对象的setJspBody方法把JspFragment对象传递给标签处理器对象,

                            JspFragment类中只定义了两个方法:

                                   getJspContext方法、invokie(java.io.Writer out)

invoke方法详解

 

简单标签的应用

1、  利用简单标签完成自定义标签以后的jsp页面是否进行显示

创建一个标签处理器

//利用自定义标签完成标签以后的内容是否显示

    @Override

    public void doTag() throws JspException, IOException {

       // TODO Auto-generated method stub

       //JspFragment jf=this.getJspBody();//获取标签体

       //处理标签体

       //jf.invoke(null);//到客户端显示,如果没有标签体这句话可能会抛异常

       throw new SkipPageException();//利用此异常来控制是否显示自定义标签以后的jsp页面

}

在tld中进行描述

<tag>

  <name>demo7</name>

  <tag-class>com.hbsi.web.tag.SimpleTagDemo7</tag-class>

  <body-content>scriptless</body-content>

 </tag>

2、  利用简单标签完成迭代

创建一个标签处理器

@Override

    public void doTag() throws JspException, IOException {

       // TODO Auto-generated method stub

       JspFragment jf=this.getJspBody();

       for(int i=0;i<count;i++){

           jf.invoke(null);

       }

}

增加一个属性:count

private int count;//要和jsp中的属性名称一致

   

    public void setCount(int count) {

       this.count = count;

}

在tld文件中进行描述

<tag>

  <name>demo8</name>

  <tag-class>com.hbsi.web.tag.SimpleTagDemo8</tag-class>

  <body-content>scriptless</body-content>

  <attribute>

    <name>count</name>

    <required>true</required>

    <rtexprvalue>true</rtexprvalue>

  </attribute>

 </tag>

3、  简单标签控制标签体的内容进行修改

编写处理器

 

    @Override

    public void doTag() throws JspException, IOException {

       // TODO Auto-generated method stub

       JspFragment jf=this.getJspBody();//获取标签体内容

      

       StringWriter sw=new StringWriter();//得到一个流对象

       jf.invoke(sw);//将标签体的内容写入到流中

      

       String content=sw.toString().toUpperCase();//大小写进行转换

      

       JspWriter jw=this.getJspContext().getOut();//获取到输出流

       jw.write(content);//将转换后的内容输出

    }

Tld文件描述

<tag>

  <name>demo9</name>

  <tag-class>com.hbsi.web.tag.SimpleTagDemo9</tag-class>

  <body-content>scriptless</body-content>

 </tag>

 

 

 

二、带属性的标签

       <csdn:demo8 count=”9”>

 

</csdn:demo8>

 

标签处理器中一定也得包含一个私有的属性count和setter方法(给属性赋值)

Dotage方法包含业务逻辑代码

 

Tld文件中

       <Tag>

              <name></name>

              <tag-class></tad-class>

              <body-content></body-content>

              <attirbute>

       <name></name>

       <requeired></requeired>//是否是必须的

<rtexprvalue></rtexprvalue>//是否可以为el表达式运行时表达式计算:<csdn:demo count=”${date}”>或者是<%=date+1%>

</attribute>

</Tag>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值