天天看點

《Servlet和JSP學習指南》一1.3 編寫基礎的Servlet應用程式

servlet應用程式編寫起來非常簡單,隻需要建立一個目錄結構,并将servlet類放在某一個目錄下即可。在本節中,将學習如何編寫一個簡單的servlet應用程式,将它命名為app01a。最初它隻包含一個servlet:myservlet,其會給使用者發送一條問候資訊。

需要用一個servlet容器來運作servlet。tomcat是一個開源的servlet容器,可以免費獲得,它也可以在能夠使用java的任何作業系統平台上運作。如果你還沒有安裝tomcat,現在應該先去閱讀附錄a,并安裝tomcat。

确定你的機器上已經有了servlet容器之後,下一步就是編寫和編譯servlet類。這個例子中的servlet類是指myservlet,如代碼清單1-1所示。按照規範,servlet類的名稱要以servlet作為字尾。

《Servlet和JSP學習指南》一1.3 編寫基礎的Servlet應用程式
《Servlet和JSP學習指南》一1.3 編寫基礎的Servlet應用程式

在閱讀代碼清單1-1中的代碼時,可能首先會注意到下面這個注解:

《Servlet和JSP學習指南》一1.3 編寫基礎的Servlet應用程式

用webservlet注解類型來聲明一個servlet。在聲明servlet的同時,還可以告訴容器是哪個url調用這個servlet。name屬性是可選的,如果有,一般是用來提供servlet類的名稱。關鍵是urlpatterns屬性,它也是可選的,但是幾乎都會用到它。在myservlet中,utlpattern告訴容器,/my模式應該調用這個servlet。

注意,url模式必須以一條正斜線開頭。

servlet的init方法調用一次,并将private transient變量servletconfig設定成傳給該方法的servletconfig對象。

《Servlet和JSP學習指南》一1.3 編寫基礎的Servlet應用程式

如果你想從servlet内部使用servletconfig,隻須将傳進來的servletconfig賦給一個類變量即可。

service方法将字元串“hello from myservlet”傳給浏覽器。每當有針對該servlet的http請求進來時,都會調用service方法。

要編譯servlet,必須将包含servlet api的類型放在類路徑(class path)中。tomcat的servlet-api.jar檔案中打包有javax.servlet和javax.servlet.http包的成員。這個jar檔案就放在tomcat安裝目錄的lib目錄下。

servlet應用程式必須以特定的目錄結構進行部署。圖1-2展示了這個應用程式的目錄結構。

《Servlet和JSP學習指南》一1.3 編寫基礎的Servlet應用程式

這個目錄結構最上方的app01a就是應用程式目錄。應用程式目錄下方是一個web-inf目錄。它有兩個子目錄:

classes。servlet類和其他的java類都必須放在這裡。類下方的目錄反映了類的包結構。在圖1-2中,已經部署了一個類:app01a.myservlet。

lib。在這裡部署servlet應用程式所需的jar檔案。servlet api jar檔案則不需要部署在這裡,因為servlet容器已經包含這些servlet api了。在這個應用程式中,lib目錄是空的。空的lib目錄也可以删除。

servlet/jsp應用程式一般會有jsp頁面、html檔案、圖像檔案以及其他資源。這些都應該放在應用程式的目錄下,并且經常放在子目錄下。例如,所有的圖像檔案可以放在一個image目錄下,所有的jsp頁面可以放在一個jsp目錄下,以此類推。

放在應用程式目錄下的任何資源,使用者都可以通過輸入該資源的url而直接進行通路。如果你希望某個資源可以被servlet通路,但是不能被使用者通路,那麼應該把它放在web-inf目錄下面。

現在,把這個應用程式部署到tomcat中。在tomcat中,一種部署方法是将應用程式目錄直接複制到tomcat安裝目錄下方的webapps目錄下。也可以通過在tomcat的conf目錄下編輯server.xml檔案來部署應用程式;或者為了不用編輯server.xml,而單獨部署一個xml檔案到confcatalinalocalhost目錄下。其他servlet容器可能會有不同的部署規則。關于如何将一個servlet/jsp應用程式部署到tomcat的詳細資訊,可檢視附錄a。

這裡建議部署servlet/jsp應用程式的方法是将它打包成一個war檔案來進行部署。war檔案是指以war作為擴充名的jar檔案。可以利用jdk提供的jar程式或者像winzip這類工具來建立war檔案。然後,将war檔案複制到tomcat的webapps目錄下。當啟動或者重新開機tomcat時,tomcat會自動解壓war檔案。以war檔案的方式部署,這在所有的servlet容器中都适用。在第16章中,你還會學到更多關于部署的知識。

要測試你的第一個servlet應用程式,需先啟動或者重新開機tomcat,并将浏覽器切換到以下url(假設将tomcat配置成在它的預設端口8080上進行監聽):

其輸出應該如圖1-3所示。

《Servlet和JSP學習指南》一1.3 編寫基礎的Servlet應用程式

恭喜!你的第一個servlet應用程式已經寫好了!