JSP 自定義標(biāo)簽之一 簡單實例
更新時間:2009年07月12日 23:39:38 作者:
當(dāng)前軟件開發(fā)越來越重視分工與協(xié)作,對于JSP技術(shù)而言,視圖層與模型層分別由不同的團隊完成也成為理所當(dāng)然的選擇,基于技術(shù)專長不同及其它因素考慮,眾多規(guī)范中都明確要求JSP頁面代碼中不允許出現(xiàn)Java代碼。
在JSP中使用自定義標(biāo)簽可以達到這樣的目的,事實上,我們所熟知的各類框架基本上都是通過自定義標(biāo)簽的形式來實現(xiàn)的。
通過使用自定義標(biāo)簽,我們可以將實現(xiàn)復(fù)雜的邏輯在頁面用簡單的標(biāo)簽來加以展示。下面我們來實現(xiàn)一個非常簡單的自定義標(biāo)簽,期望通過這個簡單的實例引領(lǐng)各位進入自定義標(biāo)簽的領(lǐng)域。我們準(zhǔn)備定義的這個自定義標(biāo)簽所實現(xiàn)的功能是在JSP頁面中顯示出版權(quán)信息,并且在以后的博文中,我們還會對它進行升級改造。
首先,打開編輯器,創(chuàng)建以下Java代碼:
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)所有 ©2008";
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的目錄之下,則將上述代碼編譯時生成的com目錄全部拷貝至test\WEB-INF\classes之下即可。
注意:在編譯上述代碼時,如果不是在集成的環(huán)境中進行,例如直接在命令行通過執(zhí)行javac命令進行編譯工作,那么需要手工在環(huán)境變量CLASSPATH中添加包javax.servlet.jsp所在的位置,對于Tomcat而言,這個包的位置是Tomcat安裝目錄下lib目錄中的jsp-api.jar。
隨后將以下XML格式的文件存入到名為testlib.tld的文件中,文件testlib.tld要存儲于目錄WEB-INF\tlds之下。
<?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)完成了一個自定義標(biāo)簽,隨后我們就可以在JSP文件中對其進行使用了。例如有如下JSP文件:
<%@ taglib uri="WEB-INF/tlds/testlib.tld" prefix="yzj" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>自定義標(biāo)簽簡單示例</title>
</head>
<body>
<p>這里是正文內(nèi)容</p>
<yzj:copyright/>
</body>
</html>
在瀏覽器中訪問該JSP文件,可以看到,在頁面底部,顯示了“顏志軍版權(quán)所有 ©2008”的信息,這正是我們定義的這個自己定義標(biāo)簽的作用。
通過上面的過程,已經(jīng)實現(xiàn)了自定義標(biāo)簽,并對其進行使用測試。關(guān)于其原理、機制、要注意的細節(jié)等問題,在請等待隨后的博文。
通過使用自定義標(biāo)簽,我們可以將實現(xiàn)復(fù)雜的邏輯在頁面用簡單的標(biāo)簽來加以展示。下面我們來實現(xiàn)一個非常簡單的自定義標(biāo)簽,期望通過這個簡單的實例引領(lǐng)各位進入自定義標(biāo)簽的領(lǐng)域。我們準(zhǔn)備定義的這個自定義標(biāo)簽所實現(xiàn)的功能是在JSP頁面中顯示出版權(quán)信息,并且在以后的博文中,我們還會對它進行升級改造。
首先,打開編輯器,創(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)所有 ©2008";
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的目錄之下,則將上述代碼編譯時生成的com目錄全部拷貝至test\WEB-INF\classes之下即可。
注意:在編譯上述代碼時,如果不是在集成的環(huán)境中進行,例如直接在命令行通過執(zhí)行javac命令進行編譯工作,那么需要手工在環(huán)境變量CLASSPATH中添加包javax.servlet.jsp所在的位置,對于Tomcat而言,這個包的位置是Tomcat安裝目錄下lib目錄中的jsp-api.jar。
隨后將以下XML格式的文件存入到名為testlib.tld的文件中,文件testlib.tld要存儲于目錄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)完成了一個自定義標(biāo)簽,隨后我們就可以在JSP文件中對其進行使用了。例如有如下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)簽簡單示例</title>
</head>
<body>
<p>這里是正文內(nèi)容</p>
<yzj:copyright/>
</body>
</html>
在瀏覽器中訪問該JSP文件,可以看到,在頁面底部,顯示了“顏志軍版權(quán)所有 ©2008”的信息,這正是我們定義的這個自己定義標(biāo)簽的作用。
通過上面的過程,已經(jīng)實現(xiàn)了自定義標(biāo)簽,并對其進行使用測試。關(guān)于其原理、機制、要注意的細節(jié)等問題,在請等待隨后的博文。
相關(guān)文章
動態(tài)jsp頁面轉(zhuǎn)PDF輸出到頁面的實現(xiàn)方法
最近遇到了很多坑,今天小編抽點時間給大家介紹下動態(tài)jsp頁面轉(zhuǎn)PDF輸出到頁面的實現(xiàn)方法,感興趣的朋友一起看看吧2016-10-10使用JSP技術(shù)實現(xiàn)一個簡單的在線測試系統(tǒng)的實例詳解
這篇文章主要介紹了使用JSP技術(shù)實現(xiàn)一個簡單的在線測試系統(tǒng)的實例詳解,文章通過示例代碼和代碼運行結(jié)果圖相結(jié)合展示介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08jsp+servlet+javabean實現(xiàn)數(shù)據(jù)分頁方法完整實例
這篇文章主要介紹了jsp+servlet+javabean實現(xiàn)數(shù)據(jù)分頁方法,以完整實例形式詳細講述了jsp結(jié)合servlet與javabean操作PostgreSQL數(shù)據(jù)庫實現(xiàn)分頁的具體步驟,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11JSP中內(nèi)建exception對象時出現(xiàn)500錯誤的解決方法
這篇文章主要介紹了JSP中內(nèi)建exception對象時出現(xiàn)500錯誤的解決方法,以一個簡單實例形式分析了exception對象出現(xiàn)500錯誤的解決方法,涉及瀏覽器及error文件的設(shè)置技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11用緩沖技術(shù)提高JSP應(yīng)用的性能和穩(wěn)定性
用緩沖技術(shù)提高JSP應(yīng)用的性能和穩(wěn)定性...2006-10-10