Borland公司的JBuilder是世界领先的Java开发环境。目前最新版本JbuilderX是一个开发企业级Java应用的综合性跨平台环境,它在使JBuilder屡获殊荣的性能上,增加了很多新的特性,从而成为目前最强大的 Java可视化开发环境。本文将通过一个简单的WEB项目,使您快速进入JBuilderX的殿堂。
JBuilderX的功能极其丰富,本文不会也不可能面面俱到地介绍所有的功能,只会对涉及例子项目开发的一些容易忽视或不容易掌握的功能展开介绍,而对一些常见的功能将一点而过,或不提及,相信您可以在项目开发操作过程中自然掌握那些基本的功能。您也可以通过JBuilderX在线帮助文档来了解和掌握这些内容,推荐您阅读help->JBuilder toturials中前4个基础教程。
项目介绍 虽然JBuilderX可以用于开发桌面、无线、applet等应用程序,但80%以上的使用者用它开发J2EE的WEB应用程序,所以我设计了一个简单的WEB应用项目,亦步亦趋地带领您开发出一个可以运行的WEB应用程序。
这个WEB项目只包含一个用户登录的功能,其系统框图如下: 其中web应用服务器为tomcat4.1,数据库服务器为oracle10g。
这个项目包括以下内容: 1) 用户表T_USER:用于保存用户的信息
2) 登录页面login.htm:让用户录入用户名和密码
3) 用户信息javaBean类UserBean:包括三个属性,即用户ID和用户密码及用户名
4) 获取数据库连接类DSBean:获取数据库链接,以便操作数据库
5) 用户登录处理页面execute.jsp:将用户id,用户密码和数据库中的比较,产生结果页面
6) 异常处理页面error.jsp:当发生异常时转入异常处理页面,显示人性化的错误信息
项目中各项部分的协作关系如下图:
首先以system用户登录oracle数据库,创建数据库用户:
create user test identified by test;grant connect,resource to test;
用户信息表T_USER,该包括三个字段,其表的结构如下
以test用户登录数据库,运行以下语句SQL,创建用户信息表:
create table T_USER ( USER_ID VARCHAR2 (10) PRIMARY KEY, USER_NAME VARCHAR2(20), PASSWORD VARCHAR2(30))/
往表中插入两条用户信息: insert into T_USER values(‘zhangshang’,’张三’,’123456’);insert into T_USER values(‘lisi’,’李四’,’abc’);commit;
创建项目工程
创建工程:File->New Project出现下面的界面:
项目取名为loginPro,放置在D:/loginPro路径中,一路按Next就可以了。
创建完项目工程后,在工程下创建一个Web模块:File->New...->左边树选择Web->双击右边窗口的Web Module(WAR)项目->在弹出的窗口中点选Create empty Web Module,按Next->在弹出的窗口中按以下设置:
web模块的名称为loginWeb,放置在项目路径下的loginWeb子文件夹中,设置Servlet和JSP的版本。在设置完后直接点击Finish完成Web模块的创建。
特别提醒读者,如果您开发的是Web项目,一定要创建Web模块,只有这样,在工程中开发的Java类在Rebuild后,JBuilderX才会调用Ant工具,将编译后的class文件同步到web模块的WEB-INF目录中。笔者曾经有一个朋友向我报怨说用JBuilder开发WEB程序很麻烦,原来他没有在工程中创建Web模块,每次更改类后,都不辞辛苦地将编译后的类手工拷到到WEB应用的WEB-INF\classes目录下,殊不知,金光大道已经开通,而自己还在羊肠小道里挣扎。
编写类
本项目中包括两个类,一个是用户信息类UserBean.java,另一个是获取数据库连接类DSBean.java。下面我们来编写这两个类:
首先编写UserBean.java类:File->New Class...弹出如下的窗口: 在类向导的窗口界面上录入类的名字UserBean,包名默认的是项目的名称,您可以更改其他更用意义的包名,我们简单地接受默认的包名。按OK后,在编辑窗口中得到如下的类代码:
package loginpro;public class UserBean { public UserBean() { }}
下面我们给UserBean类添加3个属性:在UserBean的编辑窗口的底部点击Bean标签页->选择Bean标签下的Properties的子标签页->在Properties页面中通过Add Property来添加类的属性,点击该按钮弹出属性窗口->在此窗口中添加属性。
不过笔者以为这种常规的给类添加属性的方法比较笨拙,效率很低,您可以直接通过在类中键入全局变量,然后再按上面的步骤切换到Properties标签页,JBuilderX会自动将全局变量列在这个页面中,通过钩选Getter和Setter列中的复选框,变量的set和get方法就自动产生了,笔者在编写程序的时候选择采用这种方法。添加全局变量后,UserBean代码如下(其中粗体红色为新增的代码,下同):
package loginpro;public class UserBean
{
private String userID;
private String userName;
private String password;
public UserBean() { }
}
切换到Properties页面,钩选所有的Getter和Setter
切换回代码页面后,属性的get和set方法都自动生成了:
...
public class UserBean
{
...
public String getPassword()
{
return password;
}
public String getUserID()
{
return userID;
}
public String getUserName()
{
return userName;
}
public void setUserName(String userName)
{
this.userName = userName;
}
public void setUserID(String userID)
{
this.userID = userID;
}
public void setPassword(String password)
{
this.password = password;
}
}
编写好UserBean后我们再来编写获取数据连接的DSBean,在编写这个类之前,因为该类需要用到Oracle的JDBC包,所以我们需要将oracle JDBC的jar包加载到类库中,再将其引入项目工程里。
目前oracle最新的版本是oracle10g,如果您安装了oracle10g,则JDBC包位于[ORACLE_HOME]\jdbc\lib\classes12.jar,如果您未安排数据库,您可以到这儿下载JDBC驱动包,它是向下兼容的。假设我们已经将其下载到D:\extra目录中,我们通过以下操作将其加载到JBuilderX的类库中:Tools->点击Configure Libraries弹出Configure Libraries窗口,如图6,首先点击Configure Libraries窗口左下方的New...弹出New Library Wizard窗口,在窗口中给该类取一个名字叫jdbcLib,再点击该窗口的Add...按钮弹出Select One or More Directories窗口,定位到D:\extra目录,选取class12.jar,然后确认即可。
接下来我们需要在项目中引用类库中这个新的jar包,这样项目才可以访问这个JDBC的jar包:Project->Project Properties在弹出的窗口左边的树中选择Paths,按照图7的操作完成引用的任务:
需要指出的是,如果项目需要引用大量的外部jar包,则可以将这些jar包组织到一个目录下,然后将整个目录加入到类库,在项目工程中引用该目录对应的类库名就可以在项目中调用这些包了。当Rebuild项目时,JBuilderX还会将这些包同步到WEB应用的目录中。
现在万事俱备了,我们开始编写DSBean.java: package loginpro;
import java.sql.*;
public class DSBean
{
public static Connection getConnection() throws SQLException
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch (ClassNotFoundException ex)
{
System.out.println("数据库驱动程序没有找到。");
}
return DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.189:1521:ora9i", "test", "test");
}
}
我的数据库装在IP为192.168.0.189的机器上,数据库的SID是ora9i,读者在编写时必须根据您的数据库的具体情况作相应的更改。
编写完这两个类后,我们可以在项目工程面板中右击loginPro.jpx,选择Rebuild,来编译这两个类,编译完后的类不但会输出到D:\loginPro\classes目录下,同时还将同步到D:\loginPro\loginWeb\WEB-INF\classes目录中,并且将会将项目中引用的外部包拷贝一份到D:\loginPro\loginWeb\WEB-INF\lib目录下。值得注意的是,如果用Make命令来编译,则类只会输出到D:\loginPro\classes中,而不会同步到D:\loginPro\loginWeb\WEB-INF\classes目录。对J2EE的web目录结构的探讨超越本文内容,请自行阅读相关资料。
登录页面和处理页面
编写用户登录的页面login.