jsp的自定义标签

来源:互联网 发布:淘宝飞鱼运动卖假货 编辑:程序博客网 时间:2024/05/02 01:24

  自定义标签库是一种非常优秀的表现层组件技术。通过使用自定义标签库,可以在简单的标签中封装复杂的功能。

  目前在工作中,发现他们的项目中使用了Jsp的自定义标签,查了一些资料,整理了篇对初学者能够快速上手的文章。

1.为什么使用自定义标签呢?

主要是在HTML页面中插入JSP脚本有如下几个坏处:

JSP脚本非常丑陋,难以阅读;JSP脚本和HTML代码混杂,维护成本高;HTML页面中嵌入JSP脚本,导致美工人员难以参与开发。

出于以上几点考虑,我们需要一种可以在页面中使用的标签,这种标签具有和HTML标签类似的语法,但有可能完成JSP脚本的功能,这种标签就是JSP自定义标签。

2.开发标签库的几个步骤:

一、开发自定义标签的处理类

  在JSP使用一个简单的标签时,底层实际上由标签处理类提供支持,从而可以通过简单的标签来封装复杂的功能。

自定义标签应该继承一个父类:javax.servlet.jsp.tagext.TagSupport;

如果标签类包含属性,则每个属性都有对应的getter和setter方法。

重写doTag()方法,这个方法负责生成页面内容。

  下面这个是一个实例:先看一下效果图:


public class PageHeadTagThree extends TagSupport {     private Page<T> page;        private Long funmenuId;// 功能菜单IDpublic Page<T> getPage() {return page;}public void setPage(Page<T> page) {this.page = page;}public Long getFunmenuId() {return funmenuId;}public void setFunmenuId(Long funmenuId) {this.funmenuId = funmenuId;}public int doStartTag() {JspWriter out = pageContext.getOut();StringBuffer result = new StringBuffer();result.append("</div><div class=\"btnbox\">"+ "<div class=\"tab-list\">"+ getFunOperatesNew(funmenuId)+ "</div><div class=\"toolbar\"><div id=\"macstyle\" class=\"select-text\">"+ "<select id=\"pageNum\" name=\"pageNum\" onchange=\"flippage(this.value);\">"+ options() + "</select></div>");if (page.isHasPre())result.append("<a href=\"javascript:flippage('"+ (page.getPageNo() - 1)+ "')\" class=\"prevbtn yuan\"><span></span></a>");elseresult.append("<a class=\"prevbtn_no yuan\"><span></span></a>");if (page.isHasNext())result.append("<a href=\"javascript:flippage('"+ (page.getPageNo() + 1)}


二、建立一个*.tld文件,每个*.tld文件对应一个标签库,每个标签库可包含多个标签

  TLD是Tab Library Definition的缩写,即标签库的定义。每个TLD文件对应一个标签库,一个标签库中包含多个标签。TLD文件也称为标签库定义文件。如下:

<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>A tag library exercising SimpleTag handlers.</description>    <tlib-version>1.0</tlib-version>    <short-name>SimpleTagLibrary</short-name>    <uri>/SimpleTagLibrary</uri>    <tag><name>PageHeadTagThree</name><tagclass>ICT.tags.theme.PageHeadTagThree</tagclass><info></info><attribute><name>page</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>funmenuId</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag></taglib>

  标签库定义文件的根元素是taglib,它可以包含多个tag子元素,每个tag子元素都定义一个标签。

  taglib有三个子元素:1.tlib-version,指定该标签库实现的版本,这是一个作为标识的内部版本号,对程序没有太大的作用;2.short-name,该标签库的默认短名;3.uri,这个属性非常重要,它指定标签库的URI,JSP页面中使用标签库就是根据该URI属性来定位标签库的。


三、在JSP文件中使用自定义标签

 在JSP页面中确定指定的标签需要几点:

  1标签库URI,确定使用哪个标签库

  2标签名:确定使用哪个标签

  3导入标签库:使用taglib编译指令导入标签库,就是将标签库和指定前缀关联起来

  4使用标签:在JSP页面中使用自定义标签。

<%@ taglib prefix="aof" uri="/WEB-INF/tld/aofsoft.tld"%>

<div style="height:1px">    <aof:PageHeadTagThree funmenuId="${funmenuId}" page="${page}"/></div>

 在日积月累中,我们应该不断地封装实用的标签,这样能提高开发效率。

0 0
原创粉丝点击