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