JavaBean 說白了 就是一個java類,跟VC中的控件類似是JSP開發中元件。
JavaBean分為可視化javabean 和非可視化javabean ,在JSP中 多用到的是 非可視化javabean 。
在 C/S模式下開發應用程式多用到的是 可視化JavaBean 但是在 B/S模式下應用程式的開發多用到的是非可視化JavaBean 。
我們在沒接觸JavaBean之前可能有過這樣的經曆,在JSP頁面當中 動态内容JSP 和靜态内容html交錯在一起,不容易後期維護,代碼混亂。
JavaBean很好的實作了代碼重用,減少了開發的工作量,并且實作了 靜态和動态的分離 。.
編寫JavaBean要有一些規則 :
對于 一個屬性 需要有getXXX() setXXX()函數來獲得和設定屬性的值
并且對于每個通路屬性的方法都要設定為pulic通路權限,這樣可以友善JSP引擎知道JavaBean的屬性和方法 。
什麼是jar檔案 ?
jar檔案是一些java類的集合 ,包含了一組類 和其他相關的資源.包括圖像聲音 .......
如果我們需要多個類,你說我們是去下載下傳這些類打包後的jar檔案友善呢?還是一個一個的下載下傳友善呢?
這個不用我多說了吧 。。。。
下面是JavaBean的部署方法 :
在編寫好了一個JavaBean之後,要用 javac -d path 來編譯JavaBean産生位元組碼檔案 *.class 對于有包的類那麼則會生成相應的目錄層次
這是在傳統的記事本程式設計中這樣做 .但是在 Eclipse中 在源檔案儲存的時候會自動生成 .class檔案 。
我們可以用JDK提供的jar.exe工具進行打包
格式 : jar [option可以使多個集合例如cf] a.jar *.class //将所有類進行打包為a.jar檔案
選項包括:
-c 建立新的歸檔檔案
-t 列出歸檔目錄
-x 解壓縮已歸檔的指定(或所有)檔案
-u 更新現有的歸檔檔案
-v 在标準輸出中生成詳細輸出
-f 指定歸檔檔案名
-m 包含指定清單檔案中的清單資訊
-e 為捆綁到可執行 jar 檔案的獨立應用程式
指定應用程式入口點
-0 僅存儲;不使用任何 ZIP 壓縮
-M 不建立條目的清單檔案
-i 為指定的 jar 檔案生成索引資訊
-C 更改為指定的目錄并包含其中的檔案
如果有任何目錄檔案,則對其進行遞歸處理。
清單檔案名、歸檔檔案名和入口點名的指定順序
與 "m"、"f" 和 "e" 标志的指定順序相同。
示例 1:将兩個類檔案歸檔到一個名為 classes.jar 的歸檔檔案中:
jar cvf classes.jar Foo.class Bar.class
示例 2:使用現有的清單檔案 "mymanifest" 并
将 foo/ 目錄中的所有檔案歸檔到 "classes.jar" 中:
jar cvfm classes.jar mymanifest -C foo/ .
我們在生成好了 *.class之後如果要使用這個JavaBean 我們可以吧這個類檔案 複制到 web工程的 WEB-INF\classes目錄下 ,那麼這個web工程就可以使用這個JavaBean了 ..
如何使用jar檔案呢?
如果我們想再伺服器所有JSP頁面共享部署的Jar檔案,那麼将jar檔案複制到 Tomcat目錄下的lib目錄中。那麼所有的JSP頁面都可以使用了
如果隻想某個程式使用那麼隻需要在web工程的 WEB-INF下建立lib檔案夾 然後将jar檔案放入即可 。。。。。
在JSP頁面中使用JavaBean要使用 useBean動作指令
<jsp:useBean id="javabean的執行個體名" class="javabean的類名" scop="JavaBean的有效範圍" />
scop的取值範圍有 四個
1、page 隻在目前的jsp頁面有效 配置設定給每個客戶的JavaBean不同 。如果關閉此頁面 那麼JavaBean也将取消 。
2、session 表示配置設定給每個客戶的javaBean不同 但是如果同一會話中ID相同的 javabean 一個的屬性修改 那麼另一個屬性也會修改 。JavaBean的聲明周期就是一次session會話
3、 request 表示配置設定給每個JavaBean的不同 隻在請求和被請求頁面之間共享JavaBean 當對清求做出相應之後 JavaBean也就取消了
5、application 表示在所有客戶之間共享 JavaBean 一個客戶改變了 成員變量的值 那麼另一個客戶的此JavaBean的值也會跟着 改變 。此JavaBean的聲明周期是生個伺服器的生命周期 。
引入之後我們就可以利用 id.method()調用 JavaBean的方法了 .因為useBean實際上是對一個類進行了執行個體化 ,,
<jsp:getProperty name="javabean對象的名字" property="屬性的名字" /> //getProperty 動作指令會取得javabean指定的屬性的值 并且輸出 屬性的值
setProperty動作指令有3種形式 是用來設定 JavaBean屬性的值
<jsp: setProperty name="javabean執行個體名字" property="屬性的名字" param="送出的時候的參數"/> //隻對javabean中的執行屬性指派 而且值為為送出時候參數為 param的值
<jsp: setProperty name="javabean執行個體名字" property="*"/> //在送出的時候根據參數的名字 對 屬性進行指派 屬性的額名字和參數名字相同 * 表示對所有屬性進行指派
如果存在值為null的時候 或者找不到參數的時候那麼屬性都不會被指派
<jsp: setProperty name="javabean執行個體名字" property="屬性的名字" value="屬性的值"/> //我們自己對屬性進行指派