飘飘悠悠 发表于 2015-1-18 11:32:46

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来展现。

精灵巫婆 发表于 2015-1-21 09:53:15

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

莫相离 发表于 2015-1-25 22:52:13

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

愤怒的大鸟 发表于 2015-1-30 22:30:06

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

谁可相欹 发表于 2015-2-1 22:49:07

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

小女巫 发表于 2015-2-5 11:49:26

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

再现理想 发表于 2015-2-5 22:17:09

是一种使网页(Web Page)产生生动活泼画面的语言

简单生活 发表于 2015-2-6 17:01:05

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

仓酷云 发表于 2015-2-17 10:46:07

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

柔情似水 发表于 2015-3-5 19:25:55

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

灵魂腐蚀 发表于 2015-3-12 11:52:36

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

小魔女 发表于 2015-3-19 19:02:18

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

第二个灵魂 发表于 2015-3-22 19:10:37

是一种将安全性(Security)列为第一优先考虑的语言

金色的骷髅 发表于 2015-3-30 03:11:23

是一种使用者不需花费很多时间学习的语言

变相怪杰 发表于 2015-4-15 07:55:16

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

爱飞 发表于 2015-4-26 18:10:47

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

冷月葬花魂 发表于 2015-4-27 05:31:35

是一种为 Internet发展的计算机语言

深爱那片海 发表于 2015-4-29 07:02:27

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

只想知道 发表于 2015-5-5 23:16:07

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

山那边是海 发表于 2015-5-8 01:38:16

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
页: [1]
查看完整版本: JAVA网页编程之Jsp + JavaBean循规蹈矩教程(四)