程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> JSP自定義標簽

JSP自定義標簽

編輯:關於JSP

JSP自定義標簽


自定義標簽是用戶定義的JSP語言元素。當JSP頁面包含一個自定義標簽時將被轉化為servlet,標簽轉化為對被 稱為tag handler的對象的操作,即當servlet執行時Web container調用那些操作。

JSP標簽擴展可以讓你創建新的標簽並且可以直接插入到一個JSP頁面。 JSP 2.0規范中引入Simple Tag Handlers來編寫這些自定義標記。

不含標簽體的自定義標簽

首先你可以繼承SimpleTagSupport類並重寫的doTag()方法來開發一個最簡單的自定義標簽。
這裡要注意的是這裡的Selvlet類不能是裸體類,也就是必須要在包裡面,不然後面配置文件不生效

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;
import java.io.StringWriter;
public class MyServlet extends SimpleTagSupport {

    @Override
    public void doTag() throws JspException, IOException {
        JspWriter out = this.getJspContext().getOut();//獲得當前頁面的輸出流
        out.println("Hello World!");//輸出Hello World!
    }

}

接下來在WEB-INF目錄下寫一個標簽庫,以tld後綴名結尾,這裡寫mytag.tld


    
        2.0
        
        ex
        
            
            Hello
            
            com.mytag.MyServlet
            
            empty
        
    

接下來就是測試用的jsp頁面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--這裡prefix是標簽前綴名   uri是標簽庫地址--%>
<%@ taglib prefix="ex" uri="/WEB-INF/myTag.tld"%>
<%--使用自定義標簽--%>

這樣頁面就會輸出Hello World!了


訪問自定義標簽體

訪問標簽體,這樣的話就需要修改以上三個文件了
Selvlet中要有對標簽體獲取的代碼

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

public class MyServlet extends SimpleTagSupport {

    @Override
    public void doTag() throws JspException, IOException {
        StringWriter sw = new StringWriter();//字符串輸出流,包裝一個字符串
        getJspBody().invoke(sw);//把標簽體內容放入sw流裡面
        getJspContext().getOut().println(sw);//輸出到頁面上
    }
}

接著mytag.tld中要設置標簽體不為空

<code class=" hljs xml"><!--{cke_protected}{C}%3C!%2D%2D%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%2D%2D%3E-->
    <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">
        <tlib-version>2.0</tlib-version>
        <!--{cke_protected}{C}%3C!%2D%2D%E6%8C%87%E5%AE%9A%E5%89%8D%E7%BC%80%E5%90%8D%2C%E5%8F%AF%E4%BB%A5%E5%9C%A8jsp%E5%A3%B0%E6%98%8E%E4%B8%AD%E6%9B%B4%E6%94%B9%2D%2D%3E-->
        <short-name>ex</short-name>
        <tag>
            <!--{cke_protected}{C}%3C!%2D%2D%E6%8C%87%E5%AE%9A%E6%A0%87%E7%AD%BE%E5%90%8D%E7%A7%B0%2D%2D%3E-->
            <name>Hello</name>
            <!--{cke_protected}{C}%3C!%2D%2D%E6%8C%87%E5%AE%9A%E9%82%A3%E4%B8%AAServlet%E6%89%A7%E8%A1%8C%E8%BF%99%E4%B8%AA%E6%A0%87%E7%AD%BE%E8%A7%A3%E9%87%8A%2D%2D%3E-->
            <tag-class>com.mytag.MyServlet</tag-class>
            <!--{cke_protected}{C}%3C!%2D%2D%E8%AE%BE%E7%BD%AE%E6%A0%87%E7%AD%BE%E4%BD%93%E4%B8%BA%E7%A9%BA%2D%2D%3E-->
            <body-content>scriptless</body-content>
        </tag>
    </taglib></code>

最後是測試用的jsp頁面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--這裡prefix是標簽前綴名   uri是標簽庫地址--%>
<%@ taglib prefix="ex" uri="/WEB-INF/myTag.tld"%>
<%--使用自定義標簽--%> hahahhahahahhah

頁面上就會輸出hahahhahahahhah


另外還有自定義標簽屬性,不經常使用,這裡就不在詳細說了

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved