程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> JSP最佳實踐: 為您的JSP標記創建自定義屬性

JSP最佳實踐: 為您的JSP標記創建自定義屬性

編輯:關於JSP

簡介:BrettMcLaughlin 繼續他的 JSP 最佳實踐系列,這次他將用一個屬性來擴展自定義的時間戳標 記( lastModified ),這個屬性讓頁面作者可以選擇他們自己的時間戳格式。

上一期的 JSP 最佳實踐介紹了在JSP頁面中使用自定義標記庫的基礎知識。在那一期可以學到如何定 義簡單的標記並通過標記庫描述符(tag library descriptor,TLD)讓其他 JSP 作者可以使用該標記。 在這個星期,我們將以您已經知道的有關自定義標記的知識為基礎。我們上次采用的實例標記非常簡單, 還存在一些不足之處。因此,現在我們將通過自定義屬性來擴展該標記的功能性。

關於該實例的一點注解:本期的所有實例代碼都建立在 上次我們開發的 lastModified 標記的基礎之 上。如果您還沒有完整閱讀上一期,那麼在繼續閱讀本期之前您應該回頭閱讀一下上一期。

自定義“Hello, world”

JSP 標記最常見的需求就是能夠接受來自某個頁面(或者頁面作者)的數據,並響應該數據。標記 attributes 允許我們將這種功能性融入到自定義標記中。

舉個非常簡單的例子,比如典型的“Hello, world”應用程序。很容易想象實現這一 scriptlet 的 功能性的自定義標記是什麼樣子,但是,對這個標記作一點點擴展如何?

在清單 1 中我們可以看到一個 JSP 頁面片段,其中有一個典型的“Hello, world!”標記,但是這 個標記包括了一個名為 name 的屬性。

清單 1. 一個簡單的 "Hello, world!" 標記

<p>
   <examples:hello name="Reader" />
</p>

name 屬性為頁面作者將數據提供給 hello 標記創造了空間,在這個例子中,所提供的數據是一個人 的名稱,應用程序將把它的消息轉播給這個人。實際上,我們已經自定義了“Hello, world” ―― 但 我們是怎樣進行定義的呢?清單 2 顯示了用於實現 hello 標記的 Java 代碼 :

清單 2. hello 標記的代碼

package com.ibm.examples;
import java.io.IOException;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class HelloTag extends TagSupport {
   // The "person" to say hello to
   private String name;
   // Accept the attribute data
   public void setName(String name) {
    this.name = name;
   }
   public int doEndTag() {
    try {
    StringBuffer message = new StringBuffer("Hello, ");
    message.append(name)
       .append("!");
    pageContext.getOut().println(message.toString());
   } catch (IOException ignored) { }
   return EVAL_PAGE;
   }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved