自定义标签

例子:使用random标签产生1个10至200之间的随机数

1.继承TagSupport,实现doStartTag()方法

 

package org.fanzone.tag;

 

import java.io.IOException;

import java.util.Random;

 

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.tagext.TagSupport;

 

@SuppressWarnings("serial")

public class RandomTag extends TagSupport {

 

private int min = 0;

private int max = Integer.MAX_VALUE;

 

public int getMin() {

return min;

}

 

public void setMin(int min) {

this.min = min;

}

 

public int getMax() {

return max;

}

 

public void setMax(int max) {

this.max = max;

}

 

@Override

public int doStartTag() throws JspException {

Random random = new Random();

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

try {

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

} catch (IOException e) {

e.printStackTrace();

}

return super.doStartTag();

}

}


 

2.编写TLD(Tag Library Descriptor--标签库描述符)

<?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>Userdefined TagLib</description>

<tlib-version>1.0</tlib-version>

<short-name>ct</short-name>

<uri>http://org.mars.com/tag</uri>

<tag>

<description>Random Number</description>

<name>random</name>

<tag-class>org.mars.tag.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>

 -------------------------------------------------------------------

要想使一个自定义标签正常工作,必须在TLD文件中对该标签进行配置。在TLD文件中主要配置如下两部分内容: 标签库的配置信息 标签库中具体标签的配置信息 标签库的配置信息主要包括如下的内容: 标签库的版本:使用<tlib-version>标签设置。 正常使用标签库中的标签所需要的最低JSP版本:使用<jsp-version>标签设置。 标签库的默认前缀:使用<short-name>标签设置。 标签库的URI:使用<uri>标签设置。 标签库的描述信息:使用<description>标签设置。 标签的配置信息主要包括如下的内容: 标签名:使用<name>标签设置。 标签对应的Java类:使用<tag-class>标签设置。 标签体的类型:使用<body-content>标签设置。 标签的描述信息:使用<description>标签设置。 标签属性的信息:每一个标签属性对应一个<attribute>标签。在<attribute>标签中可以指定标签名(使用<name>标签设置)、该属性是否必须指定(使用<required>标签设置)、该属性是否支持动态属性值(使用<rtexprvalue>标签指定)等配置信息。

---------------------------------------------------------------------

3.测试标签

<%@ page language="java" contentType="text/html; charset=UTF-8"%>

<%@ taglib  uri="http://org.mars.com/tag" prefix="ct"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<ct:random min="1" max="200"/>

</body>

</html>

 

你可能感兴趣的:(自定义标签)