JavaBeans技术的应用
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> <%=candidate%></td>
<td> <%=voterName%></td>
<td> <%=voterCompany%></td>
<td> <%=voterCountry%></td>
<td> <%=ipAddress%></td>
<td> <%=voteTime%></td>
</tr>
<%
}
RS_voter.close();
%>
</table>
</body>
</html>
JavaBeans技术的应用相关推荐
- 【java】java技术要学习的内容
从csdn上面摘录 J2EE的13种核心技术JDBC, JNDI, EJBs, RMI, JSP, Java servlets, XML, JMS, Java IDL, JTS, JTA, JavaM ...
- java编程者必须掌握的技术
1.ajax /xml 2.json 3.javascript 4.jquery 6.extjs 7.jsp /html /ext /css 8.spring /struts /hibernate / ...
- java开发都需要学什么
1.java基础 2.JSP+Servlet+JavaBean 环节主要 懂流程 MVC而已 别往深了研究 现 开发基本 用 模式 3.Struts+Hibernate+Spring 才 开发 主流技 ...
- 初学者如何开发出一个高质量的J2EE系统
J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种容易理解的角度对这些概念向初学者进行解释,以便掌握学习J2EE学习方向. 首先我们需要知道Java和J2EE是两个不 ...
- 初学者如何开发出高质量J2EE系统
J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种容易理解的角度对这些概念向初学者进行解释,以便掌握学习 J2EE学习方向. 首先我们需要知道Java和J2EE是两个 ...
- bootjar打包没有jsp_网页设计制作JSP与ASP的对比
通常,JavaSever PagesTM(JSP)和Microsoft的Active Sever Pages(ASP)在技术上有许多相似之处.两者都是基于WEB应用程序的动态交互式网页创建的技术环境支 ...
- jsp mysql bbs_论坛(BBS)的设计与实现(MySql)
摘 要 现今的社会是一个信息飞速发达的社会,其中在信息的交流当中,互联网占据着一个非常重要的位置.人们可以通过在互联网上收到最新的消息,也可以通过互联网进行信息的交流.而论坛就是大家进行信息交流的 ...
- 基于java的宠物管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)
基于JAVA的宠物网站的设计与实现 本系统是采用Java技术来构建的一个基于Web技术的B/S结构的宠物网站,该网站建立在Spring和Struts2框架之上,前台使用JSP作为开发语言,后台使用My ...
- javaserver_JavaServer页面简介
关于本教程 本教程是关于什么的? 本教程介绍了JavaServer Pages(JSP)技术2.0的基础,并提供了由Noel J. Bergman撰写的讨论JSP 1.2的原始教程的更新. 本教程将使 ...
最新文章
- 超硬核的 Python 数据可视化教程
- Django学习笔记之Django QuerySet的方法
- 有没有python与机械结合的工作-用 Python 自动化办公,我与大神之间的差距一下就...
- Cascading(一)之日志解析
- 拉里.埃里森_耶鲁大学演讲
- mybatis大于小于的转义
- Gartner最新发布:影响2022年基础设施和运营重大趋势
- 产品经理和开发打起来了
- IntelliJ IDEA15,PhpStorm10,WebStorm11激活破解
- MacOS如何设置不使用时退出登录用户账号
- js ajax mysql_Ajax与mysql数据交互实现留言板功能
- python输出内容到终端的函数_如何通过Python函数运行的可执行文件的终端输出以一般方式静音?...
- 用JS实现人物走动动画效果
- Win10正式版怎么卸载IE浏览器?
- win10 计算机重启,win10电脑自动重启
- bugku-加密-题解
- 应用宝 android 平板,应用宝HD2.0个性化推荐最优安卓平板软件
- Centos(Linux)系统备份与还原
- python中,获取设备网卡接口(ethx, mgmt)
- 百度地图:创建多个标注点