jsp與javaBean

在jsp頁(yè)面內(nèi)的五種成份中,html是靜態(tài)成份,服務(wù)器對(duì)于jsp的靜態(tài)成份不作處理直接交付給客戶機(jī),作數(shù)據(jù)表示層;但對(duì)于jsp頁(yè)面的動(dòng)態(tài)成份如java程序片、Java表達(dá)式等則需作處理,作數(shù)據(jù)處理層;如果在一個(gè)jsp頁(yè)面中既有靜態(tài)部分又有動(dòng)態(tài)部分將導(dǎo)致代碼混亂和代碼的復(fù)用率較低,為此可以采用javaBean方式處理數(shù)據(jù),將數(shù)據(jù)的表示和處理進(jìn)行分離,這也是sun公司所提倡的一種方式。

javaBean是用Java語(yǔ)言按照一種規(guī)則編寫(xiě)的類生成的實(shí)例,可簡(jiǎn)稱為bean;一個(gè)jsp頁(yè)面的數(shù)據(jù)處理部分可以交給一個(gè)bean或者幾個(gè)bean完成,只需在jsp頁(yè)面中調(diào)用該創(chuàng)建bean的類并生成實(shí)例即可,這種方式可以將數(shù)據(jù)的處理部分從jsp頁(yè)面中分離出來(lái)更好的實(shí)現(xiàn)代碼復(fù)用;

一、編寫(xiě)和使用javaBean

1、編寫(xiě)創(chuàng)建bean的類

為了能讓服務(wù)器識(shí)別并使用bean,編寫(xiě)創(chuàng)建bean的類必須符合以下規(guī)則:

a、如果類的成員變量為XXX,那么為了獲得和修改該成員,類中必須提供兩個(gè)方法getXxx(用來(lái)獲得類的屬性(變量));和setXxx()(用來(lái)修改類的屬性(變量));

b、對(duì)于boolean類型的變量,可以使用“is”代替上面的get和set;

c、類中方法的訪問(wèn)屬性必須是public;

d、類的構(gòu)造函數(shù)的訪問(wèn)屬性必須是public且是無(wú)參數(shù)的;

下面創(chuàng)建一個(gè)可以計(jì)算矩形面積創(chuàng)建bean的類,代碼如下:

創(chuàng)建bean的類

2、使用bean

jsp使用bean,tomcat服務(wù)器必須使用相應(yīng)類的字節(jié)碼文件創(chuàng)建一個(gè)bean,為了讓tomcat服務(wù)器找到相應(yīng)的字節(jié)碼文件,必須把字節(jié)碼文件放到指定的目錄中,故使用bean應(yīng)有以下兩步:

a.字節(jié)碼文件放到指定的目錄

在當(dāng)前的服務(wù)目錄中建立\WEB-INF\classes目錄,然后在該目錄下根據(jù)類的包名建立相應(yīng)的子目錄,最后重新啟動(dòng)服務(wù)器后把字節(jié)碼文件復(fù)制到目錄中;(若使用eclipse開(kāi)發(fā)工具不需此不,只需在項(xiàng)目里創(chuàng)建類即可)

b、在jsp頁(yè)面里使用bean

這里將用到j(luò)sp頁(yè)面的動(dòng)作標(biāo)記usebean,有兩種格式:<jsp:usebean id="給bean起的名字" class="創(chuàng)建bean的類" scope="bean的有效范圍"></jsp:usebean>和<jsp:usebean id="給bean起的名字" class="創(chuàng)建bean的類" scope="bean的有效范圍"/>,其中id的值為bean的名字,可按此名字調(diào)用類的方法,scope的值可取page、session、request和application;當(dāng)用戶使用bean時(shí),服務(wù)器根據(jù)scope的取值確定分配給用戶的bean空間的生存時(shí)間,當(dāng)取值為page時(shí)有效范圍為該頁(yè)面,用戶離開(kāi)該頁(yè)面時(shí)釋放該空間、取值為session時(shí),bean的有效范圍為該用戶的所有頁(yè)面,且只要用戶的session會(huì)話不關(guān)閉,bean一直有效,直到session會(huì)話消失并取消分配的bean空間、取值為request時(shí)bean的有效范圍為當(dāng)前請(qǐng)求期間,當(dāng)服務(wù)器作出回應(yīng)時(shí)即取消分配的bean空間、當(dāng)取值為application時(shí)bean的有效范圍為整個(gè)服務(wù)器服務(wù)期間,只有在服務(wù)器關(guān)閉時(shí)才釋放分配的bean空間;下面通過(guò)新建一個(gè)jsp頁(yè)面使用上面的類創(chuàng)建一個(gè)scope取值為session的bean來(lái)計(jì)算矩形的面積,代碼如下:

