1. 程式人生 > >JAVA入門[12]-JavaBean

JAVA入門[12]-JavaBean

brush his str 什麽 pro jsp頁面 想要 函數 系列

一.什麽是JavaBean

JavaBean是特殊的Java類,使用Java語言書寫,並且遵守規範:

  • 提供一個默認的無參構造函數。
  • 需要被序列化並且實現了Serializable接口。
  • 可能有一系列可讀寫屬性。
  • 可能有一系列的"getter"或"setter"方法。

二.定義JavaBean

package com.cathy.domain;

public class Category implements java.io.Serializable{
    public Category(){}
    private int cateId;
    private String cateName;

    public int getCateId() {
        return cateId;
    }

    public void setCateId(int cateId) {
        this.cateId = cateId;
    }

    public String getCateName() {
        return cateName;
    }

    public void setCateName(String cateName) {
        this.cateName = cateName;
    }
}

  

三、訪問JavaBean

1. <jsp:useBean> 標簽可以在JSP中聲明一個JavaBean,語法格式如下:

<jsp:useBean id="bean 的名字" scope="bean 的作用域" />

其中scope的值可以是page,request,session或application

2.設置和獲取JavaBean屬性

<jsp:useBean> 標簽主體中使用 <jsp:getProperty/> 標簽來調用 getter 方法獲取屬性,使用 <jsp:setProperty/> 標簽調用 setter

方法設置屬性。語法格式:

<jsp:useBean id="id" class="bean 類" scope="bean 作用域"> 

<jsp:setProperty name="bean 的 id" property="屬性名"
value="value"/>
<jsp:getProperty name="bean 的 id" property="屬性名"/>
   ........... 

</jsp:useBean> 

  

其中name屬性指的是Bean的id屬性,property屬性指的是想要調用的getter或setter方法

四、示例

1.示例:在當前jsp頁面設置和獲取javabean屬性

<jsp:useBean id="category" class="com.cathy.domain.Category">
    <jsp:setProperty name="category" property="cateId" value="2"></jsp:setProperty>
    <jsp:setProperty name="category" property="cateName" value="女裝"></jsp:setProperty>
</jsp:useBean>
<div>
    id:<jsp:getProperty name="category" property="cateId"></jsp:getProperty>
</div>
<div>
    name:<jsp:getProperty name="category" property="cateName"></jsp:getProperty>
</div>

  

2.示例:在edit.jsp 頁面form表單提交信息,在detail.jsp頁面中顯示。

edit.jsp

<form action="/category/detail" method="post">
    商品id:<input type="number" name="cateId">
    商品名稱:<input type="text" name="cateName">
    <input type="submit" value="提交">
</form>

  

detail.jsp

如果表單中的屬性名稱和JavaBean中屬性對應,那麽可以簡化jsp:setProperty寫法,直接property="*"

<jsp:useBean id="category" class="com.cathy.domain.Category">
    <jsp:setProperty name="category" property="*"></jsp:setProperty>
</jsp:useBean>
<table>
    <tr>
        <td>id:</td><td><jsp:getProperty name="category" property="cateId"></jsp:getProperty></td>
    </tr>
    <tr><td>名稱:</td><td><jsp:getProperty name="category" property="cateName"></jsp:getProperty></td></tr>
</table>

  

問題:通過表單提交中文數據時遇到亂碼問題:

<%request.setCharacterEncoding("UTF-8");%>

  

效果:

技術分享

技術分享

3.示例:JavaBean實現訪問計數

首先創建計數JavaBean:

public class Counter {
    private  int total=0;

    public int getTotal() {
        return total++;
    }
}

  

在index.jsp和edit.jsp文件中調用該JavaBean,註意將scope設置為application。

<jsp:useBean id="counter" class="com.cathy.domain.Counter" scope="application"></jsp:useBean>
<div>
    訪問計數:<jsp:getProperty name="counter" property="total"></jsp:getProperty>
</div>

  

刷新這兩個頁面時,都能實現計數器累加。

JAVA入門[12]-JavaBean