JSP的自定义标签(一)

1. 导言

最近在深圳的某家知名企业上班,接触到支付的系统。系统中的框架都是公司自己架构的,所以包括jsp页面中用到的标签也是自定义的,对于不了解JSP自定义标签的同事来说,会觉得公司的技术太牛了,但是当你学习了JSP自定交标签之后,会不会这样认为,就看你自己了。下面笔者将讲解JSP的自定义标签,主要是讲JSP2的自定义标签。

2. 开发普通自定义的标签

2.1 开发步骤

1)        开发自定义标签处理类

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

3)        在JSP文件中使用自定义标签

2.2开发实例(普通)

1)        创建标签类HelloWorldTag.java.这个类要继承一个父类javax.servlet.jsp.tagext.SimpleTagSupport.,同时,标签的要求如下:

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

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

 public class HelloWorldTag extends SimpleTagSupport
{
	// 重写doTag()方法,该方法为标签生成页面内容
	public void doTag()throws JspException,
		IOException
	{
		// 获取页面输出流,并输出字符串
		getJspContext().getOut().write("Hello World "
			+ new java.util.Date());
	}
}

2)        建立TLD文件

TLD文件也就是标签库文件,所以标签库的根元素是taglib,它可是以包含有多个tag子元素。在T omcat8.0的webapps\examples\WEB-INF\jsp2下有jsp2-example-taglib.tld文件,这是个TLD文件的范例。下面是一个mytaglib.tld,将其放到web的WEB/路径下。

<?xml version="1.0" encoding="GBK"?>

<taglib xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
	http://xmlns.jcp.org/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
	version="2.1">
	<tlib-version>1.0</tlib-version>
	<short-name>mytaglib</short-name>
	<!-- 定义该标签库的URI -->
	<uri>http://www.linjw.taglib/mytaglib</uri>

	<!-- 定义第一个标签 -->
	<tag>
		<!-- 定义标签名 -->
		<name>helloWorld</name>
		<!-- 定义标签处理类 -->
		<tag-class>com.linjw..HelloWorldTag</tag-class>
		<!-- 定义标签体为空 -->
		<body-content>empty</body-content>
	</tag>
</taglib>

3)        使用标签库

(a) 使用标签库主要是两个方面:

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

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

(b)  使用taglib的语法格式如下:

<%@ taglib uri=”tagliburi” prefix=”tagPrefix”%>

(c)使用标签的语法格式如下:

        <tagPrefix:tagname tagAttribute=”tagValue”…>

           <tagBody/>

        </tagPrefix:tagname>

(d)下面是helloWorldTag.jsp

 <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<!-- 导入标签库,指定mytag前缀的标签,
	由URI为http://www.linjw.taglib/mytaglib的标签库处理 -->
<%@ taglib uri="http:// /www.linjw.taglib/mytaglib " prefix="mytag"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>自定义标签示范</title>
	<meta name="website" content="http://www.crazyit.org" />
</head>
<body bgcolor="#ffffc0">
<h2>下面显示的是自定义标签中的内容</h2>
<!-- 使用标签 ,其中mytag是标签前缀,根据taglib的编译指令,
	mytag前缀将由URI为http:/ /www.linjw.taglib/mytaglib的标签库处理 -->
<mytag:helloWorld/><br/>
</body>
</html>






你可能感兴趣的:(java,jsp,Web应用)