javaweb學(xué)習(xí)總結(jié)(六)Javabean總結(jié)

一呵曹、什么是JavaBean

JavaBean是一個遵循特定寫法的Java類座云,它通常具有如下特點(diǎn):

  • 這個Java類必須具有一個無參的構(gòu)造函數(shù)
  • 屬性必須私有化氧苍。
  • 私有化的屬性必須通過public類型的方法暴露給其它程序崇猫,并且方法的命名也必須遵守一定的命名規(guī)范诅福。
    Javabean范例:
package rain.javabean.study;

/**
 * 一個簡單的Javabean
 * @author rain
 *
 */
public class Student {

    private String name;
    private float score;
    private String sex;


    public Student() {
    
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public float getScore() {
        return score;
    }
    public void setScore(float score) {
        this.score = score;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
}
二、在JSP中使用JavaBean

JSP技術(shù)提供了三個關(guān)于JavaBean組件的動作元素睹酌,即JSP標(biāo)簽权谁,它們分別為:

  • <jsp:useBean>標(biāo)簽:用于在JSP頁面中查找或?qū)嵗粋€JavaBean組件剩檀。
  • <jsp:setProperty>標(biāo)簽:用于在JSP頁面中設(shè)置一個JavaBean組件的屬性憋沿。
  • <jsp:getProperty>標(biāo)簽:用于在JSP頁面中獲取一個JavaBean組件的屬性。
2.1沪猴、<jsp:useBean>標(biāo)簽

<jsp:useBean>標(biāo)簽用于在指定的域范圍內(nèi)查找指定名稱的JavaBean對象辐啄,如果存在則直接返回該JavaBean對象的引用,如果不存在則實(shí)例化一個新的JavaBean對象并將它以指定的名稱存儲到指定的域范圍中运嗜。
  常用語法:

<jsp:useBean id="beanName" class="package.class" scope="page|request|session|application"/>
  • "id"屬性用于指定JavaBean實(shí)例對象的引用名稱和其存儲在域范圍中的名稱壶辜。
  • "class"屬性用于指定JavaBean的完整類名(即必須帶有包名)。
  • "scope"屬性用于指定JavaBean實(shí)例對象所存儲的域范圍担租,其取值只能是page砸民、request、session和application等四個值中的一個奋救,其默認(rèn)值是page岭参。

<jsp:useBean>標(biāo)簽使用范例

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jsp:useBean標(biāo)簽的使用范例</title>
</head>
<body>

<%--
  在jsp中使用jsp:useBean標(biāo)簽來實(shí)例化一個Java類的對象
  <jsp:useBean id="person" class="gacl.javabean.study.Person" scope="page"/>
     <jsp:useBean>:表示在JSP中要使用JavaBean。
     id:表示生成的實(shí)例化對象尝艘,凡是在標(biāo)簽中看見了id演侯,則肯定表示一個實(shí)例對象。
     class:此對象對應(yīng)的包.類名稱
     scope:此javaBean的保存范圍背亥,四種范圍:page秒际、request、session狡汉、application
  --%>

    <jsp:useBean id="student" class="rain.javabean.study.Student" scope="page" />

<%
//為該對象的屬性賦值
    student.setName("張三");
    student.setScore((float)99.5);
    student.setSex("男");
%>

<h3>姓名:<%=student.getName() %></h3>
<h3>分?jǐn)?shù):<%=student.getScore() %></h3>
<h3>性別:<%=student.getSex() %></h3>

</body>
</html>

運(yùn)行結(jié)果如下:


image.png
2.2娄徊、<jsp:useBean>執(zhí)行原理

從前面可以知道,在使用這個標(biāo)簽<jsp:useBean id="student" class="rain.javabean.study.Student" scope="page" />時盾戴,會實(shí)例化一個student對象嵌莉,那么這個對象時怎么來的呢,下面從源碼來看一看捻脖。
找到tomcat服務(wù)器下的"work\Catalina\localhost\項(xiàng)目名稱\org\apache\jsp"這個目錄锐峭,就可以看到將 javabeanDemo1.jsp頁面翻譯成servlet的java源碼了,打開這個文件可婶,可以看到具體創(chuàng)建過程了:

      rain.javabean.study.Student student = null;
      student = (rain.javabean.study.Student) _jspx_page_context.getAttribute("student", javax.servlet.jsp.PageContext.PAGE_SCOPE);
      if (student == null){
        student = new rain.javabean.study.Student();
        _jspx_page_context.setAttribute("student", student, javax.servlet.jsp.PageContext.PAGE_SCOPE);
      }

下面來說一說是怎么形成的
首先定義student對象 值為null沿癞。

rain.javabean.study.Student student = null;

然后是使用pageContext對象的getAttribute方法獲取存儲在PageContext.PAGE_SCOPE域中的Person對象

student = (rain.javabean.study.Student) _jspx_page_context.getAttribute("student", javax.servlet.jsp.PageContext.PAGE_SCOPE);

