javabean的理解

MVC設計模式中常用JavaBeans來封裝業務邏輯、數據庫操作等等,從而很好地實現業務邏輯和表示邏輯的分離,使系統具有更好的健壯性和靈活性 。

1、什麼是javabean

JavaBeanJava平臺的組件技術。

JavaBean就是使用Java語言定義的類,而這種類的設計需要遵循Sun制定的JavaBean規範文檔中描述的有關約定。與EJB完全不是一回事。

Java模型中,通過JavaBean可以無限擴充Java程序的功能。

對於程序員來說,最好的一點就是JavaBean可以實現代碼的重複利用,另外對於程序的易維護性等也有很大的意義。  

JSP程序中常用JavaBean來封裝業務邏輯、數據庫操作等等,可以很好地實現業務邏輯和表示邏輯的分離,使得系統具有更好的健壯性和靈活性。

遵循下面3個規範的Java類作爲JavaBean

類必須是public;類必須具有無參數的public構造方法,

JavaBeans類的成員變量一般稱爲屬性(property)。對每個屬性訪問權限一般定義爲privateprotected,而不是定義爲public的。注意:屬性名必須以小寫字母開頭。 

對每個屬性,一般定義兩個public方法,它們分別稱爲訪問方法(getter)和修改方法(setter),允許容器訪問和修改bean的屬性。 

      public String getColor();

      public void setColor(String);

一個例外是當屬性是boolean類型時,訪問器方法應該定義爲isXxx()形式。

例如,假設JavaBean有一個boolean型屬性valid,則訪問器方法應該定義爲

public boolean isValid()

除了訪問方法和修改方法外,類中還可以定義其他的方法實現某種業務邏輯。也可以只爲某個屬性定義訪問器方法,這樣的屬性就是隻讀屬性。

JavaBean命名慣例:UserBeanAccountBean 

以區別一般的類,這樣可以給協作的開發人員清晰的含義。

JavaBean類存放在

/WEB-INF/classes目錄中

/WEB-INF/lib目錄中的JAR文件中。 

JSP中使用這些類,使用page指令的import屬性導入它們。 

<%@ page import="com.model.CustomerBean" %>

2、javabean的優點。

JSP頁面中使用JavaBeans的代碼簡潔。

JavaBeans也有助於增強代碼的可重用性。

它們是Java語言對象,充分利用該語言的面向對象的特徵。

 

3、javabean的序列化

序列化的過程是通過Java標準的對象序列化機制實現的。 

首先,JavaBean類必須實現java.io.Serializable接口使類能夠被序列化;

然後通過使用java.io.ObjectOutputStream類對bean實例序列化。

序列化的beans被作爲資源使用應該具有下面的要求:

存儲序列化bean的文件擴展名必須是.ser。例如,

John.serMary.ser

存儲bean的文件必須存放在Web應用程序的類路徑中。因/WEB-INF/ classes目錄總是在web應用程序的類路徑中,可以將創建的所有的bean存放在/WEB-INF/classes目錄或其子目錄中,例如:

/WEB-INF/classes/John.ser

/WEB-INF/classes/customerData/Mary.ser

存儲bean的路徑和文件名的組合被作爲bean的名稱,這與類和包的概念類似。

上面例子中的兩個序列化beans的名稱分別爲JohncustomerData.Mary。 

這些對象一旦作爲序列化的bean保存,它們就可以使用java.beans.Beans類的instantiate()方法將bean裝載到任何程序中。

案列:1model

package com.model;

import java.io.Serializable;

public class CustomerBean implements Serializable{

private String custName;

private String email;

private String phone;

public String getCustName() {

return custName;

}

public void setCustName(String custName) {

this.custName = custName;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getPhone() {

return phone;

}

public void setPhone(String phone) {

this.phone = phone;

}

}

2、業務邏輯層(control

package com.demo;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectOutputStream;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.omg.CORBA.Request;

import com.model.CustomerBean;

public class SaveBeanServlet extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String message ="";

try {

CustomerBean customer = new CustomerBean();

customer.setCustName(request.getParameter("custName"));

customer.setEmail(request.getParameter("email"));

customer.setPhone(request.getParameter("phone"));

String name = request.getParameter("custName");

String relativepath = "/WEB-INF/classes/customerData/"+name+".ser";

String realPath = getServletContext().getRealPath(relativepath);

FileOutputStream fos = new FileOutputStream(realPath);

ObjectOutputStream oos = new ObjectOutputStream(fos);

oos.writeObject(customer);

oos.close();

message = "Successfully saved the bean as <br>"+realPath;

request.setAttribute("msg", message);

catch (Exception e) {

message ="fasle,Excaption <br>"+e;

request.setAttribute("msg", message);

}

getServletContext().getRequestDispatcher("/customer.jsp").forward(request, response);

}

}

3、視圖層(view

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>

<%@ page contentType="text/html; charset=gb2312" %>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

    <title>My JSP 'customer.jsp' starting page</title>

  </head>

  <body>

    <%

    String msg = (String)request.getAttribute("msg");

 if(msg != null)

out.println(msg+"<br>");

 %>

 請輸入客戶信息:

 <form action="savebean.do" method="post">

 客戶名:<input type="text" name="custName"><br>

 Email 地址:<input type="text" name="email"><br>

 電話:<input type="text" name="phone"><br>

 <input type="submit" value="提交"><br>

 </form>

  </body>

</html>

 

發佈了23 篇原創文章 · 獲贊 6 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章