当前位置: 首页 > article >正文

JavaBeans技术的应用 选择自 liujun999999 的 Blog

JavaBeans是一个可重复使用的软件部件,用来生成其进行可视化处理的部件。
 
JavaBeans组件是一个JAVA类,遵循一个接口格式,以便于把类看做标准的JavaBeans组件进行构造。

 JavaBeans的属性

属性是Bean组件内部状态的抽象表示。JavaBeans的属性可以分为以下四类:

    Simple 简单的

  Indexed 索引的

  Bound 绑定的

  Constrained 约束的

简单属性依赖于标准命名约定来定义getXXX()方法和setXXX()方法。索引属性则允许读取和设置整个数组,也允许使用数组索引单独地读取和设置数组元素。绑定属性则是其值发生变化时要广播给属性变化监听器的属性。约束属性则是那些值发生改变及起作用之前,必须由约束属性变化监听器生效的属性。

1、  Simple 简单属性:表示一个伴随有Get/Set方法的变量。

例程1:[formInput.java]

package Test;

public class formInput{

    String str = new String("New Year");

    public formInput(){

    }

    public void setInput(String str){

        this.str = str;

    }

    public String getInput(){

        return str;

    }

}

2、  Indexed 索引属性:表示一个数组值,可以使用Get/Set方法取得数组中的值。

例程2:[formInput1.java]

package Test;

public class formInput1{

    String b[] = new String[]{

        "5","2","3","4"

    };

    public formInput1(){

    }

    public String[] getInput(){

        return b;

    }

    public void setInput(String[] b){

        this.b = b;

    }

}

3、  Bound 绑定属性:提供一种机制,即通知监听器一个JavaBeans组件的属性发生了改变。

例程3:[boundBean.java]

package Test;

import java.awt.Canvas;

import java.beans.PropertyChangeListener;

import java.beans.PropertyChangeSupport;

public class boundBean extends Canvas{

    String str = "bound Bean";

    private PropertyChangeSupport propertyChange = new PropertyChangeSupport(this);

    public void setString(String newValue){

        String oldValue = str;

        str = newValue;

        propertyChange.firePropertyChange("change value",oldValue,newValue);

    }

    public String getString(){

        return str;

    }

    public void addPropertyChangeListener(PropertyChangeListener propertyChangeListener){

        propertyChange.addPropertyChangeListener(propertyChangeListener);

    }

    public void removePropertyChangeListener(PropertyChangeListener propertyChangeListener){

        propertyChange.removePropertyChangeListener(propertyChangeListener);

    }

}

4、  Constrained 约束属性:与绑定属性类似,但属性值的变化首先要被所有的监听器验证以后,值的变化才能由JavaBeans组件发生作用。

例程4:[constrainedBean.java]

package Test;

import java.beans.PropertyChangeSupport;

import java.beans.PropertyVetoException;

import java.beans.VetoableChangeListener;

import java.beans.VetoableChangeSupport;

public class constrainedBean{

    //实例化一个propertyChange对象

    private PropertyChangeSupport propertyChange = new PropertyChangeSupport(this);

    //实例化一个vetoChange对象

    private VetoableChangeSupport vetoChange = new VetoableChangeSupport(this);

    public void setUsername(String newUsername){

        try{

            String oldUsername=yourName;

            vetoChange.fireVetoableChange("Username",new String(oldUsername),new String(newUsername));

            yourName=newUsername;

            changes.firePropertyChange("Username",new String(oldPriceInCents),new String(newUsername));

        }

        catch(PropertyVetoException e){

            System.err.println(e.getMessage());

        }

        public void addVetoableChangeListener(VetoableChangeListener vetoableChangeListener){

            vetos.addVetoableChangeListener(vetoableChangeListener);

        }

        public void removeVetoableChangeListener(VetoableChangeListener vetoableChangeListener){

            vetos.removeVetoableChangeListener(vetoableChangeListener);

        }

    }

}

JavaBeans的应用

1、  猜数字

目的:程序指定一个1~100之间的某一个自然数,然后用户去猜这个数的值是多少。程序会根据用户的输入值,做出相应的信息提示。

代码:

[numguess.jsp]

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

<jsp:useBean id="numguess" class="Test.NumGuessBean" scope="session" />

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

<html>

<head>

<title>Number Guess</title>

</head>

<body>

<font size=4>

<% if(numguess.getSuccess()){ %>

Congratulations! You got it.

And after just <%= numguess.getNumGuesses() %>tries.<p>

<% numguess.reset(); %>

Care to <a href="numguess.jsp">try again</a>?

<% }

