jsp的自定义标签

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

  目前在工作中,发现他们的项目中使用了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;// 功能菜单ID
		
		public 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\" οnchange=\"flippage(this.value);\">"
						+ options() + "</select></div>");
		if (page.isHasPre())
			result.append("<a href=\"javascript:flippage('"
					+ (page.getPageNo() - 1)
					+ "')\" class=\"prevbtn yuan\"><span></span></a>");
		else
			result.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>

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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值