|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有了这样一个呼声:让java代替C语言成为基本语言。这些足以说明java简单易学的这个优点。其次,java的功能强大,前面我也提到了,EJB3.0的推出使java成为了大型项目的首选。js|教程JavaServerPages+JavaBeans的数据库操纵使用
下面已讲了一个复杂的JavaBean使用的计数器例子,固然在实践程序过程当中,触及的更多的仍是和数据库相干的操纵,以是在这一节我们将重点论述JavaServerPages和JavaBeans怎样对数据库举行操纵。这里我们拔取了一个对照有代表性对照有用的例子,那就是用户注册办理,由于这在网上利用对照的频仍,不论是注册Email、有奖查询拜访、购置物品大概到场社区等等城市触及到一个用户注册的成绩;别的一方面,它又对照有代表性,触及到了数据库的纪录增添,纪录显现等罕见操纵,以是我们就拿用户注册开刀了。
程序接纳OracleJdeveloper3.1开辟,运转情况为Wiin2000+Tomcat3.1,数据库体系接纳了Oracle8.16i。
起首我们创建一个数据库demodb,其字段以下面所示
usernameVARCHAR2(20)用户名
passwordVARCHAR2(20)暗码
emailVARCHAR2(30)Email地点
homepageVARCHAR2(50)主页
signsVARCHAR2(200)署名
regtimeDATE注册工夫
接着我们创建几个JavaBeans和JavaServerPages文件
db.java文件(封装数据库毗连及一些底层操纵)
adduser.java文件(举行用户数据的读取和增加操纵)
newuser.jsp文件(用户新增页面,用于输出用户注册信息)
donewuser.jsp文件(举行用户注册信息增加)
listuser.jsp文件(一切的注册用户信息列表)
为了便利人人看代码,在良多中央都举行了具体的正文和解说,至于JavaBean中触及到Java语法布局的工具,请人人参考Java书本。
db.java文件
申明:这个JavaBean封装数据库毗连及一些底层操纵,派生出的类能够间接挪用这些办法,别的供应了一个toChinese办法,次要用来举行中文数据的处置。
//Copyright(c)2000http://jspbbs.yeah.net
packagelyf;
/**
*AClassclass.
*<P>
*@authorliuyufeng
*/
//声明类库文件
importoracle.jdbc.driver.*;
importjava.net.*;
importjava.sql.*;
importjava.lang.*;
importjava.io.*;
importjava.util.*;
publicclassdb
{
//成员变量初始化
Connectionconn=null;//数据库毗连
ResultSetrs=null;//纪录集
StringUsername="";//用户名
StringPassword="";//暗码
StringEmail="";//email
StringHomepage="";//主页
StringSigns="";//署名
//db的构建器
publicdb()
{
try
{//注册数据库驱动程序为Oracle驱动
Class.forName(neworacle.jdbc.driver.OracleDriver());
}
catch(java.lang.ClassNotFoundExceptione)
{
//如许写是为了便利调试程序,堕落打印mydb()就晓得在甚么中央堕落了
System.err.println("mydb():"+e.getMessage());
}
}
//executeQuery办法用于举行纪录的查询操纵
//出口参数为sql语句,前往ResultSet对象
publicResultSetexecuteQuery(Stringsql)
{
rs=null;
try
{//创建数据库毗连,利用Oracle的一种thin毗连体例,demo为主机名字,demodb为数据库,前面的两个demo为用户名和暗码
conn=DriverManager.getConnection("jdbc:oracle:thin:@demo:1521:demodb","demo","demo");
Statementstmt=conn.createStatement();
//实行数据库查询操纵
rs=stmt.executeQuery(sql);
}
catch(SQLExceptionex)
{
System.err.println("db.executeQuery:"+ex.getMessage());
}
returnrs;
}
//executeUpdate办法用于举行add大概update纪录的操纵
//出口参数为sql语句,乐成前往true,不然为false
publicbooleanexecuteUpdate(Stringsql)
{
booleanbupdate=false;
rs=null;
try
{
//创建数据库毗连,别的参数申明同下面的一样
conn=DriverManager.getConnection("jdbc:oracle:thin:@demo:1521:demodb","demo","demo");
Statementstmt=conn.createStatement();
introwCount=stmt.executeUpdate(sql);
//假如不乐成,bupdate就会前往0
if(rowCount!=0)bupdate=true;
}
catch(SQLExceptionex)
{
//打印堕落信息
System.err.println("db.executeUpdate:"+ex.getMessage());
}
returnbupdate;
}
//toChinese办法用于将一个字符串举行中文处置
//不然将会是???如许的字符串
publicstaticStringtoChinese(Stringstrvalue)
{
try
{
if(strvalue==null)
{
returnnull;
}
else
{
strvalue=newString(strvalue.getBytes("ISO8859_1"),"GBK");
returnstrvalue;
}
}
catch(Exceptione)
{
returnnull;
}
}
}<Palign=left> adduser.java文件
申明:次要举行用户数据的读取和增加操纵,从db派生出来,addNewUser办法用来举行用户数据的增加,checkUser()办法用来反省用户名是不是反复,别的另有一些set/get办法用来对属性举行处置,dousernew.jsp文件将举行条用。
//Copyright(c)2000http://jspbbs.yeah.net
packagelyf;
/**
*AClassclass.
*<P>
*@authorliuyufeng
*/
//导进java类库
importjava.sql.*;
importjava.lang.*;
importoracle.jdbc.driver.*;
//adduser由db派生出来,具有db的成员变量和办法
publicclassadduserextendsdb{
//构建器
publicbooleanaddNewUser(){
booleanboadduser=false;
try{
//举行用户注册的纪录增加操纵,天生sql语句
StringsSql=newString("insertintouser(regtime,username,password,email,homepage,signs)");
sSql=sSql+"values(SYSDAYE,""+Username+"",""+Password+"",""+Email+"",""+Homepage+"",""+Signs+"")";
//一种调试的办法,能够打印出sql语句,以便于检察毛病
System.out.println(sSql);
//挪用父类的executeUpdate办法,并依据乐成以否来设置前往值
if(super.executeUpdate(sSql))boadduser=true;
}
catch(Exceptionex){
//堕落处置
System.err.println("adduser.addNewUser:"+ex.getMessage());
}finally{
//不管是不是堕落,都要前往值
returnboadduser;
}
}
//checkUser()办法用来反省用户名是不是反复
//假如反复前往一个false
publicbooleancheckUser(){
booleanboadduser=false;
try{
//构建sql查询语句
StringsSql="select*fromuserwhereusername=""+Username+""";
//挪用父类的executeQuery办法
if((super.executeQuery(sSql)).next()){
//查询出来的纪录集为空
boadduser=false;
}else{
boadduser=true;
}
}
catch(Exceptionex){
//堕落处置
System.err.println("adduser.addNewUser:"+ex.getMessage());
}finally{
//前往值
returnboadduser;
}
}
//属性的set/get办法,同哀求的参数分歧
/*
实在上面的一切get/set办法都是反复性休息,为了不反复性的拷贝粘贴事情,我写了个软件JspCodeFaster,只需输出一系列的字段名,一切的get/set办法都能够主动天生,人人能够在我的网站http://jspbbs.yeah.net高低载这个软件
*/
//属性用户名Username的get/set办法
publicStringgetUsername(){
returnUsername;}
publicvoidsetUsername(StringnewUsername){
//用户名有多是中文,必要举行转换
Username=db.toChinese(newUsername);}
//属性暗码Password的get/set办法
publicStringgetPassword(){
returnPassword;}
publicvoidsetPassword(StringnewPassword){
Password=newPassword;}
//属性Email的get/set办法
publicStringgetEmail(){
returnEmail;}
publicvoidsetEmail(StringnewEmail){
Email=newEmail;}
//属性主页Homepage的get/set办法
publicStringgetHomepage(){
returnHomepage;}
publicvoidsetHomepage(StringnewHomepage){
Homepage=newHomepage;}
//属性主页Signs的get/set办法
publicStringgetSigns(){
returnSigns;}
publicvoidsetSigns(StringnewSigns){
//署名有多是中文,必要举行转换
Signs=db.toChinese(newSigns);}
}
好了,到这里,Javabean程序基础上写完了,要注重的是中文处置必定要经由转换,另有纷歧定一切的属性都必要set/get办法,视情形而定,最初还必要编译为class文件,可使用一些可视化的软件如Jbuilder大概VisualAge等等来编译。编译后会发明有两个文件db.class和adduser.class文件,都在lyf子目次下。这两个文件就能够让前面的jsp页面挪用了。
用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。 |
|