jsp_04 自定义标签

来源:互联网 发布:初中毕业学java 编辑:程序博客网 时间:2024/05/16 11:37

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>



1 0
原创粉丝点击