JSP 自定义标签,用户定义的标签称为自定义标签。在本教程中,我们将了解如何创建自定义标签并在 JSP 中使用它。
要创建自定义标签,我们需要三件事:
1)标签处理程序类:在此类中,我们指定自定义标签在 JSP 页面中使用时将执行的操作。
2)TLD 文件:标签描述符文件,我们将在其中指定我们的标签名称,标签处理程序类和标签属性。
3)JSP 页面:我们将使用自定义标签的 JSP 页面。
示例:
在下面的示例中,我们创建了一个自定义标签MyMsg
,当在 JSP 页面中使用时,它将显示消息This is my own custom tag
。
标签处理程序类
标签处理程序类应该实现Tag
/IterationTag
/BodyTag
接口,或者它也可以扩展TagSupport
/BodyTagSupport
/SimpleTagSupport
类。所有支持自定义标签的类都存在于javax.servlet.jsp.tagext
中。在下面我们扩展了类SimpleTagSupport
。
Details.java
package geek-docs.com;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;
public class Details extends SimpleTagSupport {
public void doTag() throws JspException, IOException {
/*This is just to display a message, when
* we will use our custom tag. This message
* would be displayed
*/
JspWriter out = getJspContext().getOut();
out.println("This is my own custom tag");
}
}
TLD 文件
此文件应出现在以下位置:Project Name/WebContent/WEB-INF/
,它应该有.tld
扩展名。
<name>
标签:自定义标签名称。在这个例子中,我们将它作为MyMsg
<tag-class>
标签给出:完全限定的类名,我们的标签处理程序类Details.java
在包geek-docs.com
中,因此我们将值赋予geek-docs.com.Details
。
message.tld
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>My Custom Tag</short-name>
<tag>
<name>MyMsg</name>
<tag-class>geek-docs.com.Details</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
在 JSP 中使用自定义标签
上面我们创建了一个名为MyMsg
的自定义标签。我们将在这里使用它。
注意:
taglib
指令应该在uri
字段中有 TLD 文件路径。上面我们创建了message.tld
文件,因此我们给出了该文件的路径。
选择任何前缀并在taglib
指令的前缀字段中指定它。这里我们将其指定为myprefix
。
自定义标签的调用方式如下:<prefix:tagName/>;
,我们的前缀是myprefix
,标签名称是MyMsg
,所以我们在下面的 JSP 页面中将其称为<myprefix:MyMsg/>
。
<%@ taglib prefix="myprefix" uri="WEB-INF/message.tld"%>
<html>
<head>
<title>Custom Tags in JSP Example</title>
</head>
<body>
<myprefix:MyMsg/>
</body>
</html>
输出:
This is my own custom tag