Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs"; http://www.paper51.com
//pubs 为你的数据库的 内容来自论文无忧网 www.paper51.com String user="sa"; copyright paper51.com
String password="admin"; 内容来自论文无忧网 www.paper51.com Connection conn= DriverManager.getConnection(url,user,password); copyright paper51.com
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, http://www.paper51.com ResultSet.CONCUR_UPDATABLE);String sql="select job_id,job_desc from jobs";ResultSet rs=stmt.executeQuery(sql); paper51.com
到此数据库配置完成。 paper51.com
第7章 系统重要部分技术实现 http://www.paper51.com 7.1 包含网络白板的技术实现 paper51.com 7.1.1 工作原理 http://www.paper51.com 电子白板有两种实现模型,一种是无白板服务器,因此仅支持两个用户直接连结;另一种是有白板服务器,原则上不限制同时上线人数和交谈室个数,具体实现上可视服务器性能和需要而定。本文要介绍的属于后者。 paper51.com 当用户需用白板与他人交流时,需要先用浏览器连到Applet所在主页,Applet运行后会连接到该白板服务器,和服务器建立TCP连接。每个用户可以在自己的白板上(嵌在Applet画面中)绘制图形和输入文字,Applet会将这些信息通过已建立的网络连接发往白板服务器,并不断侦听、接收来自白板服务器的图形和文字信息,将其再现在用户的白板中。白板服务器的作用是不断侦听、接收来自各Applet的信息,并将其转发给其他用户。 内容来自论文无忧网 www.paper51.com 由于浏览器对Java Applet的限制,使得Applet只能访问发送该Applet的宿主主机,因此只能在该Applet所在主机上运行白板服务器,使得Applet能建立和远程白板服务器的联系。 http://www.paper51.com 7.1.2 功能设计 paper51.com 一个实用的电子白板系统应该具备以下基本功能: copyright paper51.com 用户在浏览到白板主页时,需登录后才能进行交流。这将提供交流时用的名字,必要时还可做权限检查。 http://www.paper51.com 用户能够根据交谈室的交谈主题选择参加和退出现有的交谈室,并且能建立新的交谈室。可以根据该电子白板系统的应用领域和需要附加一些权限设置。 paper51.com 用户只能和在同一交谈室中的用户交流。一个交谈室的信息对于别的交谈室是不可见的。 copyright paper51.com 白板应至少具有一些如更换画笔颜色、清除画板(仅影响自己的白板)等方便用户的功能。 paper51.com 白板应具有一个操作提示和操作信息反馈栏,对用户显示一些操作提示和操作结果信息,这样可以方便用户使用。 http://www.paper51.com 用户应能暂停和恢复自己的白板工作。 为了增加白板的实用价值,可以考虑增加如与windows画笔工具类似的画正方形、圆形等类似功能。本例作为电子白板基本模型的建立,故没有加入这些功能。实际上,只要了解了下面要介绍的白板通讯协议集的设计原则,增加以上功能是非常容易的。 paper51.com 7.1.3 通讯协议集的制定 http://www.paper51.com 由于JAVA内置的标准基础通讯协议是TCP/IP,所以我们只需在其基础上建立电子白板的应用层协议集。协议集的模型将采用服务器/客户机的请求/应答模式。可以根据需要实现的白板功能制定通讯协议集,协议集中包括登录、图形传输(分服务器发出和客户机发出两部分)、文字传输(分服务器发出和客户机发出两部分)、服务器要求刷新交谈室及成员名单、客户机要求刷新交谈室及成员名单、加入指定交谈室、退出交谈室、建立新交谈室、暂停/恢复交流等部分。 http://www.paper51.com 由于已经依靠TCP/IP协议保证数据传输的正确性,所以在这个电子白板的通讯协议集的设计中应在保证功能的前提下尽量简洁,来提高带宽利用率。白板通讯协议集的细节可参考如下: paper51.com 注意: 内容来自www.paper51.com (S)表示该部分由服务器发出,客户机接收; copyright paper51.com (C)表示该部分由客户机发出,服务器接收; 内容来自论文无忧网 www.paper51.com
数据格式表示:引号之间表示字符串,(short)表示短整形数(2字节),(int)表示标准整形数(4字节)。 内容来自论文无忧网 www.paper51.com
登录(C):"log"→用户名字符串。 paper51.com 图形传输(客户机发出)(C):"draw"→(int)颜色值→(short)直线起点横坐标→(short)直线起点纵坐标→(short)直线终点横坐标→(short)直线终点纵坐标。 内容来自论文无忧网 www.paper51.com
图形传输(服务器发出)(S):"draw"→(int)颜色值→(short)直线起点横坐标→(short)直线起点纵坐标→(short)直线终点横坐标→(short)直线终点纵坐标。 paper51.com
文字传输(客户机发出)(C):"text"→用户在白板对话框中输入的文字字符串。 内容来自论文无忧网 www.paper51.com 文字传输(服务器发出)(S):"text"→文字输入者姓名字符串→该用户输入的文字字符串。 内容来自论文无忧网 www.paper51.com 服务器要求刷新交谈室及成员名单(S):"refresh"→交谈室1主题字符串→交谈室1中的用户1姓名字符串→交谈室1中的用户2姓名字符串→... →"complete"→交谈室2主题字符串→交谈室2中的用户1姓名字符串→交谈室2中的用户2姓名字符串→...→"complete"→...→最后一个交谈室主题字符串→最后一个交谈室中的用户1姓名字符串→最后一个交谈室中的用户2姓名字符串→...→"complete"→"ok"。 copyright paper51.com 客户机要求刷新交谈室及成员名单(C):"refresh"。(服务器收到此命令,会执行前面的服务器要求刷新交谈室及成员名单子协议,以响应客户机请求) copyright paper51.com
加入指定交谈室(C):"join"→申请加入的交谈室主题字符串。 http://www.paper51.com 退出交谈室(C):"quit"。 paper51.com 建立新交谈室(C):"new"→申请建立的新交谈室主题字符串。(服务器收到此命令,会自动在该用户原来所在的交谈室中注销,并使该用户成为新交谈室的一员) paper51.com
暂停交流(C):"pause"。 内容来自论文无忧网 www.paper51.com 恢复交流(C):"continue"。 以上为本电子白板软件所遵循的通讯协议集。这个协议集的可扩充性很强,可以随时按增加的功能扩充协议集。例如需要传送圆形图案,则可将如下协议加到协议集中:"circle"→(int)颜色值→(short)圆心横坐标→(short)圆心纵坐标→(short)圆半径。 http://www.paper51.com 7.1.4 编程实现 paper51.com 程序设计分服务器JAVA Application和客户端Java Applet两部分进行。 paper51.com 编程中需要注意以下几点: 内容来自www.paper51.com
服务器程序不要采用客户端接入时建立用户线程,退出交谈室时销毁线程的工作流程。因为有些操作系统的线程操作机制不够健全,在线程销毁时线程所占资源不能被完全释放,以致于在白板服务器运行的过程中将逐渐消耗掉系统资源。所以应在服务器初始化时按照最大允许同时上线的用户数建立所有用户服务线程。这些线程将等待客户端接入,当用户退出交谈室时线程并不销毁,而是清除用户数据,重新进入等待接入状态,准备为下一个用户服务。这样就保证了白板服务器可以长期可靠运行。 内容来自论文无忧网 www.paper51.com 当用户在白板上连续绘画时可能产生大量的图形数据,客户端Applet若在白板的AWT事件处理程序中完成将这些数据传输给服务器的任务,则很有可能由于网络I/O的瓶颈作用,使得AWT事件处理线程受阻,从而影响白板Applet、浏览器、其他正在运行的应用软件的界面相应性。解决的办法就是使Applet再建立一个后台绘图数据传输线程,白板的AWT事件处理程序将用户的绘图数据通过管道流(PipedStream)传输给这个线程后就返回,把网络传输的任务留给这个线程进行。 paper51.com 在服务器和客户端Applet中,协议集每一个子协议的实现都要分别建立一个同步块(synchronize),该子协议的全部操作都要在这个同步块内完成,以限制自由访问网络接插建立的输入流和输出流。使得当一个线程执行一个子协议时能够独占这些网络资源,而使别的线程不能访问这些资源,以保证线程能够完整正确地执行子协议。但是由于同步操作会降低线程调度和执行效率,所以要在确保子协议完整执行的前提下尽量缩小同步代码块的范围。 内容来自www.paper51.com 由于协议集中的数据类型既有字符串又有整形数,因此在程序中选用 DataInputStream和DataOutputStream作为数据输入流和输出流。此外,由于UTF格式的文本支持中文字符集,且在字符串中已包含长度信息,可以方便数据读取,故在本程序的网络通信中的字符串全部采用UTF格式。设计自己的白板程序时,可以根据需要换用其他文本格式和编码规则,但一定要保证输入流和输出流采用的是同一种格式和编码。 paper51.com |