jsp简单标签开发
一、簡(jiǎn)單標(biāo)簽(SimpleTag)
由于傳統(tǒng)標(biāo)簽使用三個(gè)標(biāo)簽接口來完成不同的功能,顯得過于繁瑣,不利于標(biāo)簽技術(shù)的推廣, SUN公司為降低標(biāo)簽技術(shù)的學(xué)習(xí)難度,在JSP 2.0中定義了一個(gè)更為簡(jiǎn)單、便于編寫和調(diào)用的SimpleTag接口來實(shí)現(xiàn)標(biāo)簽的功能。
實(shí)現(xiàn)SimpleTag接口的標(biāo)簽通常稱為簡(jiǎn)單標(biāo)簽。簡(jiǎn)單標(biāo)簽共定義了5個(gè)方法:
- setJspContext方法
- setParent和getParent方法
- setJspBody方法
- doTag方法(非常重要),簡(jiǎn)單標(biāo)簽使用這個(gè)方法就可以完成所有的業(yè)務(wù)邏輯
二、SimpleTag方法介紹
2.1、setJspContext方法
用于把JSP頁面的pageContext對(duì)象傳遞給標(biāo)簽處理器對(duì)象
2.2、setParent方法
用于把父標(biāo)簽處理器對(duì)象傳遞給當(dāng)前標(biāo)簽處理器對(duì)象
2.3、getParent方法
用于獲得當(dāng)前標(biāo)簽的父標(biāo)簽處理器對(duì)象
2.4、setJspBody方法
用于把代表標(biāo)簽體的JspFragment對(duì)象傳遞給標(biāo)簽處理器對(duì)象
2.5、doTag方法
用于完成所有的標(biāo)簽邏輯,包括輸出、迭代、修改標(biāo)簽體內(nèi)容等。在doTag方法中可以拋出javax.servlet.jsp.SkipPageException異常,用于通知WEB容器不再執(zhí)行JSP頁面中位于結(jié)束標(biāo)記后面的內(nèi)容,這等效于在傳統(tǒng)標(biāo)簽的doEndTag方法中返回Tag.SKIP_PAGE常量的情況。
三、SimpleTag接口方法的執(zhí)行順序
當(dāng)web容器開始執(zhí)行標(biāo)簽時(shí),會(huì)調(diào)用如下方法完成標(biāo)簽的初始化:
四、開發(fā)簡(jiǎn)單標(biāo)簽實(shí)現(xiàn)頁面邏輯
SUN公司針對(duì)SimpleTag接口提供了一個(gè)默認(rèn)的實(shí)現(xiàn)類SimpleTagSupport,SimpleTagSupport類中實(shí)現(xiàn)了SimpleTag接口的所有方法,因此我們可以編寫一個(gè)類繼承SimpleTagSupport類,然后根據(jù)業(yè)務(wù)需要再重寫doTag方法。
4.1、控制jsp頁面某一部分內(nèi)容是否執(zhí)行
編寫一個(gè)類繼承SimpleTagSupport,然后再重寫doTag方法,在doTag方法里面不調(diào)用jspFrament.invoke方法即可。
示例代碼如下:
SimpleTagDemo1.java
1 package me.gacl.web.simpletag;2 3 import java.io.IOException;4 5 import javax.servlet.jsp.JspException;6 import javax.servlet.jsp.PageContext;7 import javax.servlet.jsp.tagext.JspFragment;8 import javax.servlet.jsp.tagext.SimpleTagSupport;9 10 /** 11 * @author gacl 12 * SimpleTagSupport類實(shí)現(xiàn)了SimpleTag接口, 13 * SampleTagDemo1類繼承SimpleTagSupport 14 */ 15 public class SimpleTagDemo1 extends SimpleTagSupport { 16 17 /* 簡(jiǎn)單標(biāo)簽使用這個(gè)方法就可以完成所有的業(yè)務(wù)邏輯 18 * @see javax.servlet.jsp.tagext.SimpleTagSupport#doTag() 19 * 重寫doTag方法,控制標(biāo)簽體是否執(zhí)行 20 */ 21 @Override 22 public void doTag() throws JspException, IOException { 23 //得到代表jsp標(biāo)簽體的JspFragment 24 JspFragment jspFragment = this.getJspBody(); 25 26 //得到j(luò)sp頁面的的PageContext對(duì)象 27 //PageContext pageContext = (PageContext) jspFragment.getJspContext(); 28 //調(diào)用JspWriter將標(biāo)簽體的內(nèi)容輸出到瀏覽器 29 //jspFragment.invoke(pageContext.getOut()); 30 31 //將標(biāo)簽體的內(nèi)容輸出到瀏覽器 32 jspFragment.invoke(null); 33 34 } 35 }在WEB-INF目錄下新建一個(gè)simpletag.tld文件,然后在simpletag.tld文件中添加對(duì)該標(biāo)簽處理類的描述,如下:
simpletag.tld文件代碼如下:
1 <?xml version="1.0" encoding="UTF-8" ?>2 3 <taglib xmlns="http://java.sun.com/xml/ns/j2ee"4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"5 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"6 version="2.0">7 <!-- description用來添加對(duì)taglib(標(biāo)簽庫)的描述 -->8 <description>孤傲蒼狼開發(fā)的SimpleTag自定義標(biāo)簽庫</description>9 <!--taglib(標(biāo)簽庫)的版本號(hào) --> 10 <tlib-version>1.0</tlib-version> 11 <short-name>GaclSimpleTagLibrary</short-name> 12 <!-- 13 為自定義標(biāo)簽庫設(shè)置一個(gè)uri,uri以/開頭,/后面的內(nèi)容隨便寫,如這里的/simpletag , 14 在Jsp頁面中引用標(biāo)簽庫時(shí),需要通過uri找到標(biāo)簽庫 15 在Jsp頁面中就要這樣引入標(biāo)簽庫:<%@taglib uri="/simpletag" prefix="gacl"%> 16 --> 17 <uri>/simpletag</uri> 18 19 <!--一個(gè)taglib(標(biāo)簽庫)中包含多個(gè)自定義標(biāo)簽,每一個(gè)自定義標(biāo)簽使用一個(gè)tag標(biāo)記來描述 --> 20 <!-- 一個(gè)tag標(biāo)記對(duì)應(yīng)一個(gè)自定義標(biāo)簽 --> 21 <tag> 22 <description>SimpleTag(簡(jiǎn)單標(biāo)簽)Demo1</description> 23 <!-- 24 為標(biāo)簽處理器類配一個(gè)標(biāo)簽名,在Jsp頁面中使用標(biāo)簽時(shí)是通過標(biāo)簽名來找到要調(diào)用的標(biāo)簽處理器類的 25 通過demo1就能找到對(duì)應(yīng)的me.gacl.web.simpletag.SimpleTagDemo1類 26 --> 27 <name>demo1</name> 28 <!-- 標(biāo)簽對(duì)應(yīng)的處理器類--> 29 <tag-class>me.gacl.web.simpletag.SimpleTagDemo1</tag-class> 30 <!-- 31 tld文件中有四種標(biāo)簽體類型 :empty JSP scriptless tagdepentend 32 在簡(jiǎn)單標(biāo)簽(SampleTag)中標(biāo)簽體body-content的值只允許是empty和scriptless,不允許設(shè)置成JSP,如果設(shè)置成JSP就會(huì)出現(xiàn)異常 33 在傳統(tǒng)標(biāo)簽中標(biāo)簽體body-content的值只允許是empty和JSP 34 如果標(biāo)簽體body-content的值設(shè)置成tagdepentend,那么就表示標(biāo)簽體里面的內(nèi)容是給標(biāo)簽處理器類使用的, 35 例如:開發(fā)一個(gè)查詢用戶的sql標(biāo)簽,此時(shí)標(biāo)簽體重的SQL語句就是給SQL標(biāo)簽的標(biāo)簽處理器來使用的 36 <gacl:sql>SELECT * FROM USER</gacl:sql> 37 在這種情況下,sql標(biāo)簽的<body-content>就要設(shè)置成tagdepentend,tagdepentend用得比較少,了解一下即可 38 --> 39 <body-content>scriptless</body-content> 40 </tag> 41 </taglib>在jsp頁面中導(dǎo)入并使用自定義標(biāo)簽,如下:
1 <%@ page language="java" pageEncoding="UTF-8"%>2 <%--在jsp頁面中導(dǎo)入自定義標(biāo)簽庫 --%>3 <%@taglib uri="/simpletag" prefix="gacl" %>4 <!DOCTYPE HTML>5 <html>6 <head>7 <title>用簡(jiǎn)單標(biāo)簽控制標(biāo)簽體是否執(zhí)行</title>8 </head>9 10 <body> 11 12 <%--在jsp頁面中使用自定義標(biāo)簽 demo1標(biāo)簽是帶有標(biāo)簽體的,標(biāo)簽體的內(nèi)容是"孤傲蒼狼"這幾個(gè)字符串--%> 13 <gacl:demo1> 14 孤傲蒼狼 15 </gacl:demo1> 16 </body> 17 </html>運(yùn)行效果如下:
4.2、控制jsp頁面內(nèi)容重復(fù)執(zhí)行
編寫一個(gè)類繼承SimpleTagSupport,然后再重寫doTag方法,在doTag方法里面重復(fù)調(diào)用jspFrament.invoke方法即可。
示例代碼如下:
SimpleTagDemo2.java
1 package me.gacl.web.simpletag;2 3 import java.io.IOException;4 5 import javax.servlet.jsp.JspException;6 import javax.servlet.jsp.tagext.JspFragment;7 import javax.servlet.jsp.tagext.SimpleTagSupport;8 9 /** 10 * @author gacl 11 * SimpleTagSupport類實(shí)現(xiàn)了SimpleTag接口, 12 * SampleTagDemo2類繼承SimpleTagSupport 13 */ 14 public class SimpleTagDemo2 extends SimpleTagSupport { 15 16 /* 簡(jiǎn)單標(biāo)簽使用這個(gè)方法就可以完成所有的業(yè)務(wù)邏輯 17 * @see javax.servlet.jsp.tagext.SimpleTagSupport#doTag() 18 * 重寫doTag方法,控制標(biāo)簽執(zhí)行5次 19 */ 20 @Override 21 public void doTag() throws JspException, IOException { 22 // 得到代表jsp標(biāo)簽體的JspFragment 23 JspFragment jspFragment = this.getJspBody(); 24 for (int i = 0; i < 5; i++) { 25 // 將標(biāo)簽體的內(nèi)容輸出到瀏覽器 26 jspFragment.invoke(null); 27 } 28 } 29 }在WEB-INF目錄下的simpletag.tld文件中添加對(duì)該標(biāo)簽處理類的描述,如下:
1 <tag> 2 <!-- 標(biāo)簽名 --> 3 <name>demo2</name> 4 <!-- 標(biāo)簽處理器類--> 5 <tag-class>me.gacl.web.simpletag.SimpleTagDemo2</tag-class> 6 <!-- 標(biāo)簽體允許的內(nèi)容 ,scriptless表示標(biāo)簽體的內(nèi)容不允許是java腳本代碼--> 7 <body-content>scriptless</body-content> 8 </tag>在jsp頁面中導(dǎo)入并使用自定義標(biāo)簽,如下:
1 <%@ page language="java" pageEncoding="UTF-8"%>2 <%--在jsp頁面中導(dǎo)入自定義標(biāo)簽庫 --%>3 <%@taglib uri="/simpletag" prefix="gacl" %>4 <!DOCTYPE HTML>5 <html>6 <head>7 <title>用簡(jiǎn)單標(biāo)簽控制標(biāo)簽體執(zhí)行5次</title>8 </head>9 10 <body> 11 12 <%--在jsp頁面中使用自定義標(biāo)簽 --%> 13 <gacl:demo2> 14 孤傲蒼狼<p/> 15 </gacl:demo2> 16 </body> 17 </html>運(yùn)行效果如下:
4.3、修改jsp頁面內(nèi)容輸出
編寫一個(gè)類繼承SimpleTagSupport,然后再重寫doTag方法,在doTag方法調(diào)用jspFrament.invoke方法時(shí),讓執(zhí)行結(jié)果寫一個(gè)自定義的緩沖中即可,然后開發(fā)人員可以取出緩沖的數(shù)據(jù)修改輸出。
示例代碼如下:
SimpleTagDemo3.java
1 package me.gacl.web.simpletag;2 3 import java.io.IOException;4 import java.io.StringWriter;5 6 import javax.servlet.jsp.JspException;7 import javax.servlet.jsp.PageContext;8 import javax.servlet.jsp.tagext.JspFragment;9 import javax.servlet.jsp.tagext.SimpleTagSupport; 10 11 /** 12 * @author gacl 13 * SimpleTagSupport類實(shí)現(xiàn)了SimpleTag接口, 14 * SampleTagDemo3類繼承SimpleTagSupport 15 */ 16 public class SimpleTagDemo3 extends SimpleTagSupport { 17 18 /* 簡(jiǎn)單標(biāo)簽使用這個(gè)方法就可以完成所有的業(yè)務(wù)邏輯 19 * @see javax.servlet.jsp.tagext.SimpleTagSupport#doTag() 20 * 重寫doTag方法,修改標(biāo)簽體里面的內(nèi)容,將標(biāo)簽體的內(nèi)容轉(zhuǎn)換成大寫 21 */ 22 @Override 23 public void doTag() throws JspException, IOException { 24 // 得到代表jsp標(biāo)簽體的JspFragment 25 JspFragment jspFragment = this.getJspBody(); 26 StringWriter sw = new StringWriter(); 27 //將標(biāo)簽體的內(nèi)容寫入到sw流中 28 jspFragment.invoke(sw); 29 //獲取sw流緩沖區(qū)的內(nèi)容 30 String content = sw.getBuffer().toString(); 31 content = content.toUpperCase(); 32 PageContext pageContext = (PageContext) this.getJspContext(); 33 //將修改后的content輸出到瀏覽器中 34 pageContext.getOut().write(content); 35 } 36 }在WEB-INF目錄下的simpletag.tld文件中添加對(duì)該標(biāo)簽處理類的描述,如下:
1 <tag> 2 <!-- 標(biāo)簽名 --> 3 <name>demo3</name> 4 <!-- 標(biāo)簽處理器類--> 5 <tag-class>me.gacl.web.simpletag.SimpleTagDemo3</tag-class> 6 <!-- 標(biāo)簽體允許的內(nèi)容 ,scriptless表示標(biāo)簽體的內(nèi)容不允許是java腳本代碼--> 7 <body-content>scriptless</body-content> 8 </tag>在jsp頁面中導(dǎo)入并使用自定義標(biāo)簽,如下:
1 <%@ page language="java" pageEncoding="UTF-8"%>2 <%--在jsp頁面中導(dǎo)入自定義標(biāo)簽庫 --%>3 <%--<%@taglib uri="/simpletag" prefix="gacl" %>--%>4 <%--在jsp頁面中也可以使用這種方式導(dǎo)入標(biāo)簽庫,直接把uri設(shè)置成標(biāo)簽庫的tld文件所在目錄 --%>5 <%@taglib uri="/WEB-INF/simpletag.tld" prefix="gacl"%>6 <!DOCTYPE HTML>7 <html>8 <head>9 <title>用簡(jiǎn)單標(biāo)簽修改jsp頁面內(nèi)容輸出</title> 10 </head> 11 12 <body> 13 14 <%--在jsp頁面中使用自定義標(biāo)簽 --%> 15 <gacl:demo3> 16 gacl_xdp 17 </gacl:demo3> 18 </body> 19 </html>運(yùn)行效果如下:
4.4、控制整個(gè)jsp頁面是否執(zhí)行
編寫一個(gè)類繼承SimpleTagSupport,然后再重寫doTag方法,在doTag方法拋出SkipPageException異常即可,jsp收到這個(gè)異常,將忽略標(biāo)簽余下jsp頁面的執(zhí)行。
示例代碼如下:
SimpleTagDemo4.java
1 package me.gacl.web.simpletag;2 3 import java.io.IOException;4 import javax.servlet.jsp.JspException;5 import javax.servlet.jsp.SkipPageException;6 import javax.servlet.jsp.tagext.SimpleTagSupport;7 8 /**9 * @author gacl 10 * SimpleTagSupport類實(shí)現(xiàn)了SimpleTag接口, 11 * SampleTagDemo4類繼承SimpleTagSupport 12 */ 13 public class SimpleTagDemo4 extends SimpleTagSupport { 14 15 /* 簡(jiǎn)單標(biāo)簽使用這個(gè)方法就可以完成所有的業(yè)務(wù)邏輯 16 * @see javax.servlet.jsp.tagext.SimpleTagSupport#doTag() 17 * 重寫doTag方法,控制標(biāo)簽余下的Jsp不執(zhí)行 18 */ 19 @Override 20 public void doTag() throws JspException, IOException { 21 //拋出一個(gè)SkipPageException異常就可以控制標(biāo)簽余下的Jsp不執(zhí)行 22 throw new SkipPageException(); 23 } 24 }在WEB-INF目錄下的simpletag.tld文件中添加對(duì)該標(biāo)簽處理類的描述,如下:
1 <tag> 2 <!-- 標(biāo)簽名 --> 3 <name>demo4</name> 4 <!-- 標(biāo)簽處理器類--> 5 <tag-class>me.gacl.web.simpletag.SimpleTagDemo4</tag-class> 6 <!-- 標(biāo)簽體允許的內(nèi)容 ,empty表示該標(biāo)簽沒有標(biāo)簽體--> 7 <body-content>empty</body-content> 8 </tag>在jsp頁面中導(dǎo)入并使用自定義標(biāo)簽,如下:
1 <%@ page language="java" pageEncoding="UTF-8"%>2 <%--在jsp頁面中導(dǎo)入自定義標(biāo)簽庫 --%>3 <%--<%@taglib uri="/simpletag" prefix="gacl" %>--%>4 <%--在jsp頁面中也可以使用這種方式導(dǎo)入標(biāo)簽庫,直接把uri設(shè)置成標(biāo)簽庫的tld文件所在目錄 --%>5 <%@taglib uri="/WEB-INF/simpletag.tld" prefix="gacl"%>6 <!DOCTYPE HTML>7 <html>8 <head>9 <title>用簡(jiǎn)單標(biāo)簽控制標(biāo)簽余下的Jsp不執(zhí)行</title> 10 </head> 11 12 <body> 13 <h1>孤傲蒼狼</h1> 14 <%--在jsp頁面中使用自定義標(biāo)簽 --%> 15 <gacl:demo4/> 16 <!-- 這里的內(nèi)容位于 <gacl:demo4/>標(biāo)簽后面,因此不會(huì)輸出到頁面上 --> 17 <h1>白虎神皇</h1> 18 </body> 19 </html>運(yùn)行效果如下:
五、簡(jiǎn)單標(biāo)簽開發(fā)的一些注意細(xì)節(jié)
5.1、標(biāo)簽類編寫細(xì)節(jié)
開發(fā)標(biāo)簽類時(shí),不要直接去實(shí)現(xiàn)SimpleTag接口,而是應(yīng)該繼承SimpleTagSupport類,SimpleTagSupport類是SimpleTag接口的一個(gè)默認(rèn)實(shí)現(xiàn)類,通過繼承SimpleTagSupport類,就可以直接使用SimpleTagSupport類已經(jīng)實(shí)現(xiàn)的那些方法,如果SimpleTagSupport類的方法實(shí)現(xiàn)不滿足業(yè)務(wù)要求,那么就可以根據(jù)具體的業(yè)務(wù)情況將相應(yīng)的方法進(jìn)行重寫。
5.2、tld文件中標(biāo)簽體類型設(shè)置細(xì)節(jié)
我們開發(fā)好一個(gè)簡(jiǎn)單標(biāo)簽后,需要在tld文件中添加對(duì)該標(biāo)簽的描述,例如:
1 <tag> 2 <!-- 標(biāo)簽名 --> 3 <name>demo2</name> 4 <!-- 標(biāo)簽處理器類--> 5 <tag-class>me.gacl.web.simpletag.SimpleTagDemo2</tag-class> 6 <!-- 標(biāo)簽體允許的內(nèi)容 ,scriptless表示標(biāo)簽體的內(nèi)容不允許是java腳本代碼--> 7 <body-content>scriptless</body-content> 8 </tag>開發(fā)好一個(gè)標(biāo)簽后,在tld文件中使用<tag>來描述一個(gè)標(biāo)簽,描述的內(nèi)容包括標(biāo)簽名(name),標(biāo)簽處理器類(tag-class),標(biāo)簽體的內(nèi)容(body-content)。
tld文件中有四種標(biāo)簽體(body-content)類型 :empty、JSP、scriptless、tagdependent?
簡(jiǎn)單標(biāo)簽標(biāo)簽體的細(xì)節(jié)注意問題:
?? ??在簡(jiǎn)單標(biāo)簽(SampleTag)中標(biāo)簽體body-content的值只允許是empty、scriptless、tagdependent,不允許設(shè)置成JSP,如果設(shè)置成JSP就會(huì)出現(xiàn)異常:
body-content的值如果設(shè)置成empty,那么就表示該標(biāo)簽沒有標(biāo)簽體,如果是設(shè)置成scriptless,那么表示該標(biāo)簽是有標(biāo)簽體的,但是標(biāo)簽體中的內(nèi)容不可以是<%java代碼%>,例如:
1 <gacl:xdpdemo1> 2 <% 3 //嵌套在標(biāo)簽體中的java代碼 4 int i= 0; 5 %> 6 孤傲蒼狼 7 </gacl:xdpdemo1>否則運(yùn)行標(biāo)簽時(shí)就會(huì)出現(xiàn)如下錯(cuò)誤:
1 Scripting elements ( <%!, <jsp:declaration, <%=, <jsp:expression, <%, <jsp:scriptlet ) are disallowed herejsp標(biāo)簽技術(shù)出現(xiàn)的目的就是為了移除在jsp頁面上編寫的java代碼的,如果在jsp標(biāo)簽中允許出現(xiàn)java代碼,那么就違背了jsp標(biāo)簽技術(shù)設(shè)計(jì)時(shí)的初衷了。所以在簡(jiǎn)單標(biāo)簽的標(biāo)簽體中是不允許出現(xiàn)java代碼的。
傳統(tǒng)標(biāo)簽標(biāo)簽體的細(xì)節(jié)注意問題:
?? ??在傳統(tǒng)標(biāo)簽中標(biāo)簽體body-content的值允許是empty、JSP、scriptless、tagdependent,body-content的值如果是設(shè)置成JSP,那么表示該標(biāo)簽是有標(biāo)簽體的,并且標(biāo)簽體的內(nèi)容可以是任意的,包括java代碼,如果是設(shè)置成scriptless,那么表示該標(biāo)簽是有標(biāo)簽體的,但是標(biāo)簽體的內(nèi)容不能是java代碼
?? ?
如果傳統(tǒng)標(biāo)簽和簡(jiǎn)單標(biāo)簽的標(biāo)簽體body-content的值設(shè)置成tagdependent,那么就表示標(biāo)簽體里面的內(nèi)容是給標(biāo)簽處理器類使用的,tagdependent用得比較少,了解一下即可
5.3、tld文件中標(biāo)簽庫的uri設(shè)置細(xì)節(jié)
如果在一個(gè)項(xiàng)目中使用或者開發(fā)了多個(gè)標(biāo)簽庫,例如:
那么標(biāo)簽庫的uri不能設(shè)置成相同的,否則在Jsp頁面中通過uri引用標(biāo)簽庫時(shí)就不知道引用哪一個(gè)標(biāo)簽庫了,如果真的有那么巧,兩個(gè)標(biāo)簽庫的uri是剛好一樣的,如下圖所示:
那么在jsp頁面中引用標(biāo)簽庫時(shí)如果"<%@taglib uri="/gacl" prefix="gacl" %>"這樣引用,那么就無法判斷當(dāng)前引用的標(biāo)簽庫到底是gacl.tld標(biāo)簽庫中的標(biāo)簽還是simpletag.tld標(biāo)簽庫中的標(biāo)簽,因?yàn)閮蓚€(gè)標(biāo)簽庫的uri剛好都是"/gacl",在兩個(gè)標(biāo)簽庫的引用uri一樣的情況下,為了能夠在jsp中區(qū)別到底引用的是哪個(gè)標(biāo)簽庫,可以換一種引用方式:<%@taglib uri="要引用的標(biāo)簽庫的tld文件目錄" prefix="gacl"%>,使用taglib指令引入標(biāo)簽庫時(shí),taglib指令的uri屬性指定為標(biāo)簽庫的tld文件目錄,這樣就可以區(qū)別開了,例如:
引用gacl.tld標(biāo)簽庫:<%@taglib uri="/WEB-INF/gacl.tld" prefix="gacl"%>、
引用simpletag.tld標(biāo)簽庫:<%@taglib uri="/WEB-INF/simpletag.tld" prefix="gacl"%>
所以當(dāng)在項(xiàng)目中引用了多個(gè)標(biāo)簽庫,如果標(biāo)簽庫的uri剛好是一樣的,就可以用這種方式解決。
六、簡(jiǎn)單標(biāo)簽開發(fā)步驟總結(jié)
1、編寫一個(gè)類繼承SimpleTagSupport類,然后根據(jù)業(yè)務(wù)需要重寫SimpleTagSupport類中已經(jīng)實(shí)現(xiàn)了的方法,一般情況下只需要重寫doTag()方法即可。
2、在WEB-INF目錄下創(chuàng)建一個(gè)tld文件,在tld文件中添加對(duì)該標(biāo)簽的描述。tld文件不一定放在WEB-INF目錄下,也可以放在別的目錄,習(xí)慣是放在WEB-INF目錄下。
轉(zhuǎn)載于:https://www.cnblogs.com/xiarongjin/p/8367669.html
總結(jié)
- 上一篇: 20155207实验2 Windows口
- 下一篇: 小学生算法一