jsp_04 自定义标签

JSP自定义标签:

自定义标签是用户定义的JSP语言元素。

JSP标签扩展可以让你创建新的标签并且可以直接插入到一个JSP页面。

可以继承SimpleTagSupport类并重写的doTag()方法来开发一个最简单的自定义标签。


接下来,我们想创建一个自定义标签叫作<ex:Hello>,标签格式为:<ex:Hello/>的三个步骤:

1. 创建处理标签的Java类:


import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;

public class HelloTag extends SimpleTagSupport {

  public void doTag() throws JspException, IOException {
    JspWriter out = getJspContext().getOut();
    out.println("Hello Custom Tag!");
  }
}


2.创建标签库 <Tomcat安装目录>webapps\ROOT\WEB-INF\helloTag.tld。

<?xml version="1.0" encoding="ISO-8859-1"?>

<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>Example TLD</short-name>

    <!--定义第一个标签 -->
    <tag>
        <!-- 定义标签名 -->
        <name>Hello</name>
        <!-- 定义标签处理类 -->
        <tag-class>MyJsp.HelloTag</tag-class>
        <!-- 定义标签体为空 -->
        <body-content>empty</body-content>
    </tag>
</taglib>


3.在JSP文件中使用helloTag标签:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="ex" uri="WEB-INF/helloTag.tld"%>
<html>
<head>
    <title>自定义tag实例</title>
</head>
<body>
<ex:Hello/>
</body>
</html>




自定义标签属性:

1.创建处理标签的java类

package MyJsp;

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

/**
 * Created by 1192126986 on 2017/1/25.
 */
public class HelloTag extends SimpleTagSupport {
    private String message;
    StringWriter sw=new StringWriter();

    public void setMessage(String message){
        this.message=message;
    }

    @Override
    public void doTag() throws JspException, IOException {
        if(message!=null){
            //从标签属性中使用信息
            JspWriter out=getJspContext().getOut();
            out.println(message);
        }else{
            //从标签体中使用信息
            getJspBody().invoke(sw);
            JspWriter out=getJspContext().getOut();
            out.println(sw.toString());
        }

}
}


2.创建标签库:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- 标签库定义 -->
<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>Example TLD</short-name>

    <!--定义第一个标签 -->
    <tag>
        <!-- 定义标签名 -->
        <name>Hello</name>
        <!-- 定义标签处理类 -->
        <tag-class>MyJsp.HelloTag</tag-class>
        <!-- 定义标签体为空 -->
        <body-content>scriptless</body-content>
        <!-- 自定义标签属性 -->
        <attribute>
            <!-- name 属性  描述:定义属性的名称 -->
            <name>message</name>
        </attribute>
        <attribute>
            <name>attribute_name</name>
            <!-- required 属性  描述:指定属性是否是必须的或是可选的 false为可选的 -->
            <required>false</required>
            <!-- type属性  描述:指定属性的java类型 默认为String -->
            <type>java.lang.Boolean</type>
            <!-- fragment 属性  描述:如果声明了该属性,属性值将被视为一个 JspFragment -->
            <fragment>false</fragment>
        </attribute>
    </tag>
</taglib>


3.在JSP文件中使用标签

<%--
  Created by IntelliJ IDEA.
  User: 1192126986
  Date: 2017/1/25
  Time: 22:33
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="ex" uri="WEB-INF/helloTag.tld" %>
<html>
<head>
    <title>自定义tag实例</title>
</head>
<body>
<ex:Hello message="This is a tag!"/>
</body>
</html>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值