如果在PageContext.PAGE_SCOPE域中的Person對象沒有找到person對象,那么就創(chuàng)建一個新的person對象矛渴,然后使用pageContext對象的setAttribute方法將新創(chuàng)建的person存儲在PageContext.PAGE_SCOPE域中

if (student == null){
        student = new rain.javabean.study.Student();
        _jspx_page_context.setAttribute("student", student, javax.servlet.jsp.PageContext.PAGE_SCOPE);
   }
2.3椎扬、<jsp:setProperty>標(biāo)簽

<jsp:setProperty>標(biāo)簽用于設(shè)置和訪問JavaBean對象的屬性惫搏。

語法格式一:
    <jsp:setProperty name="beanName" property="propertyName" value="string字符串"/>

語法格式二:
    <jsp:setProperty name="beanName" property="propertyName" value="<%= expression %>" />

語法格式三:
    <jsp:setProperty name="beanName" property="propertyName" param="parameterName"/>

語法格式四:
    <jsp:setProperty name="beanName" property= "*" />

name屬性用于指定JavaBean對象的名稱。
  property屬性用于指定JavaBean實(shí)例對象的屬性名蚕涤。
  value屬性用于指定JavaBean對象的某個屬性的值筐赔,value的值可以是字符串,也可以是表達(dá)式揖铜。為字符串時茴丰,該值會自動轉(zhuǎn)化為JavaBean屬性相應(yīng)的類型,如果value的值是一個表達(dá)式天吓,那么該表達(dá)式的計(jì)算結(jié)果必須與所要設(shè)置的JavaBean屬性的類型一致贿肩。
  param屬性用于將JavaBean實(shí)例對象的某個屬性值設(shè)置為一個請求參數(shù)值,該屬性值同樣會自動轉(zhuǎn)換成要設(shè)置的JavaBean屬性的類型龄寞。

使用<jsp:setProperty>設(shè)置屬性的值,<jsp:getProperty>獲取屬性的值

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>使用jsp:setProperty設(shè)置屬性的值汰规,getProperty獲取屬性的值</title>
</head>
<body>

<jsp:useBean id="student" class="rain.javabean.study.Student" scope="page" />

<%--
使用jsp:setProperty標(biāo)簽設(shè)置person對象的屬性值
jsp:setProperty在設(shè)置對象的屬性值時會自動把字符串轉(zhuǎn)換成8種基本數(shù)據(jù)類型
但是jsp:setProperty對于復(fù)合數(shù)據(jù)類型無法自動轉(zhuǎn)換
--%>

<jsp:setProperty property="name" name="student" value="張三"/>
<jsp:setProperty property="score" name="student" value="90.55"/>
<jsp:setProperty property="sex" name="student" value="男"/>

<!-- 使用getProperty獲取屬性的值 -->
<h2>姓名:<jsp:getProperty property="name" name="student"/></h2>
<h2>姓名:<jsp:getProperty property="score" name="student"/></h2>
<h2>姓名:<jsp:getProperty property="sex" name="student"/></h2>

</body>
</html>

運(yùn)行結(jié)果如下:


image.png

關(guān)于JavaBean方面的內(nèi)容基本上就這么多了,只需要掌握J(rèn)avaBean的寫法物邑,以及掌握<jsp:useBean>標(biāo)簽溜哮,<jsp:setProperty>標(biāo)簽,<jsp:getProperty>標(biāo)簽的使用色解!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末茂嗓,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子冒签,更是在濱河造成了極大的恐慌在抛,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萧恕,死亡現(xiàn)場離奇詭異刚梭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)票唆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門朴读,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人走趋,你說我怎么就攤上這事衅金。” “怎么了簿煌?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵氮唯,是天一觀的道長。 經(jīng)常有香客問我姨伟,道長惩琉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任夺荒,我火速辦了婚禮瞒渠,結(jié)果婚禮上良蒸,老公的妹妹穿的比我還像新娘。我一直安慰自己伍玖,他們只是感情好嫩痰,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著窍箍,像睡著了一般串纺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仔燕,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天造垛,我揣著相機(jī)與錄音魔招,去河邊找鬼晰搀。 笑死,一個胖子當(dāng)著我的面吹牛办斑,可吹牛的內(nèi)容都是我干的外恕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼乡翅,長吁一口氣:“原來是場噩夢啊……” “哼鳞疲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蠕蚜,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤尚洽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后靶累,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腺毫,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年挣柬,在試婚紗的時候發(fā)現(xiàn)自己被綠了潮酒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡邪蛔,死狀恐怖急黎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情侧到,我是刑警寧澤勃教,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站匠抗,受9級特大地震影響故源,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜戈咳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一心软、第九天 我趴在偏房一處隱蔽的房頂上張望壕吹。 院中可真熱鬧,春花似錦删铃、人聲如沸耳贬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咒劲。三九已至,卻和暖如春诫隅,著一層夾襖步出監(jiān)牢的瞬間腐魂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工逐纬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蛔屹,地道東北人。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓豁生,卻偏偏與公主長得像兔毒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子甸箱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容