導航:首頁 > 編程語言 > jstl自定義標簽tld

jstl自定義標簽tld

發布時間:2024-04-27 14:01:46

javaEE中導入項目 發生的jsP錯誤

taglib指令是定義了一個標簽庫以及其自定義的標簽的前綴。

第一、檢查項目依賴的jar包是否正確的引入。有關JSP標注標簽庫的學習,推薦你看看這個教程:JSP標准標簽庫JSTL教程

JSTL庫下載地址

你可以按照教程的知道,安裝jar包,配置web.xml文件

第二、從你項目的報錯來看,taglib的自定義的標簽的tld文件找不到了。看看bmjk.jsp同目錄下是否有tld文件夾,裡面是否有base.tld文件。若是沒有,想項目提供者咨詢。這里是taglib自定義標簽的教程鏈接:taglib自定義標簽教程。

第三、javaweb開發,建議你多調試,代碼多編寫,遇到問題到網路查詢。

Ⅱ 學會怎樣使用Jsp 內置標簽,jstl標簽庫及自定義標簽

學會怎樣使用Jsp 內置標簽,jstl標簽庫及自定義標簽
1
jsp自定義標簽需要引入兩個 分別是
javax.servlet.jsp.jarjavax.servlet.jar
2
建立tld文件,建議目錄為WEB-INF下,tld文件結構為下圖,uri為整個標簽庫的名稱,可以理解為java類,每一個tag分支,可以理解為java類中的每一個方法,我們在調用jsp自定義標簽的時候就和調用java類一樣,通過類找方法。tag分支重點要講tag-class,該屬性為該標簽方法所指向的java類。attribute為參數,相信屬性看步驟三附圖。

3
關於tld文件屬性的說明,可以參考下圖

4
將tld文件引入web.xml中,建議名稱與tld文件標簽庫名稱一致

5
編寫jsp自定義標簽類,該類繼承TagSupport類,我們需要做的就是重寫doStartTag,我們可以通過JspWriter將後台處理的東西直接輸出到jsp頁面。當然了,輸出的內容在實際操作中肯定經過了非常復雜的邏輯。

6
頁面調用,首先需要引入標簽,<%@ taglib uri="option" prefix="option"%> option為標簽名 定義在tld文件中,引用之後就可以在頁面調用自定義標簽了,簡單的一行代碼。即可實現一個grid的輸出,且可以重復利用。

Ⅲ jsp 中怎樣引用 jstl標簽

1、進入Apache官網找到,jstl包的鏈接准備下載,版本可以隨意選擇,盡量選擇比較新的版本。

(3)jstl自定義標簽tld擴展閱讀:

JSTl基本應用:

1、核心標簽庫:包括基本的語言功能,變數操作,流程式控制制等等。

2、國際化和格式化標簽庫:進行國際化操作和格式化操作,例如格式化時間等等。

3、SQL標簽庫:主要用於對關系型資料庫的存儲操作。

4、XML標簽庫:主要用於對xml格式數據的操作。

5、函數標簽庫:主要定義對字元串操作的函數庫,在EL表達式中運行。

<!-- JSTL 函數 包含一系列標准函數,大部分是通用的字元串處理函數-->

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

<!-- JSTL 核心標簽庫 -->

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!-- JSTL 格式化標簽 用來格式化並輸出文本、日期、時間、數字 -->

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

<!-- JSTL SQL標簽庫 提供了與關系型資料庫進行交互的標簽 -->

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>

<!-- JSTL XML標簽庫 提供了創建和操作XML文檔的標簽 -->

<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>

Ⅳ 關於JSP中JSTL標簽庫的問題!!!

什麼是標簽庫?
JSP標簽庫(也稱自定義標簽庫)可看成是一種通過JavaBean生成基於XML的腳本的方法。從概念上講,標簽就是很簡單而且可重用的代碼結構。比方說,在我們最新發布的JSPKit(在JSP Insider內)中,使用XML標簽實現了對XML文檔的輕松訪問。請看以下的清單A。
清單A:執行XML/XSL 轉換的示例標簽及其所在的HTML頁面
<%@ taglib uri="http://www.jspinsider.com/jspkit/JAXP" prefix="JAXP"%>
<JAXP:TransformerTag>
<JAXP:XMLFile>c:/xml/example.xml</JAXP:XMLFile>
<JAXP:XSLFile>c:/xml/example.xsl</JAXP:XSLFile>
</JAXP:TransformerTag>

