JAVA网页编程之Jsp + JavaBean循规蹈矩教程(四)
有了这样一个呼声:让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来展现。 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 是一种使网页(Web Page)产生生动活泼画面的语言 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 是一种将安全性(Security)列为第一优先考虑的语言 是一种使用者不需花费很多时间学习的语言 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 是一种为 Internet发展的计算机语言 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
页:
[1]