在早期的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頁面的開頭部分將標籤庫引入。詳細內容見下面的代碼:
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%@ taglib prefix="c" uri="myjstl" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- <c:out value="${param.username}"/>
- </body>
-
</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-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">
- ...
- <jsp-config>
- <taglib>
- <taglib-uri>myjstl</taglib-uri>
- <taglib-location>/WEB-INF/tld/c.tld</taglib-location>
- </taglib>
- </jsp-config>
- ...
- </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下加上上面的代碼。直接上代碼:
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- <c:out value="${param.username}"/>
- </body>
- </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文件也要遠程的找,現在把他放到本地了