在JSP中,你可以使用自定义标签库(Custom Tag Library)来创建自定义标签,以便在JSP页面中重用特定的功能。以下是一个简单的JSP自定义标签的示例。

1. 创建标签处理类(HelloTag.java):
package your_package_name;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;

public class HelloTag extends TagSupport {
    private String name;

    // 设置属性值
    public void setName(String name) {
        this.name = name;
    }

    // 标签处理逻辑
    public int doStartTag() throws JspException {
        try {
            // 获取JspWriter对象
            JspWriter out = pageContext.getOut();

            // 输出标签内容
            out.println("Hello, " + name + "!");

        } catch (Exception e) {
            throw new JspException(e.getMessage());
        }

        // 标签处理完毕,SKIP_BODY表示不处理标签体
        return Tag.SKIP_BODY;
    }
}

2. 创建标签库描述文件(tld文件,HelloTag.tld):
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
        version="2.1">

    <tlib-version>1.0</tlib-version>
    <short-name>custom</short-name>
    <uri>http://your_domain/custom-tags</uri>

    <tag>
        <name>hello</name>
        <tag-class>your_package_name.HelloTag</tag-class>
        <body-content>empty</body-content>
        <attribute>
            <name>name</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>

</taglib>

注意替换your_package_name为你的Java包名,并将tld文件中的uri设置为你想要的命名空间。

3. 使用自定义标签的JSP页面代码(useHelloTag.jsp):
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://your_domain/custom-tags" prefix="custom" %>
<html>
<head>
    <title>使用自定义标签</title>
</head>
<body>
    <custom:hello name="World" />
</body>
</html>

在这个例子中,HelloTag是一个简单的自定义标签处理类,负责输出"Hello, "加上指定的名字。tld文件定义了自定义标签的属性和使用规则。JSP页面通过<%@ taglib %>标签引入自定义标签库,并使用<custom:hello>标签调用自定义标签。

这是一个简单的示例,实际中自定义标签可用于更复杂的逻辑和重用功能。要注意的是,自定义标签通常需要将标签处理类打包成JAR文件,并将JAR文件放在WEB-INF/lib目录下。


转载请注明出处:http://www.zyzy.cn/article/detail/13685/JSP