JSP實現自定義標籤Taglib重點總結

Taglib指令介紹


Taglib指令,其實就是定義一個標籤庫以及自定義標籤的前綴。

比如struts中支持的標籤庫,html標籤庫、bean標籤庫、logic標籤庫。

其中的具體的實現方式,我們不過多介紹,我們給大家從宏觀的角度以及解決其中的疑難點,後面會大家介紹相應的學習
資料。

除了struts的標籤庫,我們常見還有jstl標籤庫。

這樣在界面jsp中引入其中的標籤庫或者標籤庫文件,然後纔可以正常使用其中定義的標籤。
  1. <%@ taglib prefix ="bean"  uri"http://struts.apache.org/tags-bean" %>  
  2. <%@ taglib prefix ="logic"  uri"http://struts.apache.org/tags-logic" %>  
  3. <%@ taglib prefix ="html"  uri"http://struts.apache.org/tags-html" %>  
  4. <%@ taglib prefix ="c"  uri="http://java.sun.com/jsp/jstl/core" %>  

自定義標籤庫優點


在jsp1.1版本中就增加了自定義標籤庫。自定義標籤庫可以看作一種優秀的組件。在自定義標籤庫中,我們可以把複雜的業務邏輯功能都封裝在標籤庫中了。而不必在jsp中寫具體的代碼。這樣,jsp代碼與java編碼能力不必強制耦合在一起。
提到jsp版本的問題,我們首先應該確定我們jsp版本,因爲版本不同,標籤庫文件引入的頭文件不同,並且其中的標籤也有差異。

如何查看我們使用的jsp版本或servlet版本


打開tomcat下lib文件下的jsp-api.jar下的/META-INF/MANIFEST.MF文件,查看jsp版本。

因爲我已經導入eclispe中,圖如下:
 

 
lib文件下的servlet-api.jar下的/META-INF/MANIFEST.MF文件,查看servlet版本

因爲我已經導入eclispe中,圖如下:
 

Jsp2新增的特性


上述圖中jsp版本是2.2,servlet版本是3.0。目前servlet3.0對應的是jsp2.2規範,但是一般情況下,我們把jsp2.0與jsp2.2都統稱爲jsp2.

如果我們使用jsp2,則web.xml使用的是servlet2.4以上的版本。那我們看一下web.xml對應的頭文件:
新增的特性是:
  1. <web-app version"2.4"  
  2.      xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee  
  5.      http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >  
  6. </web-app>  


1.直接配置jsp的屬性

比如在web.xml中配置:
  1. < jsp-config>  
  2.   <jsp-property-group >  
  3.    <!--  對那些文件進行應用 -->  
  4.     <url-pattern >*. jsp</ url-pattern>  
  5.   <!--   忽略el表達式 -->  
  6.     <el-ignored >true </el-ignored >  
  7.   </jsp-property-group >  
  8. </ jsp-config>  
 當然還有很多功能:
 
2.表達式語言

表達式語言,就是使用el表達式。

3.使用TagFile

使用TagFile可以代替標籤處理類和庫文件。

jsp1和jsp2的標籤庫文件中的頭文件


jsp1的標籤文件的頭文件:
  1. <?xml version="1.0" encoding"UTF-8"?>  
  2. <!DOCTYPE taglib  
  3.    PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"  
  4.    "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">  


根據後綴dtd,知道這是引入dtd文件,但是這具體表示什麼意思呢?

若是引入dtd文件,則使用DOCTYPE 這種形式。但是 PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"是什麼意思呢?
根據xml中,如何引入dtd文件?引入dtd文件有以下形式:

1.在xml文檔內部引入dtd
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE note [  
  3.   <!ELEMENT note (to,from,heading,body)>  
  4.   <!ELEMENT to      (#PCDATA)>  
  5.   <!ELEMENT from    (#PCDATA)>  
  6.   <!ELEMENT heading (#PCDATA)>  
  7.   <!ELEMENT body    (#PCDATA)>  
  8. ]>  
  9. <note>  
  10.   <to>George</to>  
  11.   <from>John</from>  
  12.   <heading>Reminder</heading>  
  13.   <body>Don't forget the meeting!</body>  
  14. </note>  

 
2.在xml文檔引入外部dtd文件
  1. <?xml version="1.0"?>  
  2. <!DOCTYPE note SYSTEM "note.dtd">  
  3. <note>  
  4. <to>George</to>  
  5. <from>John</from>  
  6. <heading>Reminder</heading>  
  7. <body>Don't forget the meeting!</body>  
  8. </note>   
  9.   
  10. <!ELEMENT note (to,from,heading,body)>  
  11. <!ELEMENT to (#PCDATA)>  
  12. <!ELEMENT from (#PCDATA)>  
  13. <!ELEMENT heading (#PCDATA)>  
  14. <!ELEMENT body (#PCDATA)>  
在文檔類型聲明時,用管間質SYSTEM或PUBLIC來指出外部DTD文件的位置
用system關鍵字,如下:<!DOCTYPE 根元素的名字 SYSTEM "外部DTD文件的URI">
用public如下:<!DOCTYPE 根元素的名字 PUBLIC "DTD的名字" "外部DTD文件的URI">
一般用system關鍵字來形容是私有的dtd文件。
而public關鍵字來形容的是公共的dtd文件。public形式,首先默認的根據dtd的名字來尋找dtd文件,找不到,則會根據dtd文件的uri尋找文件。
jsp2中標籤文件的頭文件如下:其中是使用的schema形式而不是dtd文件。
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <taglib xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"  
  5.   version="2.0"></taglib>  
  6.                       

標籤庫文件位置


把tld文件放在WebContent目錄下或其子目錄下。這樣的話,web.xml不用配置其位置即可。tomcat直接讀取webcontent下的tld文件。


自定義標籤的實現


這部分內容,自己具體的不展示了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章