以上的示例使用了簡單的標簽來訪問處在幕後的更強大代碼,標簽部分的語句首先裝載了一個XML文件,然後應用了一個XSL文件來將XML文件中的內容轉換成某個表現格式,並發送給客戶端,這一切僅僅只是用了一個很簡單的標簽。定製標簽使得JSP項目中很容易創建重用的開放源代碼模塊,而你所需要的只是標簽庫和它的文檔說明。

標簽庫的重要特性

1.易於安裝在多個項目上
標簽很容易從一個JSP項目遷移到其他項目。一旦建立了一個標簽庫,則只需要將所有的東西打包為一個JAR文件,你就可以在任何的JSP項目中重新使用。因為標簽可以重新使用,標簽庫可以輕松地用於你自己的項目,所以標簽庫越來越通行。目前,最好的標簽資源可以在JSPTags.com這個站點找到。

2.擴展JSP 標簽庫可以具備JSP規范(JSP 1.2)中的任何特性和功能,你可以無限制地擴展和增加JSP的功能,而無需要等待下一版本JSP的出現。例如,你對JSP的include調用不太滿意。你可以建立自己的include標簽,該標簽執行的是你自己的規范。

3.容易維護

標簽庫使得JSP的web應用程序非常易於維護,原因有:
(1)標簽應用簡單,對任何人而言都很容易使用、易於理解。
(2)所有的程序邏輯代碼都集中放在的標簽處理器和JavaBeans中。這意味著你在升級代碼時,無需要對每個使用該代碼的頁面進行修改,你只需要修改集中的代碼文件便可。
(3)如果需要加入新的功能,你也無需修改任何已經存在的頁面,可以在標簽中加入額外的屬性,從而引進新的行為,而其它舊的屬性不變,這樣所有舊的頁面還可以正常工作。 例如你有一個讓所有文本變藍的標簽:
<BlueText>My Text</BlueText>
但在後來項目中,你又想讓藍色變暗。你可以保留原有的標簽,只要為其增加一個新的屬性:shade ,如下所示:
<BlueText shade="teal">My Text</BlueText>
所有舊的標簽仍然可以產生藍色的文本,但現在你可以使用同一標簽來產生變暗的藍色文本了。
(4)標簽提升了代碼的重用性。那些經過多次測試和使用的代碼肯定具有更少的bug。所以,使用定製標簽的JSP頁面也同樣具有更少的缺陷,維護起來自然方便多了。

4.快速的開發時間
標簽庫提供一個簡單的方式來重用代碼。在伺服器端的語言中,其中一個標準的重用代碼方式是使用模板。相對於使用模板庫,標簽庫是一個更好的解決辦法。使用模板庫,你必須為每個項目修改模板或者且建立嚴格的界面,而標簽庫則沒有這些限制,並且擁有所有面向對象的好處,可以做到靈活和更有擴展性,而且,通過重用代碼,你可以花費更少的時間來做開發,更多的時間可以用在設計你的web應用上。標簽庫的介面也很簡單,非常容易做插入、使用和調試。

標簽的組成結構

雖然標簽庫非常易於使用,不過要建立一個標簽庫的內部實現機制還是頗復雜的,起碼要比建立一個簡單的JavaBean復雜。這個復雜是來自於標簽庫是由幾部分構成的。不過,你只需要掌握了Java和JSP的知識就夠了。
一個簡單的標簽由下面的元素構成:
1.JavaBean:為了得到Java與生具來的面向對象的好處,可重用的代碼應該放到一個獨立的代碼容器中,也就是JavaBean。這些JavaBeans並不是標簽庫必不可少的一部分,但它們是標簽庫用來執行所分配任務的基礎代碼模塊。
2.標簽處理器:標簽處理器是標簽庫的真正核心。一個標簽處理器(tag handler)引用它所需要的任何外部資源(JavaBean)並且負責訪問JSP頁面的信息(PageContext對象)。而JSP頁面則把頁面上設置的標簽屬性和標簽體中的內容都傳遞給標簽處理器,當標簽處理器完成其處理過程後,它就會把處理後的輸出結果回送給JSP頁面做進一步處理。
3.標簽庫描述符(TLD文件):這是一個簡單的XML文件,它記錄著標簽處理器的屬性、信息和位置等信息。JSP容器通過這個文件來得知從哪裡及如何調用一個標簽庫。
4.Web站點的web.xml文件:這是Web站點的初始化文件,在這個文件中,需要定義了Web站點中用到的自定義標簽,以及用來描述每個自定義標簽的tld文件。
5.發布文件(WAR或JAR文件):如果你想重用自定義標簽的話,你需要一個方法來將它由一個項目遷移到其他項目中去。將標簽庫打包為一個JAR文件是一個簡單而且有效的方式。
6.JSP頁面上的標簽庫聲明:要在JSP頁面中的使用某個自定義標簽的話,需要使用標簽庫標示符在頁面上進行聲明。

