J2EE-12 custom tag自定義標記
阿新 • • 發佈:2018-11-11
初始化函式
setPageContext(PageContext pc)
int doStartTag(){
}
如果返回值是SKIP_BODY的時候就是
EVAL_PAGE:標籤裡面的內容正常執行,正常的返回值就是這個
一個例子
1.標記處理器: import java.servlet.jsp.targext.*; import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.jsp.*; import javax.servlet.http.*; public class IimeTag extends TagSupport{ public int doStartTag()throws JspExpection{ try{ pageContext.getOut(). print(new Date()); } catch(Exception e){ throw new JspExpection(e); } return Tag.EVAL_BODY_INCLUDE; } } 2. 分配一個標記 .tld檔案: 標記庫描述符檔案 <tag> <body-content>JSP</body-content> 標記裡面的內容是不是JSP,可為空,此時的標籤內部如果有東西就報錯 </tag>
JSP指令的語法形式
<%@ taglib uri="/WEB-INF/a.tld" prefix="a" %>
<%@ taglib uri="/WEB-INF/b.tld" prefix="b" %>
<a:time>
</a:time>
<b:time>
</b:time>
用來區分相同名字的標籤
JSP傳遞資料
jsp向標記處理器傳遞程式
<rtexprvalue>:對屬性值進步進行解析 一般是true,即進行動態解析 eg <a:time place:"${place}">
標記處理器想JSP回傳一個指令碼變數
<%
int i = 5;
Student s = new Student();
%>
<t:time/>
<%=d%>
d由time標記生成
TagExtraInfo
public VariableInfo{
變數資訊:變數名稱,變數型別
}
AT_BEGIN
標籤的開始標記到JSP結束
AT_END
在標籤的結束開始到JSP的最後
NESTED
標籤內部使用,離開就不能使用
Eg:
在jsp轉換為java程式碼的時候執行上面的程式碼
變數的賦值
在doStartTag中: pageContext.setAttribute("d",new java.util.Date()); 在JSP中使用
jsp中的變數應該由JSP程式設計師來指定
jsp頁面中:
<t:time var = "d" type="java.util.Date"/>
在doStartTag()中
simpleTag
初始化
setJspContext()
setJspBody()
getJspContext()
getJspBody()
invoke()
執行程式碼片段,輸出到out物件中
作業:
看
simpleTag bodyTag intetationTag
API