jsp自定义标签 之 继承TagSupport类实现 jsp自定义标签开发

关于jsp的自定义标签使用,这里将只是作为一个应用实例参考,学会自定义标签是怎么写的。至于,我们什么时候才需要去自定义标签,还需继续积累经验,进行总结。我所知道的的两种方式如下:

1、继承TagSupport,写一个tld文件

2、直接写一个tag文件,在jsp中引用(现在经常用到的)

第一种:

a、创建一class DictTag,继承TagSupport,并重写doStartTag与doEndTag方法

public class DictTag extends TagSupport {

StringBuffer optionStr = new StringBuffer();

//该属性是用户在页面使用该自定义标签时,属性所对应的值(可以根据情况在此定义,并提供get/set)

private String category;

private String display_name;

public String getCategory() {

return category;

}

public void setCategory(String category) {

this .category = category;

}

public String getDisplay_name() {

return display_name;

}

public void setDisplay_name(String display_name) {

this.display_name = display_name;

}

//本例中是拼出来的死数据(实际运用中这些数据是要从数据库动态取出来的)

@Override

public int doStartTag() throws JspException {

// 假设的一个Dict集合

// List<Dict> dictList = new ArrayList<Dict>();

//下面的步骤就是开始拼出自定义标签了

//注意:这里的select标签的属性 name 和 id 都是动态得到的(根据用户在页面中应用到此标签时,给它设置的属性)

optionStr.append("<SELECT NAME=" + getCategory() + "ID="

+ getCategory() + ">");

// 具体的options项,将通过数据表取出来,然后循环放入option

if (null != getCategory() && !"".equals(getCategory())) {

if (("GENDER").equals(getCategory())) {

optionStr.append("<OPTION VALUE=");

optionStr.append("1");// 这里到时候换成从SEA_DICT对象中取出来的dict_value

optionStr.append(">");

optionStr.append("male");// 这里对应SEA_DICT表中display_name

optionStr.append("</OPTION>");

optionStr.append("<OPTION VALUE=");

optionStr.append("2");// 这里到时候换成从SEA_DICT对象中取出来的dict_value

optionStr.append(">");

optionStr.append("famale");// 这里对应SEA_DICT表中display_name

optionStr.append("</OPTION>");

optionStr.append("<OPTION VALUE=");

optionStr.append("3");// 这里到时候换成从SEA_DICT对象中取出来的dict_value
jsp自定义标签 之 继承TagSupport类实现 jsp自定义标签开发

optionStr.append(">");

optionStr.append("unknown");// 这里对应SEA_DICT表中display_name

optionStr.append("</OPTION>");

/*这里的是假设以后从数据库中拿数据,就只用写一遍了

* for (Dict dict : dictList) {

* optionStr.append("<OPTION VALUE=");

* optionStr.append(dict.getDictValue());//

* 这里到时候换成从SEA_DICT对象中取出来的dict_value optionStr.append(">");

* optionStr.append(dict.getDisplayName());//

* 这里对应SEA_DICT表中display_name optionStr.append("</OPTION>"); }

*/

} else if (("STATUS").equals(getCategory())) {

optionStr.append("<OPTION VALUE=");

optionStr.append("1");// 这里到时候换成从SEA_DICT对象中取出来的dict_value

optionStr.append(">");

optionStr.append("valid");// 这里对应SEA_DICT表中display_name

optionStr.append("</OPTION>");

optionStr.append("<OPTION VALUE=");

optionStr.append("2");// 这里到时候换成从SEA_DICT对象中取出来的dict_value

optionStr.append(">");

optionStr.append("invalid");// 这里对应SEA_DICT表中display_name

optionStr.append("</OPTION>");

}

}

return super.doStartTag();

}

@Override

public int doEndTag() throws JspException {

// 结束的时候把最后的尾标签加上

optionStr.append("</SELECT>");

try {

pageContext.getOut().println(optionStr.toString());

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return super.doEndTag();

}

}

b、在WEB-INF目录下建一个tld文件来定义tag,如下:

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

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"

" http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>

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

<jsp-version>1.2</jsp-version>

<short-name>html</short-name>

//需要多少个tag就在此定义多少个

<tag>

<name>dict</name>

<tag-class>com.tags.DictTag</tag-class>

<body-content>JSP</body-content>

//下面的attribute表示,定义的标签有三个属性

<attribute>

<name>category</name>

<rtexprvalue>true</rtexprvalue>

</attribute>

<attribute>

<name>dict_value</name>

<rtexprvalue>true</rtexprvalue>

</attribute>

<attribute>

<name>display_seq</name>

<rtexprvalue>true</rtexprvalue>

</attribute>

</tag>

</taglib>

c、自定义标签都写好了以后需要在web.xml中声明,非常简单,只需配置一下

<jsp-config>

<taglib>

<taglib-uri>/WEB-INF/custom_defined</taglib-uri>

<taglib-location>/WEB-INF/custom_defined.tld</taglib-location>

</taglib>

</jsp-config>

  

爱华网本文地址 » http://www.aihuau.com/a/25101011/81368.html

更多阅读

《海天英雄传之九鼎》测评 海天英雄传单机版

游戏名称: 海天英雄传之九鼎 游戏类型: 武侠玄幻RPG 开发公司: 逸海情天运 营 商: 诺亚信息 运营状态: 封测 官方网站: http://www.herogame.cn/账号注册地址/来源:新浪网游评测团【测试机器的配置】CPU:奔腾4 1.7G内存:256*2 SDRAM显卡:GeFor

柳宗元三戒之一:黔之驴

黔无驴,有好事者船载以入。至则无可用,放之山下。虎见之,庞然大物也,以为神。蔽林间窥之,稍出近之,慭慭然,莫相知。  他日,驴一鸣,虎大骇,远遁;以为且噬己也,甚恐。然往来视之,觉无异能者,益习其声,又近出前后,终不敢搏。稍近,益狎,荡倚冲冒,驴不胜怒

声明:《jsp自定义标签 之 继承TagSupport类实现 jsp自定义标签开发》为网友梦与她分享!如侵犯到您的合法权益请联系我们删除