`
lieyao.pk
  • 浏览: 7597 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

jsp自定义标签库

    博客分类:
  • jsp
阅读更多
1.为什么要使用自定义标签呢?主要是为了取代丑陋的JSP脚本。在HTML页面中插入JSP脚本有如下几个坏处:

JSP脚本非常丑陋,难以阅读。
JSP脚本和HTML代码混杂,维护成本高。
HTML页面中嵌入JSP脚本,导致美工人员难以参与开发。
出于以上3点的考虑,我们需要一种可在页面中使用的标签,这种标签具有和HTML标签类似的语法,
但有可以完成JSP脚本的功能——这种标签就是JSP自定义标签

2.开发自定义标签    2.0
步骤1,开发自定义标签类. javax.servlet.jsp.tagext.SimpleTagSupport
(如果不行的话就到java Build patch 里的Add Libraries 里Server Runtime 配置Tomcat)

  重写doTag()方法,这个方法负责生成页面内容
 
   //获取页面输出流,并输出字符串getJspContext().getOut().write("Hello World");
步骤2,建立TLD(标签库)文件.
TLD是Tag Library Definition的缩写,即标签库定义,文件的后缀是tld,每个TLD文件对应一个标签库,一个标签库中可包含多个标签。
TLD文件也称为标签库定义文件。
建一个*。tld文件里面写:
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>写写信息</shortname>
<uri>/取个名字</uri>
<tag>
<name>随便取个名字</name>
<tag-class>包名.类名(即自定义标签处理类)</tag-class>
<body-content>jsp</body-content>
      </tag>
</taglib>
taglib下有3个子元素:
tlib-version:指定该标签库实现的版本,这是一个作为标识的内部版本号,对程序没有太大的作用。
shortname:该标签库的默认短名,该名称通常也没有太大的用处。
uri:这个属性非常重要,它指定该标签库的URI,相当于指定该标签库的唯一标识。如上面斜体字代码所示,JSP页面中使用标签库时就是根据该URI属性来定位标签库的。
除此之外,taglib元素下可以包含多个tag元素,每个tag元素定义一个标签,tag元素下至少应包含如下3个子元素:
name:该标签库的名称,这个属性很重要,JSP页面中就是根据该名称来使用此标签的。
tag-class:指定标签的处理类,毋庸置疑,这个属性非常重要,指定了标签由哪个Java类来处理。
body-content:这个属性也很重要,它指定标签体内容。该元素的值可以是如下几个:
tagdependent:指定标签处理类自己负责处理标签体。
empty:指定该标签只能作为空标签使用。
scriptless:指定该标签的标签体可以是静态HTML元素、表达式语言,但不允许出现JSP脚本。
JSP:指定该标签的标签体可以使用JSP脚本。
3.引入标记库文件
<%@taglib uri="/web-info/label.tld(指定文件路径,你所建的tld文件)" prefix="随便取个名字"%>

使用:
<%@ taglib uri="/WEB-INF/label.tld"  prefix="a"%>
<a:zhou/>

<!-- 配置标签属性 --> 这个也是写在.tld文件里的
<attribute>
<name>属性名</name>
<required>true</required>
<fragment>true</fragment>
</attribute>
对于有属性的标签,需要为tag元素增加attribute子元素,每个attribute子元素定义一个属性。attribue子元素通常还需要指定如下几个子元素:

name:设置属性名,子元素的值是字符串内容。
required:设置该属性是否为必需属性,该子元素的值是true或false。
fragment:设置该属性是否支持JSP脚本、表达式等动态内容,子元素的值是true或false。
  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics