【浅析利用Java技术实现基于Web的多数据库访问5700字(论文)】_第1页
【浅析利用Java技术实现基于Web的多数据库访问5700字(论文)】_第2页
【浅析利用Java技术实现基于Web的多数据库访问5700字(论文)】_第3页
【浅析利用Java技术实现基于Web的多数据库访问5700字(论文)】_第4页
【浅析利用Java技术实现基于Web的多数据库访问5700字(论文)】_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浅析利用Java技术实现基于Web的多数据库访问TOC\o"1-3"\h\u21417引言 引言随着网络技术和数据库技术的不断发展,各个领域中广泛使用Web技术设计的数据库应用。但在技术和历史等众多因素的影响下,一个大部门中并存多个应用且不集中,使信息资源的共享出现了很大的问题。在不影响原有系统运行的前提下,完成多个数据库系统间的数据交互,访问和处理。利用Java技术可以实现不同操作系统和不同数据库管理系统间的数据处理,多数据库系统的数据交互。java技术是应用最广泛的编程语言和平台。它具有平台无关性、面向对象、安全性、高性能、分布式、多线程等特点。使用javabean实现多数据库访问技术。1.JSP技术JSP技术是java类的部分技术。JSP页面编译成servlet可以调用JavaBeans组件(豆)或EJB组件(EJB)处理在服务器端。因此,JSP技术在构建可伸缩的基于Web的应用程序中起着重要的作用。JSP页面不限于任何特定的平台或Web服务器。JSP规范在行业中具有广泛的适应性。采用jsp+javaBean的开发模式。页面的的动态显示内容将由jsp来处理,逻辑处理将由javaBean来完成。例如:对数据库的连接,对数据库中数据的增加,删除等都以函数的形式封装在javaBean中,需要使用时引用其中的函数就可以了。另外javaBean还有一个很重要的作用,就是页面间传递参数的时候,起到一个中间载体的作用,当一个页面要向另一个页面传递数据,就可以把这么数据暂时保存在javaBean中,但是这些javaBean必须符合javaBean的规范。不仅如此,javaBean还可以指定有效期,如request,session,application等。通过采用jsp+javaBean的模式,实现了显示与控制的分离,有利于软件的开发工作,使开发过程中层次分明,避免显示控制的代码和逻辑控制的代码混合在一起,使代码容易阅读。2.JDBC数据库连接技术2.1JDBC概述JDBC是一种可用于执行SQL语句的javaAPI(ApplicationProgrammingInterface应用程序设计接口)。它由类和页面是用java语言写的。JDBC提供了数据库应用程序开发人员和数据库前端开发工具标准的应用程序设计接口,使开发人员能够编写完整的数据库应用程序在普通java语言。2.2JDBC的特点用java语言的特点的JDBC驱动程序的应用(良好的跨平台),独立的数据库管理系统,作为数据库管理系统,无论是使用Oracle或SQLServer2000或Sybase或MySQL或java代码没有任何变化,只要对相应数据库的JDBC驱动程序管理系统可更换。JDBC的特性如图所示:数据库数据库Java2EnterpriseEditionPlatformJDBC图2-1JDBC的特点2.3JDBC的结构JDBC大致分为3部分,即JDBCAPI、JDBC驱动程序管理器和JDBC驱动程序,JDBC的结构如下所示:JDBCAPIJDBCAPI驱动管理者JDBC驱动ODBC驱动ODBC数据库JDBC数据库图2-2JDBC的结构JDBCAPI由包java.sql提供,和java.sql包中提供的JDK(javaDevelopmentKi)作为基本配置,和JDBCAPI是独立于数据库的接口类。在JDBCAPI上,它只涉及数据库提供的类的接口,这些接口由提供JDBC驱动程序的软件供应商提供。一般来说,JDBC指的是JDBCAPI,它的结构层次如下图:ResultSetResultSetStatementConnectionPrepareStatementCallableStatement数据类型字符串数值与java数据图2-3JDBCAPI的结构层次3.JavaBean技术3.1JavaBean技术介绍什么是JavaBean?它是一种Java类,通过封装属性和方法成为具有独立功能、可重复使用的并且可以与其它空间通信的组件对象。JavaBean被组织成为数据包(Package)以便进行管理。JavaBean的结构必须满足一定的命名约定,这些约定由Sun和其它几个大公司指定,成为JavaBeanAPI。只要遵守JavaBeanAPI的命名约定,就可以开发出可重用且独立的Java组件,在JSP中,使用Bean标签集合,JSP开发者不需要编写任何代码就能利用Java强大的功能为页面添加动态元素。JSP强大功能的一个方面是它使用JavaBean的能力。我们可以在JavaBean中编写可重用的代码段(如数据库连接)和页面逻辑部分,也可以通过使用JavaBean减少JSP页面中脚本语言的利用率。这将使JSP页面更干净,更容易维护,更容易被非程序员接受。3.2JavaBean的种类将Beans按功能分类:(1)可见的Bean(2)不可见的Bean1.可见的Bean(VisualBean)可见的Bean顾名思义就是可以显示出来的Bean,通过属性接口接受数据并将显示数据信息,这就是可见Bean的功能。2.不可见的Bean(InvisibleBean)不可见的Bean就是显示的Bean,在程序内部起作用。不可见的Bean在JSP程序中往往用来执行对数据库的操作和封装事务逻辑等操作,这样可以很好的将业务逻辑和前台程序相分离,使系统更健壮更灵活,因此像这种Bean就是一个组件,且因为是不可见的,称之为不可见的Bean。3.3JavaBean的形式和要素JavaBean是一种组件技术,所以JavaBean将内部的动作封装起来,看不到它的运行机制,它只提供最小限度的属性接口供外壳控制应用。JavaBean为了提供组件的功能,必须满足以下3个条件。·拥有一个无参数的构造函数(NOParameter,Constructor)。·实现SerializabelInterface.·必须提供PropertyInterface属性接口。1.拥有一个无参数的构造函数(NOParameter,Constructor)JavaBean要有无参数的构造函数。无参数构造参数函数是指利用new生成新的类的时候不必提供特别的参数即可产生类。无参数构造函数是JSPContainer在自动使用JavaBean的时候参考的构造函数。即当我们想要接受表单数据的时候,将用户输入的信息存到名为FormBean的Bean里面进行处理。在这种情况下,JSPContainer将自动生成FormBean的实体。此时JSPContainer就是使用FormBean的无参数构造函数生成的实体,再根据用户输入值变换实体的。2.实现SerializableInterface在Java里面可以将JavaBean类以当前状态存入文件中,而且可以通过网络传递给别的机器。Java的这一功能被称为Serializable。但在JSP中使用到的JavaBean,不必声明Serializable也可以正常运行(这是Tomcat5.0为标准,其他版本和其他产品的JSPContainer有可能不一样),所以implementsSerializable这个关键词可以省略。当然如果像严格遵循JavaBean的规范的话,声明Serialiazzble也可以。3.必须提供PropertyInterface属性接口在JavaBean中封装了一些我们需要操作的数据。比如在做用户登录验证的时候,将用户名和密码封装在JavaBean中。如果不提供相应属性的接口,我们就无法对Bean中的数据做任何操作。所以我们在编写JavaBean的时候必须提供属性接口。JavaBean的属性接口使用以getXXX(),setXXX()开头的方法来执行其操作,对JavaBean类型的属性也可以使用isXXX()方法来获得这个属性。4.利用Java技术实现基于Web的多数据库访问4.1数据库的连接使用JBuilder2006连接SQLServer2005步骤如下:(1)下载并安装JDBC驱动由于使用Java的人越来越多,使得微软不得不提供SQLserver的jdbcdriver,SQLServer2005的jdbc驱动名为microsoft.sqlserver.jdbc.SQLServerDriver。(2)设置SQLServer2005进入SQLServer配置管理器(SQLServerConfigurationManager)在左边窗口选择“SQLServer2005网络配置”下面的分支--SQL2005的协议.在右边窗口中右键点击“TCP/IP”,选“属性”,再选择“IP地址”将表单中的“TCP端口”的值都改成1433(动态端口可以不改),然后点“确定”。.重启“SQLServer”和“SQLServerBrowser”这两项服务。图4-1SQLServer配置管理器设置图打开SQLServer外围应用配置器,选择“服务和连接的外围应用配置器”,在“远程连接”中选择“同时使用TCP/IP和namedpipes(B)”,然后点“应用”。图4-2服务和连接的外围应用配置器图(3)设置环境变量找到安装驱动后所产生的sqljdbc.jar文件,并将其路径加在环境变量classpath中.图4-3设置环境变量(4)编写连接语句首先加载SQLServer驱动程序,就是在class的forname方法中,引用sqlserver驱动的主要类com.microsoft.sqlserver.jdbc.SQLServerDriver。设置连接的url。url的标准写法为:jdbc:sqlserver://hostname:1433;DatabaseName=?;其中hostnme数据库主机名或着ip地址。数据库连接实力如下,其中localhost代表本机。Stringuser="sa";

