自定义标签

1.tld配置文件创建

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>

    <tlib-version>1.0</tlib-version><!-- 自定义标签的版本数 -->

    <jsp-version>1.2</jsp-version><!-- 标签库依赖的JSP版本 -->

    <short-name>MyTag</short-name> <!-- 标签的简写 -->

    <uri>http://www.com.cn/tag/my</uri><!-- 指定这个标签的uri信息 -->

    <description>My Framework JSP Tag Library.</description><!-- 本标签的描述 -->

    <tag>
        <name>message</name><!-- 标签名字 -->
        <tag-class>com.ntong.tag.TestTag</tag-class><!-- 指定标签的类 -->
        <body-content>scriptless</body-content><!-- 标签主体的内容 empty表示这个标签可以直接结尾,不需要填写内容  jsp表示标签体由其他jsp元素组成 scriptless:表示可以有标签体,可以把request域中的内容保留-->
    </tag>

</taglib>

2.标签类的创建

package com.ntong.tag;


import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;

public class TestTag extends SimpleTagSupport {
    @Override
    public void doTag() throws JspException, IOException {
        this.getJspBody().invoke(null);
    }
}

3.使用自定义标签

<%-- Created by IntelliJ IDEA. --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="tag" uri="http://www.com.cn/tag/my"%>
        <html>
  <head>
    <title></title>
  </head>
  <body>
  <% request.setAttribute("msg","name");%>
  <tag:message>
    ${msg}
  </tag:message>
  </body>
</html>

4.补充(自定义全局函数调用标签)

<?xml version="1.0" encoding="UTF-8" ?>

<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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
        version="2.0">

    <description>JSTL 1.1 functions library</description>
    <display-name>JSTL functions sys</display-name>
    <tlib-version>1.1</tlib-version>
    <short-name>fns</short-name>
    <uri>http://java.sun.com/jsp/jstl/functionss</uri>

    <function>
        <description>获取管理路径</description>
        <name>getAdminPath</name>
        <function-class>com.ntong.tag.Test</function-class>
        <function-signature>java.lang.String test(java.lang.String)</function-signature><!-- 被掉用的方法的返回类型,方法名,参数类型,并且被调用的函数要是静态的 -->
        <example>${fns:getAdminPath()}</example> <!-- el表达式调用方式-->
 </function> </taglib>

被调用的函数

package com.ntong.tag;

public class Test {
    public static String test(String str){
        return str;
    }
}

使用此标签

<%-- Created by IntelliJ IDEA. --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="tag" uri="http://java.sun.com/jsp/jstl/functionss"%>
        <html>
  <head>
    <title></title>
  </head>
  <body>
 ${tag:getAdminPath("huqi")}
  </body>
</html>

 

posted @ 2020-08-01 14:11  动力起点  阅读(177)  评论(0编辑  收藏  举报