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>

JavaBeans技术的应用相关推荐

  1. 【java】java技术要学习的内容

    从csdn上面摘录 J2EE的13种核心技术JDBC, JNDI, EJBs, RMI, JSP, Java servlets, XML, JMS, Java IDL, JTS, JTA, JavaM ...

  2. java编程者必须掌握的技术

    1.ajax /xml 2.json 3.javascript 4.jquery 6.extjs 7.jsp /html /ext /css 8.spring /struts /hibernate / ...

  3. java开发都需要学什么

    1.java基础 2.JSP+Servlet+JavaBean 环节主要 懂流程 MVC而已 别往深了研究 现 开发基本 用 模式 3.Struts+Hibernate+Spring 才 开发 主流技 ...

  4. 初学者如何开发出一个高质量的J2EE系统

    J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种容易理解的角度对这些概念向初学者进行解释,以便掌握学习J2EE学习方向. 首先我们需要知道Java和J2EE是两个不 ...

  5. 初学者如何开发出高质量J2EE系统

    J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种容易理解的角度对这些概念向初学者进行解释,以便掌握学习 J2EE学习方向. 首先我们需要知道Java和J2EE是两个 ...

  6. bootjar打包没有jsp_网页设计制作JSP与ASP的对比

    通常,JavaSever PagesTM(JSP)和Microsoft的Active Sever Pages(ASP)在技术上有许多相似之处.两者都是基于WEB应用程序的动态交互式网页创建的技术环境支 ...

  7. jsp mysql bbs_论坛(BBS)的设计与实现(MySql)

    摘   要 现今的社会是一个信息飞速发达的社会,其中在信息的交流当中,互联网占据着一个非常重要的位置.人们可以通过在互联网上收到最新的消息,也可以通过互联网进行信息的交流.而论坛就是大家进行信息交流的 ...

  8. 基于java的宠物管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    基于JAVA的宠物网站的设计与实现 本系统是采用Java技术来构建的一个基于Web技术的B/S结构的宠物网站,该网站建立在Spring和Struts2框架之上,前台使用JSP作为开发语言,后台使用My ...

  9. javaserver_JavaServer页面简介

    关于本教程 本教程是关于什么的? 本教程介绍了JavaServer Pages(JSP)技术2.0的基础,并提供了由Noel J. Bergman撰写的讨论JSP 1.2的原始教程的更新. 本教程将使 ...

最新文章

  1. 超硬核的 Python 数据可视化教程
  2. Django学习笔记之Django QuerySet的方法
  3. 有没有python与机械结合的工作-用 Python 自动化办公,我与大神之间的差距一下就...
  4. Cascading(一)之日志解析
  5. 拉里.埃里森_耶鲁大学演讲
  6. mybatis大于小于的转义
  7. Gartner最新发布:影响2022年基础设施和运营重大趋势
  8. 产品经理和开发打起来了
  9. IntelliJ IDEA15,PhpStorm10,WebStorm11激活破解
  10. MacOS如何设置不使用时退出登录用户账号
  11. js ajax mysql_Ajax与mysql数据交互实现留言板功能
  12. python输出内容到终端的函数_如何通过Python函数运行的可执行文件的终端输出以一般方式静音?...
  13. 用JS实现人物走动动画效果
  14. Win10正式版怎么卸载IE浏览器?
  15. win10 计算机重启,win10电脑自动重启
  16. bugku-加密-题解
  17. 应用宝 android 平板,应用宝HD2.0个性化推荐最优安卓平板软件
  18. Centos(Linux)系统备份与还原
  19. python中,获取设备网卡接口(ethx, mgmt)
  20. 百度地图:创建多个标注点

热门文章

  1. 未来已来——云应用引擎CAE开启应用Serverless新时代
  2. 安卓可能被淘汰?谷歌的新系统,和鸿蒙太像了
  3. Scrapy项目 - 数据简析 - 实现斗鱼直播网站信息爬取的爬虫设计
  4. 每天一个开发小技巧~
  5. USB TYPE -A -B -C 接口
  6. 减轻梯度消失方法整理
  7. Oracle知识点总结(一)
  8. 独立产品灵感周刊 DecoHack #013
  9. html设计壁纸的软件,60个网页及平面设计师必备神器
  10. C++并发实战:面试题2:一道迅雷笔试题