用JDBC开发基于客户/服务器模式的Internet/Intranet数

1、概述 随着Internet/Intranet的普及以及WEB技术的发展,人们对信息的需求越来越强烈,数据库与Internet/Intranet应用软件的集成已经成为了非常迫切的问题。互联网上数据库产品的复杂,有限的带宽,以及互联网上软件产品的跨平台性,将是我们遇到的最大困难。本文通过作者的工作实践,介绍了JDBC规范及应用JAVA的SOCKET机制,以及JAVA的客户/服务器计算模式,最后根据以上的原理,实现了一个简单的基于客户/服务器的JAVA查询远端服务器上的数据库的小例子。 2、问题提出 当我从事Internet/Intranet软件开发时,为了达到很好的兼容性,安全性以及跨平台性,不得不采用JAVA编程,但是JAVA数据库方面的不足,确实众所周知。虽然JDBC技术在一段时间以前就已经发布了,但是对于大多数数据库产品而言,却要为其编制特殊的驱动。虽然有一些数据库厂商用JAVA编写了自己产品的驱动(如IBM的DB2数据库软件),但是这类产品的价格和复杂的使用方法却是使一些中小企业和Internet爱好者们望而却步,另外,在有限的带宽下如何减少数据的流量等一系列问题,将是解决这类问题的最大的绊脚石。因此,我们必须解决这类问题,并且产生一个跨平台性的,能挂接多种数据库的,基于客户/服务器的软件解决方案。 3、分析问题   以上的问题我们可以用JAVA的Socket机制实现客户/服务器,然后在服务器端用JDBC来完成客户端所提交的查询要求,因此,将问题分为如下两个方面。 (1)JAVA中的Socket机制   在各种网络的客户/服务器应用中,客户与服务器之间的通讯机制是多种多样的,但大多数都采用的是基于TCP/IP的Socket机制来完成的,Socket是两个程序间用来进行双向传输的网络通讯端点,在服务器程序方面通过IP在网络中标识自己,然后,通过一个客户端程序知道的端口号来提供服务,而客户端在网络中通过服务器的IP来找到服务器,通过连接他的端口号来获得服务器的某项服务。当然,计算机也拥有一些内置的用来提供其他服务的端口和空闲的端口,这样这些空闲端口就可供程序员来使用。由于Socket通讯机制是一种较为底层的通讯机制,所以通过Socket的数据表示是一种原始的字节流信息。那么客户端 服务器的程序就应该按照程序员制定的一种约定来进行数据的格式化处理后才能进行具体的应用,这种约定实际上就是一种协议。 Socket通讯机制提供了两种通讯方式,一种是有连接的,另一种是无连接的。有连接的方式是指程序在开始时,双方就建立了连接,形成了一条通讯链路,这条通讯链路一直存在,直到任意一方终止连接为止。在连接的同时,双方就通过这个通讯链路进行I/O操作,这种方式是可靠的而且是全双工的。无连接的方式是指提供不可靠的连接,数据传送时是以数据报的方式发送,类似与我们的寄信。本文采用的为有连接方式。 JAVA在现实中有两个类用于Socket连接,一个是ServerSocket类,应用于服务器方;一个是Socket,应用于客户方。在服务器端用如下语句对端口进行初始化及监听: try{ ServerSocket server=new ServerSocket(9001);//监听9001端口,此端口不能与系统的 //端口号冲突 Socket socket=server.accept();//阻塞进程,一旦有客户连接初始化socket类 DataInputStream in=new DataInputStream(socket.getInputStream()); //建立输入流 PrintStream out=new PrintStream(socket.getOutputStream()); //建立输出流 }catch(IOException e){} 在客户端用如下语句即可与服务器连接: try{ socket=new Socket(hostname,9001);//连接以hostname的服务器,端口号为9001 //这里的hostname为服务器的IP地址 in=new DataInputStream(socket.getInputStream());//初始化输入流 out=new PrintStream(socket.getOutputStream());//定义输出流 }catch(IOException e){} 通过以上语句后,在客户与服务器之间就建立了in和out这两个输入和输出流,那么就可以进行通信了。最后,为了在服务器端能响应多个客户端的请求,在服务器的输入和输出流的处理中应用了多线程,是每一个线程对应一个客户端的服务,由于JAVA的内存管理是一种摾
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值