在如今的web開發中,基於java的應用越來越多。在這其中,servlet又扮演著十分重要的角色。本系列文章就是要介紹一些輔助進行servlet開發的工具,讓大家進行開發時,有多種技術可供選擇。
servlet技術無疑是一種優秀的技術,java服務器端技術大都基於servlet技術。但這種技術也有其自身的不足,例如:表示層(html代碼)與代碼混在一起,可重用性不高。SUN於是提出了jsp技術,jsp也是基於servlet的一種技術,使用它你可以在html中嵌入java代碼。jsp在servlet的基礎上邁進了一大步,但單純的jsp也有上面提到的servlet的缺點。不過利用jsp+javabean+taglib這種開發模式可以解決上面提到的缺點。但jsp本身還有其它一些不足,具體參看The Problems with JSP這篇文章。於是人們便開發了其它一些基於servlet的技術。我們首先介紹一下Tapestry。
簡介
Tapestry是一個開源的基於servlet的應用程序框架,它使用組件對象模型來創建動態的,交互的web應用。一個組件就是任意一個帶有jwcid屬性的html標記。其中jwc的意思是Java Web Component。Tapestry使得java代碼與html完全分離,利用這個框架開發大型應用變得輕而易舉。並且開發的應用很容易維護和升級。Tapestry支持本地化,其錯誤報告也很詳細。Tapestry主要利用javabean和xml技術進行開發。
第一個應用程序
在介紹第一個應用之前,先介紹一下Tapestry的安裝。從sourceforge下載其最新版,解壓後,將lib目錄下的jar文件放到CLASSPATH中,將其中的war文件放到tomcat的webapp目錄下。然後就可以通過http://localhost:8080/tutorial訪問其tutorial應用。
在Tapestry中一個應用程序有以下幾部分組成,我們以其自身帶的HelloWorld程序為例介紹:
Servlet:
這是一個應用的主體部分:servlet類,這個類必須是ApplicationServlet的子類,並且必須實現getApplicationSpecificationPath()方法。示例如下:
import com.primix.tapestry.*;
public class HelloWorldServlet extends ApplicationServlet
{
protected String getApplicationSpecificationPath()
{
return "/tutorial/hello/HelloWorld.application";
}
}
/tutorial/hello/HelloWorld.application是一個應用的說明文件。
Application Specification:
其實就是描述這個應用的一個xml文件,在這個應用中有許多參數需要設置,engine-class將在下面介紹,page中的name屬性指定html文件名,specification-path指定對這個頁面的說明文件。在一個應用中可以有很多個page,但必須有一個page的name為"Home",因為當訪問你的應用時,首先顯示的就是這個page。