使用bean

二、獲取和修改bean的屬性

上面通過(guò)在Java程序片中使用bean調(diào)用相應(yīng)方法獲取和修改bean的屬性,下面通過(guò)jsp的動(dòng)作標(biāo)記獲取和修改bean的屬性;

1、動(dòng)作標(biāo)記getProperty

這個(gè)標(biāo)記可以獲得bean的屬性,并且將這個(gè)值用串的形式顯示給客戶,格式為:<jsp:getProperty name="bean的名字" property="bean的屬性"/>或者為<jsp:getProperty name="bean的名字" property="bean的屬性"></jsp:getProperty>

2、動(dòng)作標(biāo)記setProperty

setProperty動(dòng)作標(biāo)記可以通過(guò)3種方式設(shè)置bean的屬性值;

a、將bean屬性的值設(shè)置為一個(gè)表達(dá)式的值或者字符串,設(shè)置為表達(dá)式時(shí)格式為:<jsp:setProperty name="bean的名字" property="bean的屬性" value="<%=expression%>"/>;設(shè)置為字符串的格式為:<jsp:setProperty name="bean的名字" property="bean的屬性" value=字符串/>

b、通過(guò)http表單的參數(shù)的值來(lái)設(shè)置bean屬性的值

這種方式需要將要提交的表單的參數(shù)的名字和bean的屬性的名字一致,表單提交后tomcat會(huì)自動(dòng)進(jìn)行匹配賦值,格式為:<jsp:setProperty name="bean的名字" property="*"/>,該標(biāo)記只有提交后才會(huì)觸發(fā);

c、通過(guò)request的參數(shù)的值來(lái)設(shè)置bean的相應(yīng)屬性的值

這種方式也要求request的參數(shù)的名字和bean的屬性的名字相同,格式為:<jsp:setProperty name="bean" property="屬性名" param="參數(shù)名"/>,該標(biāo)記只有提交后才會(huì)觸發(fā);

三種方式的示例代碼如下,用上述矩形的bean示例:

代碼示例

注意:第二種和第三種方式只有在被提交的頁(yè)面才能觸發(fā)。

3、bean的輔助類

當(dāng)我們編寫(xiě)一個(gè)bean的類的時(shí)候,有可能要使用編寫(xiě)的其他類,這時(shí)只要將這些類編寫(xiě)在同一個(gè)java的源文件里,然后將編譯的所有字節(jié)碼文件復(fù)制到指定的目錄中即可;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • JSP總結(jié)(經(jīng)典) day1 JSP 定義: 1)Java Server Page, Java EE 組件,本...
    91數(shù)據(jù)閱讀 3,634評(píng)論 0 13
  • JSP隱含對(duì)象 JSP支持九個(gè)自動(dòng)定義的變量,江湖人稱隱含對(duì)象。這九個(gè)隱含對(duì)象的簡(jiǎn)介見(jiàn)下表: |對(duì)象|描述||--...
    FTOLsXD閱讀 335評(píng)論 0 1
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,626評(píng)論 18 399
  • 今日體驗(yàn):今晚開(kāi)會(huì)說(shuō)了關(guān)于機(jī)油標(biāo)號(hào)方面的基本知識(shí),才發(fā)現(xiàn)很多基礎(chǔ)的東西有時(shí)也不是很精通。 核心:擴(kuò)展知識(shí)面積
    畢力格bilige閱讀 121評(píng)論 0 0
  • 滴滴一聲,馬上出發(fā)。 去年開(kāi)始,因?yàn)楹⒆愚D(zhuǎn)學(xué)的原因每周末都要在北京和涿州之間往返,因?yàn)榭旖莘奖阌止?jié)省費(fèi)用,...
    趙紅_c1b7閱讀 371評(píng)論 0 1

友情鏈接更多精彩內(nèi)容