基于JSP 自定義標(biāo)簽使用實(shí)例介紹
添加JSP自定義標(biāo)簽:
先添加一個(gè)tld文件到WEB-INF文件夾中
<?xml version="1.0" encoding="UTF-8" ?>
<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 web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>myTag</description>
<display-name>JSTL core</display-name>
<tlib-version>1.0</tlib-version>
<short-name>cnweb</short-name>
<uri>http://www.cnweb.cn</uri>
<tag><!-- 一個(gè)tag標(biāo)簽對(duì)應(yīng)一個(gè)自定義tag標(biāo)簽類(lèi) -->
<description>MyTag</description>
<name>when</name>
<tag-class>cn.example.when</tag-class>
<body-content>scriptless</body-content>
<attribute>
<name>test</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
引用規(guī)則:
<%@ taglib uri="http://www.cnweb.cn" prefix="cnweb"%>
定義錯(cuò)誤處理頁(yè)面:
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/errors/error.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/errors/error1.jsp</location>
</error-page>
自定義標(biāo)簽執(zhí)行流程:
SimpleTagSupport
/* Jsp引擎遇到簡(jiǎn)單類(lèi),實(shí)例化該類(lèi);
* 調(diào)用setJspContext,把頁(yè)面pageContext傳遞給標(biāo)簽處理類(lèi);
* 調(diào)用setParent把父標(biāo)傳遞進(jìn)去,如果沒(méi)有,傳遞null
* 調(diào)用setJspBody方法,把封裝了標(biāo)簽體JspFragment傳遞給標(biāo)簽處理器類(lèi)
* 執(zhí)行頁(yè)面中的自定義標(biāo)簽,doTag()方法;-->執(zhí)行完成,銷(xiāo)毀對(duì)象
*/
JspFragment jf = this.getJspBody();
jf.invoke(this.getJspContext().getOut());//如果不顯示則不進(jìn)行處理
--------------------------------------------------------------------
public class tagShowOrNot extends TagSupport {
public int doStartTag() throws JspException {
return Tag.EVAL_BODY_INCLUDE;//顯示body
//return Tag.SKIP_BODY;//隱藏body
//Tag.EVAL_PAGE;//顯示page
//Tag.SKIP_PAGE;//隱藏page
}}
TagSupport
/*編寫(xiě)一個(gè)實(shí)現(xiàn)TagSupport的類(lèi);
*在tld文件中對(duì)標(biāo)簽處理器類(lèi)進(jìn)行描述(tld文件的位置:WEB-INF下)
*在jsp頁(yè)面中導(dǎo)入和使用標(biāo)簽
*
*jsp執(zhí)行過(guò)程中遇到自定義標(biāo)簽時(shí),先實(shí)例化該類(lèi);
*然后執(zhí)行方法:setPageContext()-->setParent()-->doStartTag()
*如果有標(biāo)簽體,一般會(huì)執(zhí)行標(biāo)簽體;doEndTag()-->整個(gè)標(biāo)簽執(zhí)行完后一般會(huì)執(zhí)行:release()
*
*控制整個(gè)jsp頁(yè)面是否執(zhí)行;
*控制jsp頁(yè)面某一部分內(nèi)容是否執(zhí)行;
*控制jsp頁(yè)面內(nèi)容重復(fù)執(zhí)行;
*修改jsp頁(yè)面內(nèi)容輸出;
*/
//該方法在執(zhí)行標(biāo)簽體后,執(zhí)行doEndTag()方法之前執(zhí)行,直到該方法返回IterationTag.SKIP_BODY;
public int doAfterBody() throws JspException {
time--;
System.out.println("重復(fù)" + time);
if (time > 0) {
return IterationTag.EVAL_BODY_AGAIN;
} else
return IterationTag.SKIP_BODY;
}
- jsp簡(jiǎn)單自定義標(biāo)簽的forEach遍歷及轉(zhuǎn)義字符示例
- JSP自定義標(biāo)簽獲取用戶(hù)IP地址的方法
- jsp自定義標(biāo)簽技術(shù)(實(shí)現(xiàn)原理與代碼以及平臺(tái)搭建步驟)
- JSP自定義標(biāo)簽Taglib實(shí)現(xiàn)過(guò)程重點(diǎn)總結(jié)
- JSP 自定義標(biāo)簽之一 簡(jiǎn)單實(shí)例
- JSP自定義標(biāo)簽rtexprvalue屬性用法實(shí)例分析
- JSP自定義標(biāo)簽-標(biāo)簽屬性_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
相關(guān)文章
jsp 實(shí)現(xiàn)的簡(jiǎn)易mvc模式示例
這篇文章主要介紹了jsp 實(shí)現(xiàn)的簡(jiǎn)易mvc模式,結(jié)合實(shí)例形式簡(jiǎn)單分析了jsp實(shí)現(xiàn)的MVC模式模型、視圖、控制器相關(guān)配置與使用操作技巧,需要的朋友可以參考下2019-11-11
jsp學(xué)習(xí)之scriptlet的使用方法詳解
這篇文章主要介紹了jsp學(xué)習(xí)之scriptlet的使用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
java AJAX實(shí)現(xiàn)級(jí)聯(lián)下拉框
AJAX實(shí)現(xiàn)級(jí)聯(lián)下拉框 需要的JAVA類(lèi),大家可以學(xué)習(xí)下2008-09-09
Java數(shù)據(jù)對(duì)象JDO 2.0查詢(xún)語(yǔ)言的特點(diǎn)
這篇文章主要介紹了Java數(shù)據(jù)對(duì)象JDO 2.0查詢(xún)語(yǔ)言的特點(diǎn)2006-10-10
FCKeditor使用方法(FCKeditor_2.6.3)詳細(xì)使用說(shuō)明
要用到文本編輯器,選擇了FCKeditor,下面就配置作一下說(shuō)明: 環(huán)境:windowsXP myeclipse6.0GA fckeditor2.6.3 fckeditor2.32008-09-09

