利用JSP 2.0開發Web應用程式2

來源:互聯網
上載者:User
js|web|程式

標籤處理器

JSP 1.2中傳統的標籤處理API由於允許標籤體中包含scriptlet而變得複雜,但是現在利用運算式語言可以編寫不含scriptlet的JSP網頁。最終,JSP 2.0引入了一種新的標籤擴充機制,稱為“簡單標籤擴充”,這種機制有兩種使用方式:

  1. Java開發人員可以定義實現介面javax.servlet.jsp.tagext.SimpleTag的類;
  2. 不懂Java的網頁編寫人員則可以使用標籤檔案。

首先來看第一種方式,程式碼範例6給出了一個簡單的標籤處理器,它的作用僅僅是列印“This is my first tag! ”。

程式碼範例6: HelloTag.java

package jsp2.examples.simpletag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;import java.io.IOException;
/**
* SimpleTag handler that prints "This is my first tag!"
*/
public class HelloTag extends SimpleTagSupport {
public void doTag() throws JspException, IOException {
getJspContext().getOut().write("This is my first tag!");
}
}

編譯成功後,下一步就要在TLD中定義一個標籤描述符,下面是標籤描述符的例子。

程式碼範例7: 標籤描述符

    <tag>
<description>Prints this is my first tag</description>
<name>hello</name>
<tag-class>jsp2.examples.simpletag.HelloTag</tag-class>
<body-content>empty</body-content>
</tag>

最後再編寫一個使用上述標籤的JSP分頁檔,見程式碼範例8。

程式碼範例8: helloworld.jsp

<%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>
<HTML>
<HEAD>
<TITLE>Simple Tag Handler</TITLE>
</HEAD>
<BODY>
<H2>Simple Tag Handler</H2>
<P>
<B>My first tag prints</B>: <mytag:hello/>
</BODY>
</HTML>

要運行這個例子:

  1. 複製HelloTg.java並儲存到C:\Tomcat5.0\webapps\jsp-examples\WEB-INF\classes\jsp2\examples\simpletag下;
  2. 使用javac編譯HelloTag.java;
  3. 把程式碼範例7中的標籤描述符添加到檔案C:\Tomcat5.0\webapps\jsp-examples\WEB-INF\jsp2\jsp2-example-taglib.tld中的</taglib>之前;
  4. 複製helloworld.jsp並儲存到c:\Tomcat5.0\webapps\jsp-examples\jsp2-tutorial目錄中;
  5. 用瀏覽器開啟helloworld.jsp。

如果一切正常,應該會看到類似如圖4所示的畫面。


4:簡單標籤處理器

標籤檔案

使用簡單標籤擴充機制的另一種方法是通過標籤檔案。標籤檔案是一種資源檔,網頁作者可以利用它抽取一段JSP代碼,通過定製功能來實現代碼的複用。換句話說,標籤檔案允許JSP網頁作者使用JSP文法建立可複用的標籤庫。標籤檔案的副檔名必須是“.tag”。

為說明使用標籤檔案是多麼容易,考慮一下程式碼範例9。沒錯,這就是一個標籤檔案!

程式碼範例9: greetings.tag

Hello there. How are you doing?

一旦定義了標籤檔案,就可以在JSP網頁的編寫中使用這種定製的功能。比如程式碼範例10中的JSP網頁。

程式碼範例10: chat.jsp

<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
<HTML>
<HEAD>
<TITLE>JSP 2.0 Examples - Hello World Using a Tag File</TITLE>
</HEAD>
<BODY>
<H2>Tag File Example</H2>
<P>
<B>The output of my first tag file is</B>: <tags:greetings/>
</BODY>
</HTML>

要運行這個例子:

  1. 複製標籤檔案greetings.tags並儲存在c:\Tomcat5.0\webapps\jsp-examples\WEB-INF\tags 目錄下;
  2. 複製JSP網頁檔案char.jsp並儲存在c:\Tomcat5.0\webapps\jsp-examples\jsp2-tutorial 目錄下;
  3. 用瀏覽器開啟chat.jsp檔案。

如果一切正常,應該會看到類似如圖5所示的視窗。


5:簡單的標籤檔案

注意: 重要的是要注意到這裡沒有為問候標籤編寫TLD,而是建立了一個標籤檔案並放在特殊的目錄中,然後用taglib指令匯入並直接使用它。

另一個標籤檔案的例子

標籤檔案可以作為模板使用。考慮程式碼範例11中的標籤檔案display.tag,這個例子是根據Tomcat 5.0中的面板的例子改寫的。指令attribute類似於TLD中的<attribute>元素,允許聲明自訂的動作屬性。

程式碼範例11: display.tag

<%@ attribute name="color" %>
<%@ attribute name="bgcolor" %>
<%@ attribute name="title" %>
<TABLE border="0" bgcolor="${color}"> <TR>
<TD><B>${title}</B></TD>
</TR>
<TR>
<TD bgcolor="${bgcolor}">
<jsp:doBody/>
</TD>
</TR>
</TABLE>

程式碼範例12給出了使用上述標籤的一個簡單的JSP頁面。

程式碼範例12: newsportal.jsp

<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>
<HTML>
<HEAD>
<TITLE>Another Tag File Example</TITLE>
</HEAD>
<BODY>
<H2>News Portal: Another Tag File Example</H2>
<TABLE border="0"> <TR valign="top">
<TD>
<tags:display color="#ff0000" bgcolor="#ffc0c0"
title="Travel">
Last French Concorde Arrives in NY<br/>
Another Travel Headline<br/>
Yet Another Travel Headline<br/>
</tags:display>
</TD>
<TD>
<tags:display color="#00fc00" bgcolor="#c0ffc0"
title="Technology">
Java for in-flight entertainment<BR>
Another Technology Headline<BR>
Another Technology Headline<BR>
</tags:display>
</TD>
<TD>
<tags:display color="#ffcc11" bgcolor="#ffffcc"
title="Sports">
American Football<BR/>
NBA<BR/>
Soccer<BR/>
</tags:display>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>

要運行這個例子:

  1. 複製檔案display.tag並儲存在c:\Tomcat5.0\webapps\jsp-examples\WEB-INF\tag 下;
  2. 複製檔案newsportal.jsp並儲存到c:\Tomcat5.0\webapps\jsp-examples\jsp2-tutorial下;
  3. 用瀏覽器開啟newsportal檔案。

結果應該會得到與圖6類似的畫面。


6:把標籤檔案用作模板

結論

JSP 2.0使得快速開發和維護動態網頁比以前更加容易,儘管“Java”一詞出現在JSP中,但使用JSP2.0,網頁作者無須學習Java程式語言本身,就能開發出全新的動態網頁。本文中的例子說明了使用JSP2.0的新特性開發動態網頁是多麼容易。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.