JSP2自定义标签库技术

1、概述:
    JSP本质其实仍然是Servlet,部署JSP后,服务器会将其自动转化成Servlet进行运行。用JSP取代Servlet的原因是利用Servlet实现用户界面比较繁琐,将大量的静态HTML代码穿插于Java代码中增加了代码维护工作的难度,并且也不利于前端开发人员和美工人员参与项目开发。
    JSP 2 标准为开发者提供了自定义标签库的功能。使用自定义标签库的目的跟使用JSP的目的类似,为了使系统的界面开发和逻辑处理解耦,虽然使用JSP页面可以将界面开发和负责处业务逻辑的Servlet相分离,但是JSP页面中依然存在由Java代码构成的JSP脚本。引入自定义标签库技术使得开发者可以用自定义的标签来取代JSP页面中的Java脚本。使得前端的开发更加简洁,也更容易维护。
    下文现总结了自定义标签库开发步骤。

2、基本用法:
    JSP 2 标准下定义自定义标签库有以下几个步骤:
① 开发自定义标签处理类。
② 编写标签库配置文件,格式为*.tld,一个配置文件配置了一个标签库,而一个标签库中可以拥有多个标签。
③ 在JSP页面中使用该标签。
   
具体步骤如下:
·开发自定义标签处理类:
    当JSP页面遇到自定义标签时,服务器会根据配置文件查找标签处理类来处理标签,每一个标签处理类定义了一个标签的处理方法。
    自定义标签处理类要求继承一个父类:javax.servlet.jsp.tagext.SimpleTagSupport。同时还有如下2个要求:
    ① 如果标签类中包含属性,每个属性必须要有GetterSetter方法。 
    ② 重写doTag方法,这个方法定义了标签的处理过程。
    样例如下:
package tag;

import java.io.IOException;

import javax.servlet.jsp.tagext.SimpleTagSupport;

public class Tag1 extends SimpleTagSupport{
     
    public void doTag() throws IOException {
        getJspContext().getOut().write("<h1>tag test</h1>");
    }
}

    为了简洁,我们这里doTag方法中仅仅有一行代码,向页面输出“tag test”的字样,通过getJspContext().getOut()可以得到JSP页面的输出流,然后使用write方法输入文本文件。这样,就定义了一个标签处理类。

·编写标签库配置文件 *.tld:
    配置文件本质上是一个标准的XML文件。该文件给出了一个标签库的配置信息,其中包含了多个标签的配置信息。这里给出样例如下:
<?xml version="1.0" encoding="GBK"?>

<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 web-jsptaglibrary_2_0.xsd"
	version="2.0">
	<tlib-version>1.0</tlib-version>
	<short-name>mytaglib</short-name>
	<!-- 定义该标签库的URI -->
	<uri>abc</uri>
	<tag>
		<name>tag1</name>
		<tag-class>tag.Tag1</tag-class>
		<body-content>empty</body-content>
	</tag>
</taglib>


mytaglib.tld文件定义了一个新的标签库,其中配置了一个标签tag1,文件中各个参数的意义如下:
        (1) 根元素是<taglib>,代表一个标签库,其中主要有3个子元素:
① <tlib-version> 该元素指明了标签库实现的版本,表示标签库内部的版本号,这个标签对程序没有太大的作用
 <short-name> 该元素指定了标签库的默认短命,该名称也没有太大的用处。
③ <uri> 这个子元素非常重要,它指明了该标签库的uri,是标签库的唯一标识,JSP页面中会使用uri来定位标签库。这里我们定义为:abc
        (2) 标签库中的每个标签用一个<tag>子元素来配置一个标签,它包含以下子元素:
① <name> 该元素指明了标签的名称。
② <tag-class> 该元素指明了标签的处理类,这里我们配置了上文中实现的类Tag1
③ <body-content> 该元素指定了标签体的具体内容,这里我们设定为empty,表示该标签没有标签体,只能以空标签的形式使用,该元素还可以指定以下的值:
tagdependent:指定标签处理类自己负责处理标签体。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值