TLD術語解釋:標籤庫描述文件. 如要在JSP頁面中實現JSP標籤,必須首先定義實現標籤的類,然後在標籤庫描述文件(TLD)中將寫好的類映射成jsp標籤,最後在JSP文件中使用定義好的標籤,就可以生成動態的JSP內容.
比如,我自定義一個out標籤,用tld文件描述.
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<!-- 標籤庫描述符 -->
<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor">
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>Simple Tags</short-name>
<uri>/zking</uri>
<!-- hello world標籤 -->
<tag>
<!-- 標籤名 -->
<name>out</name>
<!-- 標籤助手類(實現類) 放入類的全限定名 -->
<tag-class>com.tag.OutTag</tag-class>
<!-- 標籤的內容類型:empty表示空標籤(使用空標籤會報錯),jsp表示可以爲任何合法的JSP元素 -->
<body-content>JSP</body-content>
<attribute>
<!-- 屬性名 -->
<name>value</name>
<!-- 是否爲必填項 -->
<required>true</required>
<!--是否可以填jsp表達式 el表達式 -->
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
現在顯示一個標籤助手類OutTag public class OutTag extends BodyTagSupport{
//一個屬性對應一個實體中的屬性
private Object value;
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
//繼承一個標籤類
/**
*
*/
private static final long serialVersionUID = 1L;
//開始標籤的方法
@Override
public int doStartTag() throws JspException {
try {
//界面顯示接收的屬性值
pageContext.getOut().print(value);;
} catch (Exception e) {
e.printStackTrace();
}
//顯示標籤內容 EVAL_BODY_INCLUDE
//不顯示標籤內容 SKIP_BODY
return EVAL_BODY_INCLUDE;
}
//結束標籤的方法
@Override
public int doEndTag() throws JspException {
//跳過閉籤後的內容 直到html閉籤 SKIP_PAGE
//不跳過閉籤之後的內容 EVAL_PAGE
return EVAL_PAGE;
}
}
SKIP_BODY隱含0 :跳過了開始和結束標籤之間的代碼。
EVAL_BODY_INCLUDE隱含1:將body的內容輸出到存在的輸出流中
SKIP_PAGE隱含5 : 忽略剩下的頁面。
EVAL_PAGE隱含6:繼續執行下面的頁
doStartTag()和doEndTag()返回值是在Tag Interface裏定義的靜態int
任何使用自定義標籤
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="z" uri="/zking" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Out標籤</title>
</head>
<body>
<%
String str="哈哈哈,很高興見到你!";
request.setAttribute("str", str);
%>
<!-- 使用文本輸出 -->
<z:out value="這是我的第一個自定義標籤"> 噢耶</z:out>
</br>
<!-- 使用EL表達式輸出 -->
<z:out value="${str}"></z:out>
<!-- 使用jsp表達式輸出 -->
</br>
<z:out value="<%=1+1 %>"></z:out>
</body>
</html>
輸出結果爲:
以上是較爲簡單的示範了一下如何使用自定義標籤輸出,比較淺顯易懂,以後會更深入的去了解一下更多關於標籤的知識,還請各位 大神多多指教,謝謝,嘻嘻!