javabean的理解

来源:互联网 发布:yum网络源配置 编辑:程序博客网 时间:2024/05/18 05:06

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>