<%@ taglib uri="" prefix=""%> 使用

在早期的jsp開發中,是使用java代碼來控制邏輯和顯示的,但這樣會給前端開發人員帶來些麻煩並且代碼的可讀性也會降低。爲了解決上述情況,標籤庫被創造出來了。標籤庫的目的在於讓開發人員能像使用html標籤一樣的標籤來完成前端的邏輯控制和內容顯示,而把那些繁瑣、複雜的java代碼隱藏在背後,返還jsp文件的乾淨整潔。

 

標籤庫的組成

      一個標籤庫一般由兩大部分組成:jar文件包和tld(taglib library description)文件。

      1、jar文件包

           這個部分是標籤庫的功能實現部分,由java來實現,此部分不是本文的重點,故詳細內容略。

      2、tld文件

           tld是taglib library description的縮寫,顧名思義此文件是用來描述標籤庫的,其內容爲標籤庫中所有標籤的定

      義,包括標籤名、功能類及各種屬性。

 

標籤庫的使用

      上面大體介紹了標籤庫的一些內容,下面接着來看一下如何在自己的項目中使用標籤庫。以jstl爲例。想要在你的項目中使用jstl標籤庫,必須得先有兩樣東西:jstl.jar、standard.jar兩jar包和標籤庫對應的tld文件。jstl是開源的,所以這兩樣東西都可以免費在這兒下載

       解壓下載下來的壓縮包,將lib文件夾下的jstl.jar、standard.jar加入到你的工程的classpath下,將tld文件夾copy到工程的WEB-INF目錄下。到這兒,你的工程就已經支持jstl標籤了。接下來你需要做的就是在需要使用jstl標籤的jsp頁面的開頭部分將標籤庫引入。詳細內容見下面的代碼:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <%@ taglib prefix="c" uri="myjstl" %>  
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  5. <html>  
  6. <head>  
  7.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  8.     <title>Insert title here</title>  
  9. </head>  
  10. <body>  
  11.     <c:out value="${param.username}"/>  
  12. </body>  
  13. </html> 

      <%@ taglib prefix="c" uri="myjstl" %>這句話將JSTL core標籤庫引入jstltest.jsp。

      prefix="c"是爲了使用方便而給該標籤庫起的一個別名,這樣在使用時就不用每次都要把較長的標籤庫名寫出來。

      uri="myjstl"將在下面做詳細介紹。

      <c:out value="${param.username}"/>是這個庫中的out標籤的使用例。本文不對jstl標籤的用法做詳細說明。

taglib的uri

      當你在某個標籤庫引入jsp文件時,<%@ taglib prefix="c" uri="myjstl" %>中的uri有兩種寫法。

      1、自定義。

           你可以自己起個有個性的名字,但這樣做的後果就是,編譯器會找不到用的標籤的tld文件,從而找不到這個標籤的

      功能支持類,導致標籤無法正常工作。

           如果你使用了自定義uri的話,你還需要在該工程的web.xml下加入如下信息:

Web.xml代碼  收藏代碼
  1. <web-app id="WebApp_ID" version="2.4" 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-app_2_4.xsd">  
  2.                 ...  
  3.     <jsp-config>  
  4.        <taglib>  
  5.            <taglib-uri>myjstl</taglib-uri>  
  6.            <taglib-location>/WEB-INF/tld/c.tld</taglib-location>  
  7.        </taglib>  
  8.     </jsp-config>  
  9.                 ...  
  10. </web-app>  

           這下編譯器就能通過這座“橋”找到對應的tld文件了。

           值得一提的是上面的web.xml用的xml Schema爲http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd

      這個Schema規定的<taglib>節點應該在<jsp-config>下,而2.4以前的版本<taglib>節點直接就在<web-app>

      下。

    

      2、標準定義

           當你打開一個tld文件時,在文件的頭部會有一個<uri>節點,裏面的內容即爲uri的標準定義。使用標準定義的優點

      在於,不用在web.xml下加上上面的代碼。直接上代碼:

Jstltest.jsp代碼  收藏代碼
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  5. <html>  
  6. <head>  
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  8. <title>Insert title here</title>  
  9. </head>  
  10. <body>  
  11.     <c:out value="${param.username}"/>  
  12. </body>  
  13. </html>  

:你把jstl的tld文件下下來,然後放到WEB-INF目錄下面 然後在web.xml裏面配置寫上  /WEB-INF/tlds/c.tld /WEB-INF/tlds/c.tld  頁面中寫: <%@ taglib uri="/WEB-INF/tlds/c.tld" prefix="c"%> 這樣就能理解了!  http://java.sun.com/jstl/fmt-rt這是遠程的地址,tld文件也要遠程的找,現在把他放到本地了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章