else if(numguess.getNumGuesses() == 0){ %>

Welcome to the Number Guess Game.<p>

I'm thinking of a number between 1 and 100.<p>

<form method="get">

What's your guess?<input type=text name="guess">

<input type="submit" value="Submit">

</form>

<% } else { %>

Good guess,but nope. Try <b><%= numguess.getHint() %></b>

You have made <%= numguess.getNumGuesses() %> guesses.<p>

I'm thinking of a number between 1 and 100.<p>

<form method="get">

What's your guess?<input type=text name="guess">

<input type="submit" value="Submit">

</form>

<% } %>

</font>

</body>

</html>

该程序用到一个Bean,代码:

[NumGuessBean.java]

package Test;

import java.util.*;

public class NumGuessBean{

    int answer;

    boolean success;

    String hint;

    int numGuesses;

    public NumGuessBean(){

        reset();

    }

    public void setGuess(String guess){

        numGuesses++;

        int g;

        try{

            g = Integer.parseInt(guess);

        }

        catch(NumberFormatException e){

            g = -1;

        }

        if(g == answer){

            success = true;

        }

        else if(g == -1){

            hint = "a number next time";

        }

        else if(g < answer){

            hint = "higher";

        }

        else if(g > answer){

            hint = "lower";

        }

    }

    public boolean getSuccess(){

        return success;

    }

    public String getHint(){

        return "" + hint;

    }

    public int getNumGuesses(){

        return numGuesses;

    }

    public void reset(){

        answer = Math.abs(new Random().nextInt() % 100) + 1;

        success = false;

        numGuesses =0;

    }

}

2、  封装数据库

目的:用JavaBeans封装数据库操作。采用的数据库是SQL Server。

步骤:首先,建立数据库Vote,在其中建立表voter和result.

voter的作用是存放投票人的资料,其结构为:

字段名

描述

数据类型

id

自动

Int

Candidate

投票的公司

Varchar

voter_name

投票人姓名

Varchar

voter_company

投票人所在的公司

Varchar

voter_country

投票人所在的国家

Varchar

ip_address

投票人的IP地址

Varchar

vote_time

投票时间

datetime

result的作用是存放候选人的票数,其结构为:

字段名

描述

数据类型

id

自动

Int

candidate

候选公司

Varchar

vote_num

票数

int

建立完数据库后,在ODBC数据源管理器中加入系统DSN,取名vote

创建一个JavaBeans,取名为conn.java

代码:

package vote;

import java.sql.*;

public class conn{

    String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";

    String sConnStr = "jdbc:odbc:vote";

    Connection connect = null;

    ResultSet rs = null;

    public conn(){

        try{

            Class.forName(sDBDriver);

        }

        catch(java.lang.ClassNotFoundException e){

            System.err.println(e.getMessage());

        }

    }

    public ResultSet executeQuery(String sql){

        rs = null;

        try{

            connect = DriverManager.getConnection(sConnStr);

            Statement stmt = connect.createStatement();

            rs = stmt.executeQuery(sql);

        }

        catch(SQLException ex){

            System.err.println(ex.getMessage());

        }

        return rs;

    }

}

编译后放置在应用服务器/WEB_INF/classes/vote目录下。

页面代码:[show.jsp]

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

<%@ page language="java" import="java.sql.*" %>

<jsp:useBean id="voteBean" scope="page" class="vote.conn" />

<html>

<head>

<title>当前票数统计</title>

<meta http-equiv="refresh" content="10;URL=show.jsp">

</head>

<body align=center>

<h1><b>当前票数统计</b></h1>

<table width="60%" border=1>

    <tr bgcolor="#ccccff" align=center>

        <td width="51%"><font color="#ff0033"><b>候选公司名</b></font></td>

        <td width="49%"><font color="#ff0033"><b>当前票数</b></font></td>

    </tr>

    <%

    ResultSet RS_result;

    RS_result = voteBean.executeQuery("select * from result");

    String companyName;

    int voteNum;

    while(RS_result.next()){

    companyName = RS_result.getString("candidate");

    voteNum = RS_result.getInt("vote_num");

    %>

    <tr align=center>

        <td><%=companyName%></td>

        <td><%=voteNum%></td>

    </tr>

    <%

    }

    RS_result.close();

    %>

</table>

<hr>

<h2><b>投票人的详细信息</b></h2>

