學習JSP,不可避免地你會接觸到JavaBeans,對於一個沒有太多Java基礎的學習者來說,要正確理解JavaBeans實在不是一件太容易的事。在本文中,我們將對JavaBeans作一個整體的介紹,作為這樣的一個介紹,我們可能不會涉及到某些技術上的細節。我們只是希望,無論是對於對JavaBeans有一定了解的人,還是對於剛接觸JavaBeans的人,在閱讀過本文後,能夠對JSP中的JavaBeans有一個整體的把握。一、什麼是JavaBeans JavaBeans事實上有三層含義。首先,JavaBeans是一種規范,一種在Java(包括JSP)中使用可重復使用的Java組件的技術規范。其次,JavaBeans是一個Java的類,一般來說,這樣的Java類將對應於一個獨立的.java文件,在絕大多數情況下,這應該是一個public類型的類。最後,當JavaBeans這樣的一個Java類在我們的具體的Java程序中被示例之後,我們有時也會將這樣的一個JavaBeans的實例稱之為JavaBeans。 二、你可以不使用JavaBeans 從原理上來說,使用JavaBeans不過是使用一種特定的規范在Java程序中引入特定的類。你完全可以不使用JavaBeans而直接在Java程序中對這樣的Java類進行說明並進行示例。當然,這無疑會降低你的程序的可讀性,而且你將犧牲組件的可重復使用的特性。但是,對於一個簡單的應用中的簡單程序。你完全可以不必拘泥於使用JavaBeans。即便是對於JSP,你也可以做同樣的選擇,我們知道,在“<%”、“%>”引起的程序段中,我們可以使用任何的純Java語句,包括對一個新的對象的定義和示例。 三、在絕大多數情況下,使用JavaBeans是一個明智的選擇 正如我們前面提到的,使用JavaBeans你可以充分利用組件的可重復使用的特性並增加你的程序的可讀性。當你的應用日趨龐大時,你會發現,遵守這樣的規范所帶來的在開發和維護中的便利,相對於你所受到的約束,你完全值得做這樣的交換。 四、JSP中的JavaBeans類是否必須嚴格遵守某些約定 在很多的JSP參考資料中都提到JavaBeans需要遵守JavaBeans規定,也就是JavaBeans API。但是,事實上在程序設計時,情況並沒有這麼復雜。你完全可以根據你自己的需要來定制你的JavaBeans。在這裡,我們只要求JavaBeans是一個Java類,並不需要遵守其他規范。當然,對於這樣的一個JavaBeans,你應該自己有一個清楚的認識。因為它可能並沒有我們通常意義上所理解的JavaBeans的一些特性,對於某種極端的情況,你可能只能使用
這樣的語句來引入JavaBeans,然後來通過yourId這個JavaBeans的實例來處理並調用你的JavaBeans中的屬性和方法。 五、JSP中JavaBeans的實質 我們注意到,一個引入JavaBeans的語句,其結構應該是
,在這當中,我們必須對三個方面的內容進行定義。首先是一個id,這將對應於一個類的實例,如果這個實例已經存在,將直接引用這個實例;如果這個實例尚未存在,將通過我們在class中的定義從這個class中進行示例。這也就是我們要定義的第二個內容。最後,我們還實該在scope中定義id這個實例存在的范圍,事實上這定義了這個實例所綁定的區域及其有效范圍。 1、page:這個JavaBeans將存在於該JSP文件以及此文件中的所有靜態包含文件中,直到頁面執行完畢為止。這將基本等價於JSP中這樣的Java語句。 <%
yourClass yourId;
if (pageContext.getAttribute("yourId",PageContext.PAGE_SCOPE)==null)
{yourId=new yourClass();
pageContext.setAttribute("yourId",yourId,PageContext.PAGE_SCOPE);}
else yourId=(yourClass)pageContext.getAttribute("yourId",PageContext.PAGE_SCOPE);
%>2、request:這個JavaBeans將作為一個對象綁定於該頁面的request中。簡單地說該JavaBeans在該頁面發出的請求中有效,這將基本等價於JSP中這樣的Java語句。 <%
yourClass yourId;
if (pageContext.getAttribute("yourId",PageContext.REQUEST_SCOPE)==null)
{yourId=new yourClass();
pageContext.setAttribute("yourId",yourId,PageContext.REQUEST_SCOPE);}
else yourId=(yourClass)pageContext.getAttribute("yourId",PageContext.REQUEST_SCOPE);
%>3、session:這個JavaBeans將作為一個對象綁定於session中。簡單地說該JavaBeans在本地有效,這將基本等價於JSP中這樣的Java語句。 <%
yourClass yourId;
if (session.getAttribute("yourId")==null)
{yourId=new yourClass();
session.setAttribute("yourId",yourId);}
else yourId=(yourClass)session.getAttribute("yourId");
%>4、application:這個JavaBeans將作為一個對象綁定於application中。簡單地說該JavaBeans在本應用中有效,這將基本等價於JSP中這樣的Java語句。 <%
yourClass yourId;
if (application.getAttribute("yourId")==null)
{yourId=new yourClass();
application.setAttribute("yourId",yourId);}
else yourId=(yourClass)application.getAttribute("yourId");
%>