标签是用来干什么的?
JSP中的标签,或者说标签扩展(tag Extension)实际上是一个Java类,更进一步说,是一个实现了接口javax.servlet.jsp.tagext.jspTag的JavaBean。它
使编程员可把复杂、重复的代码或任务封装起来,这些代码可以简单形式被重用。标签库包含一组功能相关的、用户定义的XML标签。
4.1 标签文件
标签文件以”.tag”为扩展名,分为静态标签文件和动态标签文件。程序员可以使用它取出一段JSP代码,并通过定制功能来实现代码的重用。
4.1.1 静态标签文件
静态标签文件没有参数的传递。
<%@ taglib prefix=”p” tagdir=”/WEB-INF/tags” %>
prefix:命名空间前缀.
tagdir:标记文件所在目录,告诉容器在一个指定目录中查找一个标记库的标记文件实现。这个属性必须包含一个以/WEB-INF/tags开始的路径。
实例:
<%@ taglib prefix="p" tagdir="/WEB-INF/tags"%>
<%@page pageEncoding="GBK"%>
<html>
<body>
<h2>
1:
<p:china/>
2:
<p:usa/>
</h2>
</body>
</html>
china.tag:
<h2>this is china tag</h2>
usa.tag:
<h2>this is USA tag </h2>
程序说明:
<%@ taglib prefix=“p” tagdir="/WEB-INF/tags" %>
prefix=“p”,表示命名前缀为”p”, tagdir="/WEB-INF/tags",表示标记文件所在目录"/WEB-INF/tags",在该目录下有两个标记文件china.tag和usa.tag。
<p:china/>输出标记文件china.tag的内容this is china tag。
<p:usa/>输出标记文件usa.tag的内容this is USA tag。
运行结果:
注意:tag文件必须放在/WEB-INF/tags目录下,放在/WEB-INF/下是不行的。
4.1.2动态标签文件
动态标签文件有参数的传递。
实例:
<%@ page contentType="text/html; charset=gb2312" language="java"%>
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags"%>
<%--上述代码是对该标签文件引用声明--%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>动态标签文件的应用</title>
</head>
<body>
动态标签输出的内容为:
<br>
<tags:jsp name="月薪5000" size="2" align="left">
jsp初级程序员
</tags:jsp>
<tags:jsp name="月薪10000" size="3" align="center">
jsp中级程序员
</tags:jsp>
<tags:jsp name="月薪15000以上" size="4" align="right">
jsp高级程序员
</tags:jsp>
</body>
</html>
jsp.tag:
<%@ attribute name = "name"%>
<%@ attribute name = "size"%>
<%@ attribute name = "align"%>
<table width="339" height="41" border="1">
<tr>
<td align="${align}">${name}</td>
<td align="${align}"><font size = "${size}"><jsp:doBody/></td>
</tr>
</table>
程序说明:
在jsp.tag中,
<%@ tag body-content=scriptless”%>相当于jsp页面中page指令。
<%@ attribute %>这个指令只能由标记文件使用。
<%@ attribute name = “name”%>参数名字为name。
<%@ attribute name = “size”%>参数名字为size。
<%@ attribute name = “align”%>参数名字为align。
jsp:doBody/表明取得标记体中内容并放在这里。
在index.jsp中,
<tags:jsp name=“月薪5000” size=“2” align=“left”>
Jsp初级程序员
</tags:jsp>
参数name取值"月薪5000",size取值"2",align取值"left",Jsp初级程序员为标记体。
运行输出: