在JSP中使用自定義標(biāo)簽可以達(dá)到這樣的目的,事實(shí)上,我們所熟知的各類框架基本上都是通過自定義標(biāo)簽的形式來實(shí)現(xiàn)的。
通過使用自定義標(biāo)簽,我們可以將實(shí)現(xiàn)復(fù)雜的邏輯在頁面用簡(jiǎn)單的標(biāo)簽來加以展示。下面我們來實(shí)現(xiàn)一個(gè)非常簡(jiǎn)單的自定義標(biāo)簽,期望通過這個(gè)簡(jiǎn)單的實(shí)例引領(lǐng)各位進(jìn)入自定義標(biāo)簽的領(lǐng)域。我們準(zhǔn)備定義的這個(gè)自定義標(biāo)簽所實(shí)現(xiàn)的功能是在JSP頁面中顯示出版權(quán)信息,并且在以后的博文中,我們還會(huì)對(duì)它進(jìn)行升級(jí)改造。
首先,打開編輯器,創(chuàng)建以下Java代碼:
復(fù)制代碼 代碼如下:
package com.yanzhijun;
import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class CopyRightTag extends TagSupport
{
public int doEndTag()
{
try
{
String copyPre = "顏志軍版權(quán)所有nbsp;copy2008";
String info = new String(copyPre.getBytes(), "ISO8859_1");
pageContext.getOut().println(info);
}
catch(IOException e){}
return EVAL_PAGE;
}
}
上述代碼編輯完成后,編譯并生成class文件。并將編譯之后的字節(jié)碼文件連同包名一同放入準(zhǔn)備使用當(dāng)前標(biāo)簽的WEB應(yīng)用的WEB-INF\classes目錄之下。例如WEB應(yīng)用在名為test的目錄之下,則將上述代碼編譯時(shí)生成的com目錄全部拷貝至test\WEB-INF\classes之下即可。
注意:在編譯上述代碼時(shí),如果不是在集成的環(huán)境中進(jìn)行,例如直接在命令行通過執(zhí)行javac命令進(jìn)行編譯工作,那么需要手工在環(huán)境變量CLASSPATH中添加包javax.servlet.jsp所在的位置,對(duì)于Tomcat而言,這個(gè)包的位置是Tomcat安裝目錄下lib目錄中的jsp-api.jar。
隨后將以下XML格式的文件存入到名為testlib.tld的文件中,文件testlib.tld要存儲(chǔ)于目錄WEB-INF\tlds之下。
復(fù)制代碼 代碼如下:
?xml version="1.0" encoding="ISO-8859-1" ?>
!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
taglib>
tlibversion>1.0/tlibversion>
jspversion>1.1/jspversion>
shortname>yzj/shortname>
tag>
name>copyright/name>
tagclass>com.yanzhijun.CopyRightTag/tagclass>
bodycontent>empty/bodycontent>
attribute/>
/tag>
/taglib>
至此,我們已經(jīng)完成了一個(gè)自定義標(biāo)簽,隨后我們就可以在JSP文件中對(duì)其進(jìn)行使用了。例如有如下JSP文件:
復(fù)制代碼 代碼如下:
%@ taglib uri="WEB-INF/tlds/testlib.tld" prefix="yzj" %>
html>
head>
meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
title>自定義標(biāo)簽簡(jiǎn)單示例/title>
/head>
body>
p>這里是正文內(nèi)容/p>
yzj:copyright/>
/body>
/html>
在瀏覽器中訪問該JSP文件,可以看到,在頁面底部,顯示了“顏志軍版權(quán)所有 ©2008”的信息,這正是我們定義的這個(gè)自己定義標(biāo)簽的作用。
通過上面的過程,已經(jīng)實(shí)現(xiàn)了自定義標(biāo)簽,并對(duì)其進(jìn)行使用測(cè)試。關(guān)于其原理、機(jī)制、要注意的細(xì)節(jié)等問題,在請(qǐng)等待隨后的博文。
您可能感興趣的文章:- jsp簡(jiǎn)單自定義標(biāo)簽的forEach遍歷及轉(zhuǎn)義字符示例
- JSP自定義標(biāo)簽獲取用戶IP地址的方法
- jsp自定義標(biāo)簽技術(shù)(實(shí)現(xiàn)原理與代碼以及平臺(tái)搭建步驟)
- 基于JSP 自定義標(biāo)簽使用實(shí)例介紹
- JSP自定義標(biāo)簽Taglib實(shí)現(xiàn)過程重點(diǎn)總結(jié)
- JSP自定義標(biāo)簽rtexprvalue屬性用法實(shí)例分析
- JSP自定義標(biāo)簽-標(biāo)簽屬性_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理