<table width="100%" border="1">

    <tr bgcolor="#ffcccc" align="center">

        <td><font color="#0000ff"><b>投票的公司</b></font></td>

        <td><font color="#0000ff"><b>投票人姓名</b></font></td>

        <td><font color="#0000ff"><b>投票人所在的公司</b></font></td>

        <td><font color="#0000ff"><b>投票人所在的国家</b></font></td>

        <td><font color="#0000ff"><b>投票人的IP地址</b></font></td>

        <td><font color="#0000ff"><b>投票时间</b></font></td>

    </tr>

    <%

    ResultSet RS_voter;

    RS_voter = voteBean.executeQuery("select * from voter");

    String candidate,voterName,voterCompany,voterCountry,ipAddress;

    java.util.Date voteTime;

    while(RS_voter.next()){

    candidate = RS_voter.getString("candidate");

    voterName = RS_voter.getString("voter_name");

    voterCompany = RS_voter.getString("voter_company");

    voterCountry = RS_voter.getString("voter_country");

    ipAddress = RS_voter.getString("ip_address");

    voteTime = RS_voter.getDate("vote_time");

    %>

    <tr>

        <td>&nbsp;<%=candidate%></td>

        <td>&nbsp;<%=voterName%></td>

        <td>&nbsp;<%=voterCompany%></td>

        <td>&nbsp;<%=voterCountry%></td>

        <td>&nbsp;<%=ipAddress%></td>

        <td>&nbsp;<%=voteTime%></td>

    </tr>

    <%

    }

    RS_voter.close();

    %>

</table>

</body>

</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/430979.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章:

JavaBeans技术的应用 选择自 liujun999999 的 Blog

JavaBeans是一个可重复使用的软件部件&#xff0c;用来生成其进行可视化处理的部件。 JavaBeans组件是一个JAVA类&#xff0c;遵循一个接口格式&#xff0c;以便于把类看做标准的JavaBeans组件进行构造。JavaBeans的属性属性是Bean组件内部状态的抽象表示。JavaBeans的属性可以…...

J2ME (Java 2 Micro Edition) 简介

J2ME (Java 2 Micro Edition) 简介  中国科大BBS   ■前言   如果您曾经到http://www.javasoft.com 网站上查询有关Java 2 Micro Edition 的资料&#xff0c;十之八九会被一大堆的技术名词搞的一头雾水。什么KVM &#xff0c;什么CLDC 、CDC 、MIDP &#xff0c;後面还冒…...

实现 Java 平台的三种方式

实现 Java 平台的三种方式广泛地说&#xff0c;只要能执行 Java bytecode 者&#xff0c;就可以称为 Java 平台&#xff08;Java platform&#xff09;。大致上&#xff0c;实现 Java 平台的方式有三种&#xff0c;分别是&#xff1a; Java 虚拟机器&#xff08;Java Virtual M…...

软件人员的生涯规划 ----来自蔡学镛先生

[散文随笔]软件人员的生涯规划生涯规划&#xff0c;这么一个严肃而重要的主题&#xff0c;似乎应该找学者专家们来发表言论和研究报告才是&#xff0c;没有我这个年轻人说话的余地。只是&#xff0c;日昨在报纸上看到许多前职棒明星现今的遭遇之后&#xff0c;感触良多&#xf…...

jsp中取得当前绝对路径的方法

Asp中&#xff0c;我们可以用Server.Mappath(".")直接取到当前程序所在目录的绝对路径&#xff08;也叫物理路径&#xff09;&#xff0c; 但是在jsp中好像没有直接的方法可以取得当前目录的绝对路径。 request.getRealPath()只是取得根目录所对应的绝对路径&#xf…...

Object 类中 equals和toString() 方法

equals方法:测试一个对象是否同另一个对象相等, 就像”” 就是判断两个对象是否指向一个内存区域.(一般不用 ) 一般我们都重载这个方法.java要求equals方法有如下性质:1: 自反性 x.equals(x) ;// return true;2: 对成性 if x.equals(y) return true, then y.equals(x) return t…...

用JAVA实现一个分页类

这里我以从一个用户表中查询用户信息为例演示其用法&#xff1a;1.将PageResultSet.java文件编译成class文件&#xff0c;并放入你的Web应用程序的WEB-INF/classes/com/youngor/util目录下&#xff0c;可以对包名做相应修改。2.在你的Action类中:先从业务处理逻辑类中取出数据(…...

JBuilderX快捷键知多少

F1 Help F3 查找下一个 shift F3 反向查找下一个 ctrl F 查找 ctrl p 路径查找 ctrl F4 运行到当前位置 ctrlF6在jbuilder中&#xff0c;切换不同的文件CtrlF4关闭正在编辑的文件&#xff0c;Ctrl F5切换工程 F5 设置断点 F7 跟入 F8 单步 F9 运行 ctrl F9 编译工…...

Ant介绍以及基本使用指南

