Jsp自定义标签

 

Jsp页面中通过xml语法格式被调用,当JSP引擎将JSP页面翻译成Servlet时,就将这些调用转换成执行相应的Java代码

 

例子:实现在页面输出一个指定范围的随机数

标签:<ct:random min="1" max="100"/>

 

 

第一步:编写标签类:

实现标签类的方法有很多,最简单的方法是从javax.servlet.jsp.tagext.TagSupport类继承

java代码:

package com.test.mytag

public calss RandomTag extends TagSupport{

  private int min=0;//标签中的属性min,默认值设置为0

 

  private int max=Integer.MAX_VALUE;//标签中的属性max,默认值设置为int类型的最大值

 

  public void setMin(int min){

     this.min=min;

  }

  public void setMax(int max){

     this.max=max

  }

 

  public int doStartTag()throws JspException{

      try{

          Random random=new Random();

          int result=min+random.nextInt(max-min);

          pageContext.getOut().write(String.valueOf(result));

          //输出随机数,pageContext变量是在TagSupport类中定义的一个类变量,该变量通过TagSupport类中的

          //setPageContext方法赋值,setPageContext方法是在Tag接口中定义的,

          //而TagSupport实现了Tag接口的setPageContet方法,

          //Servlet容器在调用doStartTag方法前会先调用setPageContext方法

 

      }catch(IOException e){

         System.out.println("error!");

      }

      //TagSupport类的doStartTag方法默认返回SKIP_BODY,表示忽略自定义标签体

      return super.doStartTag();

  }

 

}

 

 

第二步:

编写标签库描述符文件(TLD文件)

要想自定义标签正常工作,必须在TLD文件中对该标签进行配置:

在WEB-INF目录中建一个jsp-taglib.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/web-jsptaglibrary_2.0.xsd" version="2.0">

<description>自定义标签库</descrption>

<tlib-version>1.1</tlib-version>

<short-name>ct</short-name><!--标签前缀-->

<uri>http://www.javaeye.net</uri>

<taglib>

<tag>

<desrption>产生一个指定范围的随机数</desrption>

<name>random</name>

<tag-class>com.test.mytag.RandomTag</tag-class>

<body-content>empty</body-content><!--表示标签体类型不支持标签体-->

<attribute>

<name>min</name>

<required>false</required>

<rtexprvalue>false</rtexprvalue>

</attribute>

<attribute>

<name>max</name>

<required>false</required>

<rtexprvalue>false</rtexprvalue>

</attribute>

</tag>

</taglib>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值