JavaBean入门

来源:互联网 发布:开票软件怎么升级 编辑:程序博客网 时间:2024/04/29 14:27

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 contentType="text/html;charset=gb2312" import="com.myapp.beans.SimpleBean"%>

<HTML>

       <HEAD>

              <TITLE>简单JavaBean</TITLE>

       </HEAD>

       <BODY>

       <%

              SimpleBean sb = new SimpleBean() ;

              sb.setName("聂鑫") ;

              sb.setPassword("123456") ;

       %>

       <h1>姓名:<%=sb.getName()%></h1>

       <h1>密码:<%=sb.getPassword()%></h1>

       </BODY>

</HTML>

 

通过page指令的import语句,就可以导入在classes文件夹里的所有的类,这里我导入了刚刚写好的JavaBean。然后就可以在JSP页面中使用它了,这里和我们通常使用Java的类的方式是一样的。

这种使用方式在实际开发中是不会使用到的,因为JavaBean对象的生成应该由容器来完成,而不是由程序员来手工完成,下面我们使用JSP标签来使用JavaBean,我们将index.jsp修改如下:

 

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

<jsp:useBean id="sb" scope="page" class="com.myapp.beans.SimpleBean"/>

<HTML>

       <HEAD>

              <TITLE>简单JavaBean</TITLE>

       </HEAD>

       <BODY>

       <%

              sb.setName("聂鑫") ;

              sb.setPassword("123456") ;

       %>

       <h1>姓名:<%=sb.getName()%></h1>

       <h1>密码:<%=sb.getPassword()%></h1>

       </BODY>

</HTML>

 

<jsp:useBean>标签用来创建JavaBean对象,它通常使用到的属性有三个:id表示对象名;scope表示对象的作用范围;class表示该对象所属的包和类。

对于以上的代码,我们认为还是不满意,因为给JavaBean赋值和取值的这个过程,仍然是由程序员来完成的,这样还是会导致大量的Java代码与HTML代码混编在一起,于是我们应该掌握JavaBeanJSP中使用的最佳方式。

 

    一种调用方式:

    <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="属性"/>

 

以上列出了JavaBeanJSP中的常用方式,最常用的就是四种设值方式中的第一种,它可以将表单中传来的值,全部自动填充到JavaBean里,例如:

 

index.jsp

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

<HTML>

       <HEAD>

              <TITLE>简单JavaBean</TITLE>

       </HEAD>

       <BODY>

       <FORM METHOD=POST ACTION="show.jsp">

              帐号:<INPUT TYPE="text" NAME="name"><BR>

              密码:<INPUT TYPE="password" NAME="password"><INPUT TYPE="submit" VALUE="确定">

       </FORM>

       </BODY>

</HTML>

 

show.jsp

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

<jsp:useBean id="sb" scope="page" class="com.myapp.beans.SimpleBean"/>

<HTML>

       <HEAD>

              <TITLE>简单JavaBean</TITLE>

       </HEAD>

       <BODY>

    <%request.setCharacterEncoding("gb2312");%>

       <jsp:setProperty name="sb" property="*"/>

       <h1>姓名:<jsp:getProperty name="sb" property="name"/></h1>

       <h1>密码:<jsp:getProperty name="sb" property="password"/></h1>

       </BODY>

</HTML>

 

要实现值的自动填充,必须使表单元素名与JavaBean中的属性名保持一致,并且类型也要保持一致。

使用JavaBean的登录范例

LogBean.java

package com.myapp.beans;

 

import java.util.*;

 

public class LogBean {

 

       private String name;

       private String password;

       private Hashtable errors; //保存错误信息

 

       public LogBean() {

              name = "";

              password = "";

              errors = new Hashtable();

       }

 

       public boolean validate(){

              boolean ok=true;

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

              {

                     errors.put("name","请输入帐号");

                     name=" ";

                     ok=false;

              }

              if(password.equals("")||password==null||password.length()<6)

              {

                     errors.put("password","密码长度必须大于6");

                     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</TITLE>

       </HEAD>

       <BODY>

       <FORM METHOD=POST ACTION="login.jsp">

              帐号:<INPUT TYPE="text" NAME="name">

                       <%=loginfo.getErrorMsg("name") %><BR>

              密码:<INPUT TYPE="password" NAME="password">

                       <%=loginfo.getErrorMsg("password") %><BR>

                    <INPUT TYPE="submit" VALUE="确定">

       </FORM>

       </BODY>

</HTML>

 

注意到这个登录页可以用来显示错误信息。

login.jsp

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

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

<HTML>

       <HEAD>

              <TITLE>简单JavaBean</TITLE>

       </HEAD>

       <BODY>

       <%request.setCharacterEncoding("gb2312");%>

       <jsp:setProperty name="loginfo" property="*"/>

       <%

              if(loginfo.validate())

              {

              %>

              <jsp:forward page="show.jsp"/>

              <%

              }

              else{

              %>

              <jsp:forward page="index.jsp"/>

              <%

              }

       %>

       </BODY>

</HTML>

 

show.jsp

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

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

<HTML>

       <HEAD>

              <TITLE>简单JavaBean</TITLE>

       </HEAD>

       <BODY>

       表单数据符合要求!

       <h1>姓名:<jsp:getProperty name="loginfo" property="name"/></h1>

       <h1>密码:<jsp:getProperty name="loginfo" property="password"/></h1>

       </BODY>

</HTML>

 

    这三个页面共用了一个在request范围内有效的JavaBean对象,index.jsp利用它来显示错误信息,show.jsp利用它来显示表单数据。

原创粉丝点击