Ant介绍以及基本使用指南 Ant 是著名Java开源组织Apache的一个项目&#xff0c;是一个基于java的build工具。它可以使你通过ant脚本语言&#xff0c;自动你的项目拷贝到某个目录&#xff0c;发布项目&#xff0c;或者生成一些代码&#xff0c;执行SQL语言。总之它可以帮助你完成…...

j2ee程序员应该掌握的linux知识

一般大型J2EE应用都在建构在linux环境下的。开发环境下我们可以通过samba映射成本地的网络驱动器&#xff0c;直接在windows环境下进行编程调试。但是最后的发布还是要到linux环境&#xff0c;同时我们对网上web服务器和数据库服务器的应用管理(比如自动脚本发布等&#xff09;…...

机器学习中的损失函数

损失函数&#xff08;loss function&#xff09;是用来估量你模型的预测值f(x)与真实值Y的不一致程度&#xff0c;它是一个非负实值函数,通常使用L(Y, f(x))来表示&#xff0c;损失函数越小&#xff0c;模型的鲁棒性就越好。损失函数是经验风险函数的核心部分&#xff0c;也是结…...

卷积神经网络的网络结构——ResNet

ResNet由微软研究院的kaiming He等4名华人提出&#xff0c;通过使用Residual Unit成功训练152层深的神经网络&#xff0c;在ILSVRC 2015比赛中获得了冠军&#xff0c;取得3.57%的top5错误率&#xff0c;同时参数量却比VGGNet低&#xff0c;效果非常突出。ResNet的结构可以极快地…...

关于对话机器人,你需要了解这些技术

对话系统&#xff08;对话机器人&#xff09;本质上是通过机器学习和人工智能等技术让机器理解人的语言。它包含了诸多学科方法的融合使用&#xff0c;是人工智能领域的一个技术集中演练营。图1给出了对话系统开发中涉及到的主要技术。对话系统技能进阶之路图1给出的诸多对话系…...

自己动手写个聊天机器人吧

学习来源于Sirajology的视频 Build a Chatbot昨天写LSTM的时候提到了聊天机器人&#xff0c;今天放松一下&#xff0c;来看看chatrobot是如何实现的。前天和一个小伙伴聊&#xff0c;如果一个机器人知道在它通过图灵测试后可能会被限制&#xff0c;那它假装自己不能通过然后逃过…...

智能聊天机器人实现(源码+解析)

前言:今天带来的是智能聊天机器人实现(源码解析), 和上一篇教程一样, 当你没有女朋友的时候, 可以用它来打发时间。这里的API是图灵机器人提供的, 实现一个十分强大的机器人。具体功能包括:• 支持聊天对话、智能问答• 拥有笑话、天气、公交等丰富功能• 支持自然语言处理及语…...

机器学习入门好文,强烈推荐

让我们从机器学习谈起导读&#xff1a;在本篇文章中&#xff0c;将对机器学习做个概要的介绍。本文的目的是能让即便完全不了解机器学习的人也能了解机器学习&#xff0c;并且上手相关的实践。当然&#xff0c;本文也面对一般读者&#xff0c;不会对阅读有相关的前提要求。在进…...

用深度学习构造聊天机器人简介

聊天机器人&#xff08;也可以称为语音助手、聊天助手、对话机器人等&#xff09;是目前非常热的一个人工智能研发与产品方向。很多大的互联网公司重金投入研发相关技术&#xff0c;并陆续推出了相关产品&#xff0c;比如苹果Siri、微软Cortana与小冰、Google Now、百度的“度秘…...

浅谈深度学习(Deep Learning)的基本思想和方法

深度学习&#xff08;Deep Learning&#xff09;&#xff0c;又叫Unsupervised Feature Learning或者Feature Learning&#xff0c;是目前非常热的一个研究主题。本文将主要介绍Deep Learning的基本思想和常用的方法。一. 什么是Deep Learning&#xff1f;实际生活中&#xff0…...

给初学者的深度学习简介

深度学习是计算机领域中目前非常火的话题&#xff0c;不仅在学术界有很多论文&#xff0c;在业界也有很多实际运用。本篇博客主要介绍了三种基本的深度学习的架构&#xff0c;并对深度学习的原理作了简单的描述。本篇文章翻译自Medium上一篇入门介绍。深度学习是计算机领域中目…...

深度学习小白——TensorFlow(一)简介

我选择tensorFlow作为我学习的第一个神经网络框架&#xff0c;恰巧最近Tensorflow支持了windows,所以让我的学习变得更加便捷。 一、TensorFlow的运行流程 TensorFlow运行流程分为两步&#xff0c;分别是构造模型和训练。 在构造阶段&#xff0c;我们需要去构建一个图&#…...