Stringpass="000000”StringriverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";

StringdbURL="jdbc:sqlserver://localhost:1433;DatabaseName=BookStore";

ConnectiondbConn=null;

try{

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

System.out.println("ok");

dbConn=DriverManager.getConnection(dbURL,user,pass);

System.out.println("ConnectionSuccessful!");

}catch(Exceptione){

e.printStackTrace();

}4.2实现对数据库的一般查询StatementJDBC提供了statement、resultset与metadata三个类来与数据库沟通。Statement负责传送所要执行的SQL命令给数据库,resultset负责用来接受从数据库返回的查询结果,最后metadata用来描述数据。1、创建Statement对象(要想执行一个SQL查询语句,必须首先创建出Statement对象,它封装代表要执行的SQL语句)并执行SQL语句以返回一个ResultSet对象,这可以通过Connection类中的createStatement()方法来实现。Statementstmt=con.createStatement();2、执行一个SQL查询语句,以查询数据库中的数据。Statement接口提供了三种执行SQL语句的方法:executeQuery()、executeUpdate()和execute()。具体使用哪一个方法由SQL语句本身来决定。方法executeQuery用于产生单个结果集的语句,例如SELECT语句等。方法executeUpdate用于执行INSERT、UPDATE或DELETE语句以及SQLDDL(数据定义语言)语句,例如CREATETABLE和DROPTABLE。INSERT、UPDATE或DELETE语句的效果是修改表中零行或多行中的一列或多列。executeUpdate的返回值是一个整数,指示受影响的行数(即更新计数)。对于CREATETABLE或DROPTABLE等不操作行的语句,executeUpdate的返回值总为零。方法execute用于执行返回多个结果集、多个更新计数或二者组合的语句。一般不会需要该高级功能。下面给出通过Statement类中的executeQuery()方法来实现的代码段。executeQuery()方法的输入参数是一个标准的SQL查询语句,其返回值是一个ResultSet类的对象。ResultSetrs=stmt.executeQuery("select*fromDBTableName");要点:JDBC在编译时并不对将要执行的SQL查询语句作任何检查,只是将其作为一个String类对象,直到驱动程序执行SQL查询语句时才知道其是否正确。对于错误的SQL查询语句,在执行时将会产生SQLException。一个Statement对象在同一时间只能打开一个结果集,对第二个结果集的打开隐含着对第一个结果集的关闭。如果想对多个结果集同时操作,必须创建出多个Statement对象,在每个Statement对象上执行SQL查询语句以获得相应的结果集。如果不需要同时处理多个结果集,则可以在一个Statement对象上顺序执行多个SQL查询语句,对获得的结果集进行顺序操作。importjava.sql.*;publicclassResultSetTest{publicstaticvoidmain(Stringargs[]){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:studlist");Statementstmt=con.createStatement();ResultSetrs1=stmt.executeQuery("selectnamefromstudent");ResultSetrs2=stmt.executeQuery("selectagefromstudent");//此时rs1已经被关闭while(rs2.next()){System.out.println(rs2.getObject(1));}rs2.close();stmt.close();con.close();}catch(Exceptione){System.out.println(e);}}}4.3JavaBean的设计根据对系统的分析可知,任何功能的实现都要对数据库进行操作,在不同JSP页面中经常存在相同的数据库操作,一段代码要在许多地方应用,比如数据库的连接,所以在系统的开发过程中,需要找到一种储存公用代码的方法来避免重复。JavaBean是JAVA中的一种可重复使用的组件,可分为两种:一种是有用户界面的JavaBean,另一种是负责处理事务(如数据运算,操纵数据库)的JavaBean。总的说来,JSP和JavaBean搭配使用,有3个好处:使得HTML与Java程序分离,这样便于维护代码。如果把所有程序的代码都写到JSP中,会使代码复杂,难以维护。可以降低开发JSP网页人员对Java编程能力的要求。JSP侧重于生成动态网页,事务则有JavaBean来完成,这样可以充分利用JavaBean组件的可重用性特点,提高网站的开发效率。因为本系统的开发语言为JSP,所以通过使用JavaBean,将重复使用的代码封装在其中,然后放入WEB-INF/class/目录下,可以达到事半功倍的效果。下面是本系统几个重要的JavaBean。4.3.1数据库连接JavaBean本系统所使用的数据库为Access,在Windows平台下不需要加载额外的驱动包,下面编写与数据库连接的JavaBean,名为DBConnecion.java,其中对数据库进行连接的函数getConnToAccess()的关键代码如下所示:privateStringAccessDriver;//保存Access驱动程序privateStringAccessURL;//保存Access连接字符串privateStringAccessPath;//保存Access数据库的路径AccessURL=”jdbc:odbc:Driver={MicrosoftAccessDriver(*.mdb)};DBQ=”;//驱动链接AccessPath=”C:/Tomcat5.5/webapps/itmis/WEB-INF/itmis.mdb”;//数据库路径publicConnectiongetConnToAccess(){try{AccessURL=AccessURL+AccessPath;Class.forName(AccessDriver).newInstance();conn=DriverManager.getConnection(AccessURL);}catch(Exceptione){}returnconn;}该函数的具体实现过程为:首先定义号载入驱动的AccessURL串,然后定义好配置mdb文件的的AccessPath串,在方法的构造中首先将两个串合并得到数据库的路径,创建AccessDriver的实例后,在DriverManager.get方法中传入数据库路径,从而完成数据库的连接。4.3.2更新登录信息JavaBean在用户登录系统之后,通过一个Login.Java的Bean更新用户的登录信息,包括最后登录的IP地址和最后登录的时间,功能的实现其中主要是通过其中一个UpdateLogin()的函数,下面是该函数的代码,其中的参数s1、s2是最近登录后获取的IP地址和登录的时间,ID是管理员的ID编号,该段代码更新成功返回Ture,否则返回False。publicbooleanUpdateLogin(Strings1,Strings2,intID){Stringsql="";try{ConnectionConn=DBConn.getConn();//链接Statementstmt=Conn.createStatement();//声明ResultSetrs=null;sql="updateAdminset";sql+="LastLoginIP='"+s1+"',";sql+="LastLoginTime='"+s2+"',";sql+="LoginNum="+iNum+"whereAdminID="+ID;stmt.executeUpdate(sql);stmt.close();Conn.close();returntrue;}catch(SQLExceptione){System.out.print(sql);returnfalse;}}实现辅助功能JavaBean文件名为Function.java,主要包含了一些实现特殊功能比如字符转换的函数,常用的主要有转换字符编码的getStrCN函数,检测数据是否为空的Checkdate函数,和转换字符为整型的StrToInt函数,他们的实现代码如下:publicintStrToInt(Strings){try{inti=Integer.parseInt(CheckReplace(s));returni;//返回转化以后的字符串}catch(Exceptione){return0;}该段代码中的Integer.parseInt负责把用来转化字符串为整型。publicStringCheckDate(String[]s1,String[]s2){booleanOK=true;StringBuffersb=newStringBuffer();try{for(inti=0;i<s1.length;i++){if(s1[i]==null||s1[i].equals("")||s1[i].equals("")){sb.append("<li>["+s2[i]+"]不能为空!");OK=false;}}if(OK)return"Yes";elsereturnsb.toString().trim();}catch(Exceptione){return"操作失败!";}}……在JSP中输出中文时要考虑中文的乱码问题,getStrCN函数使用了String类的getBytes方法实现编码转换。publicStringgetStrCN(Strings){if(s==null)s="";try{byteabyte0[]=s.getBytes("GBK");//编码设为GBKs=newString(abyte0);}catch(Exceptione){s="";}returns;}在编码可转换时首先要判断串是否为空,若不为空则使用getByte方法将其每个字节转换为GBK编码,结果储存在byte类型的数组内,然后在通过newString方法将数组转化为字符串,仍然储存在原来的字符串变量内,这样就实现了转换。4.4JavaBean在JSP中的应用在JSP中如果要调用JavaBean,需要使用<JSP:useBean>标记,<JSP:useBean>标记是用于JavaBean对象的动作标记,当在JSP网页中使用它时,表示会产生一个JavaBean的实例。<JSP:useBean>标记有5个属性:id、scope、class、beanName和type,如下:<JSP:useBeanid=”name”scope=”page|request|session|application”typeSpec/>其中,typeSpec一共有4种形式,分别如下。·class=”classname”;·class=”classname”type=”typename”;·beanName=”beanName”type=”type

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论