JavaBean规范入门

JavaBean 其实就是一个 Java 类,但是它必须遵守一定的编写规则。

JavaBean 从功能上来讲,我将它分为业务 Bean 和实体 Bean 两类,下面我通过
一个实体 Bean 的开发示例,来讲述 JavaBean 开发中的一些基础技术。

实体 Bean 的主要作用是用来对系统中要用到的数据进行封装,这些数据包括
用户从前台的输入和从数据库中读取的数据等等,是 JavaBean 中较简单的一类。

SimpleBean.java:

package com.myapp.beans;

public class SimpleBean {

private String name;

private String password;

public SimpleBean() {

System.out.println("SimpleBean");

}

public void setName(String name) {

this.name = name;

}

public void setPassword(String password) {

this.password = password;

}

public String getName() {

return this.name;

}

public String getPassword() {

return this.password;

}

}

以上代码就是一个简单的	JavaBean	的示例,它严格遵守了	JavaBean	的编码规则,即:

⑴ JavaBean	必须放在一个包中⑵ JavaBean	必须申明为	public class
⑶ JavaBean	的所有属性必须申明为	private

⑷ 通过	setter	方法和	getter	方法设值和取值⑸ 通过	JSP	调用时,则需一个无参的构造方法

⑹ 编写代码要严格遵守	Java	程序的命名规范现在就可以在	JSP	页面里来调用这个	JavaBean	了。编写	index.jsp	页面如

下:<%@ page language="java" contentType="text/html; charset=ISO-8859-1"	

pageEncoding="ISO-8859-1"%>

<%@ page import="com.myapp.beans.*"%>html>

head>

meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-title>simple JavaBean
 
body> 
<% 
SimpleBean sb = new SimpleBean() ; 
sb.setName("index") ; 
sb.setPassword("123456") ;  
%> 
h1>name:<%=sb.getName()%> 
h1>pass:<%=sb.getPassword()%> 
 
 
通过	page	指令的	import	语句,就可以导入在	classes	文件夹里的所有的类,
这里我导入了刚刚写好的	JavaBean。然后就可以在	JSP	页面中使用它了,这里和

我们通常使用	Java	的类的方式是一样的。这种使用方式在实际开发中是不会使用到的,因为	JavaBean	对象的生成应该
由容器来完成,而不是由程序员来手工完成,下面我们使用	JSP	标签来使用

JavaBean,我们将	index.jsp	修改如下:<%@ page language="java" contentType="text/html; charset=ISO-8859-1"	

pageEncoding="ISO-8859-1"%>

<%@ page import="com.myapp.beans.*" %>html>

head>

meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-title>Simple Bean 2
 
jsp:useBean id="sb" scope="page" 
class="com.myapp.beans.SimpleBean"	> 
body> 
<% 
sb.setName("index2") ; 
sb.setPassword("123456") ;  
%> 
h1>name:<%=sb.getName()%> 
h1>pass:<%=sb.getPassword()%> 
 
 
标签用来创建	JavaBean	对象,它通常使用到的属性有三个:
id	表示对象名;scope	表示对象的作用范围;class	表示该对象所属的包和类。

对于以上的代码,我们认为还是不满意,因为给	JavaBean	赋值和取值的这个过程,仍然是由程序员来完成的,这样还是会导致大量的	Java	代码与	HTML	代码

混编在一起,于是我们应该掌握	JavaBean	在	JSP	中使用的最佳方式。一种调用方式:

<jsp:useBean id="	对象" scope="作用范围" class="包.类"/>

四种设值方式:<jsp:setProperty name="对象" property="*"/>

<jsp:setProperty name="对象" property="属性"/><jsp:setProperty name="对象" property="属性" param="参数名

"/>

<jsp:setProperty name="对象" property="属性" value="值"/>

一种取值方式:<jsp:getProperty name="对象" property="属性"/>
以上列出了	JavaBean	在	JSP	中的常用方式,最常用的就是四种设值方式中的
第一种,它可以将表单中传来的值,全部自动填充到	JavaBean	里,例如:

index.jsp:

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

pageEncoding="gb2312"%>html>

head>

meta http-equiv="Content-Type" content="text/html; charset=gb2312"	>

title>简单JavaBean 
body> 
FORM METHOD=POST ACTION="show.jsp"> 
帐号:
 
密码: 
INPUT TYPE="submit" VALUE="确定"> 
 
 
 
show.jsp: 
<%@page contentType="text/html;charset=gb2312"	%> 
jsp:useBean id="sb" scope="page" 
class="com.myapp.beans.SimpleBean"	/> 
HTML> 
HEAD> 
TITLE>简单JavaBean 
 
BODY> 
<%request.setCharacterEncoding(	"gb2312");%> 
jsp:setProperty name="sb" property="*"/> 
h1>姓名:
要实现值的自动填充,必须使表单元素名与	JavaBean	中的属性名保持一致,

并且类型也要保持一致。使用	JavaBean	的登录范例
LogBean.java:

package com.myapp.beans;

import java.util.*;

public class LogBean {

private String name;

private String password;

private Hashtable errors; // store err msg

public LogBean() {

name = "";

password = "";

errors = new Hashtable();

}

public boolean validate() {

boolean ok = true;

if (name.equals("") || name == null) {

errors.put("name", " plz niput ur name");

name = " ";

ok = false;

}

if (password.equals("") || password == null ||

password.length() < 6) {

errors.put("password", "password length mush gt

);

password = " ";

ok = false;

}

return ok;

}

public void setName(String name) {

this.name = name;

}

public void setPassword(String password) {

this.password = password;

}

public String getName() {

return this.name;

}

public String getPassword() {

return this.password;

}

public String getErrorMsg(String message) {

String errorMsg = (String) 	errors.get(message.trim());

return ((errorMsg == null) ? " " : errorMsg);}

}

这个	JavaBean	里增加了表单数据校检功能。index.jsp:

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

jsp:useBean id="loginfo" class="com.myapp.beans.LogBean"	

scope="request"/>

HTML>

HEAD>

TITLE>登录JavaBean 
BODY> 
FORM METHOD=POST ACTION="login.jsp"> 
帐号: 
<%=loginfo.getErrorMsg("name") %>
 
密码: 
<%=loginfo.getErrorMsg("password") %>
 
INPUT TYPE="submit" VALUE="确定"> 
 
 
 
注意到这个登录页可以用来显示错误信息。

login.jsp:<%@	page	 contentType	="text/html;charset=gb2312"%>

jsp:useBean id	="loginfo"	 class	="com.myapp.beans.LogBean"	 scope	="request"	/>	

HTML>

HEAD>

TITLE>	简单JavaBean	 
BODY> 
<%request.setCharacterEncoding(	"gb2312");%> 
jsp:setProperty name="loginfo" property	="*"/>	 
<%	 
if(loginfo.validate()) 
{ 
%> 
jsp:forward page="show.jsp"/> 
<% 
} 
else{ 
%> 
jsp:forward page="index.jsp"	/> 
<% 
} 
%>	 
 
 
show.jsp:

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

jsp:useBean id="loginfo" class="com.myapp.beans.LogBean"	

scope="request"/>

HTML>

HEAD>

TITLE>简单JavaBean 
BODY> 
表单数据符合要求! 
h1>姓名:
index.jsp	利用它来显示错误信息,show.jsp	利用它来显示表单数据。



  cyy_13