天天看點

JSP Tag檔案總結

Tag檔案是<jsp:include>替代技術,也是為了提高JSP頁面中代碼的子產品化和重用;可以被JSP頁面動态加載調用;

對于tag标簽,需要掌握:tag檔案的定義、tag檔案的使用、如何定義tag的屬性,如何定義tag檔案的傳回值、tag檔案的嵌套調用

1、Tag檔案存放位置

Tag檔案存放在項目的WEB-INF/Tags目錄下;使用者可以在該目錄下設定子目錄;

2、如何在JSP頁面中調用Tag檔案

需要2步:

(1)使用taglib指令引入标記:

<%@ taglib tagdir="/WEB-INF/tags" prefix="字首" %>
           

   其中tagdir屬性設定tag檔案存放的位置;prefix屬性設定通路把tag的字首,目的是用于避免tag的名字沖突;

(2)在JSP頁面中調用:

<Tag檔案 />

<Tag檔案 >
   标記體
</Tag檔案>

           

     當JSP頁面調用一個Tag檔案時可能希望動态地向該Tag檔案傳遞資訊,那麼就可以使用帶有标記體的Tag标記來執行一個Tag檔案,Tag标記中的“标記體”就會傳遞給相應的Tag檔案,這個Tag檔案通過使用

        <jsp:doBody />

标記處理JSP頁面傳遞過來的“标記體”。

3、tag指令常見的屬性有哪些?

    body-content、pageEncoding、language、import

  (1)body-content:該屬性用于确定JSP頁面使用該Tag标記時是否可以有body;該屬性的值可以設定為empt、tagdependent、JSP 、scriptless(預設值)

    • empty:表示JSP頁面必須使用無标記體的方式調用标簽,即<Tag檔案名  />
    • tagdependent:标簽體内容直接寫入BodyContent,由自定義标簽自己進行處理,而不被JSP容器解釋;
<test:myList>
select name.age from users
</test:myList>
           
    • JSP:接受所有JSP文法,如定制的或内部的tag、script、靜态html、腳本元素、JSP指令和動作
<my:test>
    <%= request.getProtocol() %>
</my:test>
           
  • scriptless::接受文本、EL和JSP動作;

 (2)language:       指定tag檔案使用的腳本語言;

 (3)import:           導入tag要使用的類,預設如下包已導入:"java.lang.*"、 "javax.servlet.*"、 "javax.servlet.jsp.*"、"javax.servlet.http.*"

(4)pageEncoding:tag檔案的編碼方式,預設為ISO-8859-1;

4、JSP頁面如何向tag檔案傳遞參數?

可以在tag檔案中通過attribute指令設定tag需要接收的屬性,這樣,jsp頁面可以通過設定的屬性向tag檔案傳遞參數,如果把attribute指令相當于用于定于函數的參數

<%@ attribute name="對象名“ required=”true|false“ type="對象類型"
<%--tag檔案中屬性的定義 --%>
<%@  attribute name="length" required="true" %>

<%-- JSP 調用tag檔案  --%>
<computer:myTag length="1000" />
           

5、Tag檔案如何向調用的JSP頁面傳回結果?

(1)首先在tag檔案中使用variable指令定義需要傳回的對象,文法如下:

<%@ variable name-given="對象名字” variable-class="對象的類型" scope=“AT_END” %>
           

 (2)在tag檔案中使用

jspContext調用setAttribute(“對象的名字”,對象的引用)方法存儲對象的名字以及該對象的引用
           

 (3)在JSP頁面中調用tag檔案,調用完成後可以直接使用“對象名”