最近做一個樹形結構的展示,請求目標頁面後,後臺只返回簡單的List,雖然有想過在jsp頁面內做一些操作簡化,但是太繁瑣了,其他的標籤又不能滿足需求,所以只能自己做一個。使用tld標籤可以簡化jsp程式碼,以後也可以重用程式碼,所以出於這兩個優點,用自定義的tld標籤是一個不錯的選擇。這裡只做一個簡單例子,將字串全部變成大寫。
1、定義tld的類
定義的方法應該是static方法。
public class TestFunction { public static String stringUpperCase(String target){ return target.toUpperCase(); } }
2、新增tld標籤
<?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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.0</tlib-version> <short-name>fu</short-name> <uri>/WEB-INF/tags/function.tld</uri> <function> <name>stringUpperCase</name> <function-class>test.tld.TestFunction</function-class> <function-signature>java.lang.String stringUpperCase(java.lang.String)</function-signature> </function> </taglib>
<short-name>表示宣告標籤的呼叫名稱。
<uri>表示tld標籤的位置,tld標籤應該定義在WEB-INF中。這裡我放在WEB-INF的tags資料夾中。
<function-class>tld標籤執行的方法的類。
<function-signature>宣告瞭方法返回的型別,方法名,方法的引數。方法引數可以是List,int等。
3、web.xml中宣告tld標籤
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <jsp-config> <taglib> <taglib-uri>/tags/function</taglib-uri> <taglib-location>/WEB-INF/tags/function.tld</taglib-location> </taglib> </jsp-config> </web-app>
4、使用自定義tld標籤
<%@ taglib prefix="fn" uri="/tags/function" %> ${fn:stringUpperCase(target) }
宣告tld標籤後,才開始使用。target是後臺儲存在request或session的字串。
5、總結
好好使用tld標籤能在關鍵時候使你的頁面更加優雅,在多次使用某段jsp的程式碼,可以封裝起來,使頁面更加簡潔,下次再次使用的時候更加方便。