1. 程式人生 > >Servlet和JSP之標簽文件學習

Servlet和JSP之標簽文件學習

digi expr 提前 -type 一個 後綴 www. 其中 中標

  在上一篇文章中介紹了自定義標簽的用法,接下來介紹標簽文件的用法啦。


  tag file指令

  tag file簡介

  用tag file的方式,無需編寫標簽處理類和標簽庫描述文件,也可以自定義標簽。tag file從兩個方面簡化了自定義標簽的開發。首先,tag file無須提前編譯,直到第一次調用才會編譯;其次,標簽庫描述文件也不再需要了,使用tag file的方式,tag file名和action相同,因此不需要標簽庫描述文件了。

  一個tag file和JSP頁面一樣,它擁有指令、腳本、EL表達式、動作元素以及自定義的標簽。一個tag file以tag和tagx為後綴,它們可以包含其他資源文件。一個被其他文件包含的tag file應該以tagf為後綴。

  tag文件必須放在應用路徑的WEB-INF/tags目錄下才能生效。和標簽處理類一樣,tag文件可以被打包到jar包裏。

  以下是tag file中可用的隱藏對象(其實跟文章JSP隱藏對象類似):

對象

類型

說明

request

javax.servlet.http.HttpServletRequest

每當客戶端請求一個JSP頁面時,JSP引擎就會制造一個新的reuqest對象來代表這個請求。request對象提供了一系列方法來獲取HTTP頭信息、cookies、HTTP方法等等。

response

javax.servlet.http.HtpServletResponse

當服務器創建request對象時會同時創建用於響應這個客戶端的response對象。response對象也定義了處理HTTP頭模塊的接口。通過這個對象,開發者們可以添加新的cookies、時間戳、HTTP狀態碼等等。

out

javax.servlet.jsp.JspWriter

out對象用來在response對象中寫入內容。

session

javax.servlet.http.HttpSession

session對象用來跟蹤在各個客戶端請求間的會話。

application

javax.servlet.ServletContext

application對象在JSP頁面的整個生命周期中都代表著這個JSP頁面。這個對象在JSP頁面初始化時被創建,隨著jspDestory()的調用而被移除。通過向application中添加屬性,則所有組成web應用的JSP文件都能訪問到這些屬性。

config

javax.servelt.ServletConfig

config對象允許開發者訪問Servlet或者JSP引擎的初始化參數,比如文件路徑等。

pageContext

javax.servlet.jsp.PageContext

pageContext對象主要用來訪問頁面信息,同時過濾大部分實現細節。該對象除了pageContext、page、exception對象的屬性不能導出,其余內置對象的屬性都能導出,而且該對象包含了傳給JSP頁面的指令信息,也定義了一些字段。

page

javax.servlet.jsp.HttpJspPage

page對象就是頁面實例的引用,可以被看做是整個JSP頁面的代表(與this對象同義)

exception

java.lang.Throwable

exception對象包裝了從先前頁面中拋出的異常信息,通常被用來產生對出錯條件的適當響應。

   

  接下來是創建一個標簽文件並且使用的例子:

  創建標簽文件並使用只有兩步:

  ① 編寫標簽文件.tag(例如firstTag.tag),記住要在/WEB-INF/tags中創建此文件哦。

<%@ tag import="java.util.Date" 
    import="java.text.SimpleDateFormat"
    import="java.io.IOException"%>
<%
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
    String dateStr = simpleDateFormat.format(new Date());
    JspWriter jspWriter = getJspContext().getOut();
    jspWriter.write(dateStr);
%>

  ② 編寫jsp測試頁面。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="easy" tagdir="/WEB-INF/tags" %>
<!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>
    Today is <easy:firstTag/>
</body>
</html>

  出來的頁面效果就跟自定義標簽展現出來的樣子是類似的哦。

  技術分享圖片

  tag file指令

  tag file的指令不多,也就那麽幾個:

指令

說明

tag

作用與JSP頁面中的page指令類似

include

用於將其他資源導入tag file中

taglib

用於將自定義標簽庫導入tag file中

attribute

用於將自定義標簽庫導入tag file中

variable

用於將自定義標簽庫導入tag file中

  看著有點懵?沒事兒,接下來會挨個兒解釋。

  ① tag指令

  語法<%@ tag attribute="value" attribute2="value2" %>

  屬性除了import屬性,其他所有的屬性在一個tag指令或一個tag file中都只能出現一次。):

屬性

描述

display-name

在XML工具中顯示的名稱。默認值是不包含後綴的tag file名

body-content

指定標簽body的類型, body-content屬性值有empty、tagdependent、scriptless,默認值是scriptless。

dynamic-attributes

指定tag file動態屬性的名稱。當dynamicattributes值被設定時,會產生一個Map來存放這些動態屬性的名稱和對應的值。

small-icon

指定一個圖片路徑,用於在XML工具上顯示小圖標。一般不會用到。

large-icon

制定一個圖片路徑,用於在XML工具上顯示大圖標。一般不會用到。

description