JavaBeans技术的应用 选择自 liujun999999 的 Blog
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> <%=candidate%></td>
<td> <%=voterName%></td>
<td> <%=voterCompany%></td>
<td> <%=voterCountry%></td>
<td> <%=ipAddress%></td>
<td> <%=voteTime%></td>
</tr>
<%
}
RS_voter.close();
%>
</table>
</body>
</html>
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/430979.html
如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!相关文章:

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

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

实现 Java 平台的三种方式
实现 Java 平台的三种方式广泛地说,只要能执行 Java bytecode 者,就可以称为 Java 平台(Java platform)。大致上,实现 Java 平台的方式有三种,分别是: Java 虚拟机器(Java Virtual M…...

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

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

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

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

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

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

机器学习中的损失函数
损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结…...
卷积神经网络的网络结构——ResNet
ResNet由微软研究院的kaiming He等4名华人提出,通过使用Residual Unit成功训练152层深的神经网络,在ILSVRC 2015比赛中获得了冠军,取得3.57%的top5错误率,同时参数量却比VGGNet低,效果非常突出。ResNet的结构可以极快地…...
关于对话机器人,你需要了解这些技术
对话系统(对话机器人)本质上是通过机器学习和人工智能等技术让机器理解人的语言。它包含了诸多学科方法的融合使用,是人工智能领域的一个技术集中演练营。图1给出了对话系统开发中涉及到的主要技术。对话系统技能进阶之路图1给出的诸多对话系…...

自己动手写个聊天机器人吧
学习来源于Sirajology的视频 Build a Chatbot昨天写LSTM的时候提到了聊天机器人,今天放松一下,来看看chatrobot是如何实现的。前天和一个小伙伴聊,如果一个机器人知道在它通过图灵测试后可能会被限制,那它假装自己不能通过然后逃过…...
智能聊天机器人实现(源码+解析)
前言:今天带来的是智能聊天机器人实现(源码解析), 和上一篇教程一样, 当你没有女朋友的时候, 可以用它来打发时间。这里的API是图灵机器人提供的, 实现一个十分强大的机器人。具体功能包括:• 支持聊天对话、智能问答• 拥有笑话、天气、公交等丰富功能• 支持自然语言处理及语…...

机器学习入门好文,强烈推荐
让我们从机器学习谈起导读:在本篇文章中,将对机器学习做个概要的介绍。本文的目的是能让即便完全不了解机器学习的人也能了解机器学习,并且上手相关的实践。当然,本文也面对一般读者,不会对阅读有相关的前提要求。在进…...
用深度学习构造聊天机器人简介
聊天机器人(也可以称为语音助手、聊天助手、对话机器人等)是目前非常热的一个人工智能研发与产品方向。很多大的互联网公司重金投入研发相关技术,并陆续推出了相关产品,比如苹果Siri、微软Cortana与小冰、Google Now、百度的“度秘…...

浅谈深度学习(Deep Learning)的基本思想和方法
深度学习(Deep Learning),又叫Unsupervised Feature Learning或者Feature Learning,是目前非常热的一个研究主题。本文将主要介绍Deep Learning的基本思想和常用的方法。一. 什么是Deep Learning?实际生活中࿰…...

给初学者的深度学习简介
深度学习是计算机领域中目前非常火的话题,不仅在学术界有很多论文,在业界也有很多实际运用。本篇博客主要介绍了三种基本的深度学习的架构,并对深度学习的原理作了简单的描述。本篇文章翻译自Medium上一篇入门介绍。深度学习是计算机领域中目…...
深度学习小白——TensorFlow(一)简介
我选择tensorFlow作为我学习的第一个神经网络框架,恰巧最近Tensorflow支持了windows,所以让我的学习变得更加便捷。 一、TensorFlow的运行流程 TensorFlow运行流程分为两步,分别是构造模型和训练。 在构造阶段,我们需要去构建一个图&#…...