看來要做的工作很多,剛開始用的時候當然會有點棘手,不過其實並不是很難。它的要點並不在於編碼,而是在於如何將各部分正確地組織起來。這種層次性的結構是很重要的,它令標簽的使用靈活和更容易轉移。更重要的事,這些層次可以讓整個建立標簽庫的過程都能通過JSP IDE(JSP的集成開發環境)自動完成。JSP IDE更可以自動完成創建定製標簽的大部分工作,而你自己則只需要負責建立代碼和標簽處理器。

(注意:一個標簽處理器僅定義一個自定義標簽;一個標簽庫是幾個處理相同任務的標簽處理器的集合)

建立你的第一個標簽

以下將一步一步地教你如何建立自定義的標簽,具體的例子是擴展JSP,令它擁有自己的HTML編碼功能。這個功能將所有的<和>字元用 HTML代碼來代替。它可以很容易地擴展為做其它的編碼處理。為了簡化,這個例子只解釋了建立自定義標簽的基本要素。

創建JavaBean

代碼中的任何可重用部分都應該放到一個JavaBean中。這一點是很重要的。這樣你就可以在其他項目中重用這些代碼了。由於任何放置在標簽處理器內的代碼在標簽外都是不可以重用的,因此將可重用的代碼部分獨立開來是很重要的。在這個例子總,為HTML編碼的邏輯是常用的,因此放到JavaBean中,請參看清單B
清單B:HTML編碼JavaBean
/* HTML_Format.java */
public class HTML_Format extends Object implements java.io.Serializable {

/** 創建新的HTML_Format */
public HTML_Format() {}

/** 將一個字元串中所有的所有 < 和 > 字元用響應的HTML編碼代替 */
public String HTML_Encode(String as_data)
{
int li_len = as_data.length();

/*string buffer的長度要比原來的字元串長*/
StringBuffer lsb_encode = new StringBuffer(li_len + (li_len/10));

/* 循環替換全部的< 和 > 字元 */
for( int li_count = 0 ; li_count < li_len ; li_count++)
{ String ls_next = String.valueOf(as_data.charAt(li_count));
if (ls_next.equals("<")) ls_next = "<";
if (ls_next.equals(">")) ls_next = ">";
lsb_encode.append( ls_next );
}

return( lsb_encode.toString() );
}
}

創建標簽處理器
標簽處理器的代碼請參看清單C:
清單C:HTML編碼標簽處理器
import java.io.IOException;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class HTML_FormatTag extends BodyTagSupport
{
/* 1) 在標簽末將會調用這個函數 */
public int doEndTag() throws JspTagException
{
try
{ /* 2)得到標簽中的文本 */
BodyContent l_tagbody = getBodyContent();
String ls_output = "";

/* 3)如果標簽體有文本,就處理它 */
if(l_tagbody != null)
{ HTML_Format l_format = new HTML_Format();
/* 3a) 將標簽體的內容轉換為一個字元串 */
String ls_html_text = l_tagbody.getString();
ls_output = l_format.HTML_Encode(ls_html_text);
}
/* 4)將結果寫回到數據流中 */
pageContext.getOut().write(ls_output.trim());
}
catch (IOException e)
{ throw new JspTagException("Tag Error:" + e.toString());
}

/* 讓JSP繼續處理以下頁面的內容 */
return EVAL_PAGE;
}
}

這個處理很簡單,它包括有:
1.讀入位於開始和結束標簽間的文本
2.調用html編碼函數
3.將結果返回到JSP頁面。

創建標簽描述符

我們需要描述自定義標簽以讓系統知道如何處理。該描述文件的後綴為.tld,TLD文件通常就以標簽處理器命名,並存放在「/WEB-INF/」目錄之下。請參看清單D。
清單D:HTML編碼標簽描述器
<?xml version="1.0" encoding="UTF-8" ?>

<!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>HTML_FormatTag</SHORTNAME>
<URI></URI>
<INFO>HTML Encoding Tag </INFO>

<TAG>
<NAME>HTMLEncode</NAME>
<TAGCLASS>HTML_FormatTag</TAGCLASS>
<INFO>Encode HTML</INFO>
</TAG>

</TAGLIB>

更新Web XML文件

