1. 程式人生 > >J2EE-12 custom tag自定義標記

J2EE-12 custom tag自定義標記

初始化函式

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向標記處理器傳遞程式

jsp向標記處理器傳遞程式

public

<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