現在可以告訴JSP容器如何使用標簽庫了。為此要修改web.xml文件,具體說來是要在其中加入一個taglib的項目來注冊該標簽庫,並為標簽分配一個URI。URI是Web站點上唯一應用於這一特定標簽的索引。由於標簽今後還可能用在不同的Web站點上,所以你最好採用完整的URL和/或者包名字(package name)來保證這一唯一性。這個例子是簡化了,示例代碼請參看清單E。
清單E:修改web.xml文件
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">

<WEB-APP>

<TAGLIB>
<TAGLIB-URI>
HTMLEncode
</TAGLIB-URI>
<TAGLIB-LOCATION>
/WEB-INF/HTML_FormatTag.tld
</TAGLIB-LOCATION>
</TAGLIB>

</WEB-APP>

使用新的標簽

自定義的標簽設置好後,就可以用在你的JSP頁面上了。要做到這一點,只需要在頁面上使用taglib指示命令聲明所要採用的標簽即可。標簽通過其唯一的 URI被索引,然後被分配給一個名字空間前綴(prefix)。這一前綴並沒有什麼特別的意義,只要它不與其它的名字空間沖突便可,可以任意。請參看以下的清單F和G。

清單F:在一個JSP頁面上使用HTML編碼標簽

<%@ taglib uri="HTMLEncode" prefix="Examples" %>
<PRE>
<?XML:NAMESPACE PREFIX = Examples /><Examples:HTMLEncode>
< Hello , Simple sample >
</Examples:HTMLEncode>
</PRE>

清單G:範例代碼的輸出
< Hello , Simple sample >
which displays as:
< Hello , Simple sample >

通過這個標簽,我就將該頁面的所有代碼編碼了。所有的自定義標簽都是在伺服器上處理的。這意味著你將不會在輸出的頁面上看到自定義的標簽。

正如你所看到的那樣,建立標簽並非難事。最麻煩的是學習標簽處理器的整個細節。這是一個很強大的功能,我們不過是觸及了皮毛。由於這一過程需要採取的步驟很多,所以剛入門的JSP程序員可能在建立標簽的時候會覺得很困惑。

結論

標簽庫是JSP最重要的特性之一,它還處在不斷的發展中。它的確是一個新事物,因此還沒有被廣泛採用,不過自定義標簽庫已經剝去了它的神秘面紗,越來越多的開發者也開始關注和使用它了。在2001年末,可預料標簽庫將是許多JSP項目中的一個很常見的特性。

在這篇文章中只簡要地討論了標簽庫的好處。標簽庫實際上還有許多其它強大的功能。標簽庫促使JSP開發進入了前所未有的新天地。對JSP開發人員來說這確實是一種很令人振奮的新技術,因為他們得到了一個可將JSP轉到各個應用並且建立任何類型web應用的工具。標簽庫讓JSP變成了最豐富、最具動態開發能力的、強大的Web編程環境。它的功能只受我們的想像和創造力限制。

Ⅳ jsp中「<c:」是自定義的標簽嗎

不是,是JSTL標簽庫中的標簽,在JSP頁面中導入後就可以使用,代碼如下:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>,比如<c:if></c:if>,和普通的if判斷回語句是一樣的功能答功能,
<c:if test="判斷">判斷為真,執行的操作</c:if>

閱讀全文

與jstl自定義標簽tld相關的資料

熱點內容
如何從殺毒軟體裡面恢復出文件 瀏覽:972
越獄iphone如何備份 瀏覽:124
蘋果四S萬能鑰匙怎麼破不開 瀏覽:603
網路列印機共享怎麼連接 瀏覽:313
fme系統找不到指定文件 瀏覽:301
iphoneid和密碼忘了怎麼辦 瀏覽:238
蘋果電腦優盤里的文件如何加密 瀏覽:284
word標題名和文件名一致 瀏覽:957
excel修改後的文件保持了怎麼恢復 瀏覽:340
社保網路認證怎麼弄 瀏覽:92
蘋果手機怎麼傳數據到新手機相冊 瀏覽:50
5s升級ios92無服務 瀏覽:354
ubuntu翻譯工具 瀏覽:665
wifi安裝教程 瀏覽:398
蘋果有些qq文件打不開 瀏覽:139
微信分身圖片緩存在哪個文件 瀏覽:544
眾籌用什麼網站 瀏覽:1
天馬座的幻想版本 瀏覽:536
微雲保存文件圖片沒有了 瀏覽:236
如何把excel表格圖片導出到文件夾 瀏覽:387

友情鏈接