版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1页本科毕业论文(毕业设计)题目:局域网聊天软件摘要在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。基于Java网络编程的强大功能,本次毕业设计使用Java编写一个聊天系统。
一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能用多线程可完成多点对多点的聊天,数据库管理系统用SQLServer2000完成并通过JDBC-ODBC桥访问数据库。本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则。系统采用C/S结构,客户端与客户端以及客户端与服务器端之间通过Socket传送消息。使用JAVA语言编写,开发工具采用Eclipse。服务器端设计与实现过程中,采用了多线程技术,可以在单个程序当中同时运行多个不同的线程,执行不同的任务。大大增强了程序对服务器资源的利用。聊天系统完成后将可进行多人对多人的聊天,对好友进行添加、删除,对新用户的注册,发送消息、接受消息等等功能。关键字:多线程;客户机/服务器;JAVA;Socket;Eclipse;TCP/IPAbstractasthenetworkbecomemoreandmoredeveloped,peoplebecomemoreandmoreleantothenetwork,andcannotleavewithoutit.Thiscausedthechatmaterialsbecomemorenumerous,astheoverseasICQsystem,theOICQsystemthatinventedbyTencentCo.,andsoon.SowecreateanetworkchatmediumjustliketheQQ.Javanetworkprogrammingbasedonthepower,theuseofJavadesignedtopreparegraduatesachatsystem.Ingeneral,themajorityofthechattoolforclientandserverprograminadditiontoserver-sidestorageofcustomerdataforthedatabase,thesystemusesaclient/serverarchitecturemodeltheadoptionofJavaprovidedSocketclassconnectclientandserverandbetweentheclientandservercommunicatewitheachother,asthechatistoprovidepoint-to-multipointandmulti-threadedJavafunctiontobecompletedbyusingmulti-threadedchatandmorepoint-to-multipoint,databasemanagementsystemwithSQLServer2000thecompletionandadoptionofJDBC-ODBCBridgeaccessthedatabase.ThesystembuiltontheJAVAplatform,thesystemdesignusingobject-orientedtechnologyandobject-orienteddesignprinciples.SystemusestheC/Sstructure,clientandclient-sideandserver-sideclientandsendmessagesthroughSocket.TheuseofJAVAlanguage,developmenttoolsusingEclipse.DesignandImplementationofserver-sideprocess,theuseofmulti-threadingtechnology,whichcanprocessinasinglerunatthesametimeanumberofdifferentthreads,theimplementationofdifferenttasks.Proceduresgreatlyenhancedtheuseofserverresources.Chatsystemwillallowpeopletocompletechattomorefriends,andthesystemcanadd,deletesomebody,candealwithnewuserregistration,sendmessages,receivemessagesandsoon.Keywords:Multithreading;Client/Server;JAVA;Socket;Eclipse;TCP/IP目录1绪论 11.1国内外聊天系统的研究现状 11.2Java语言 21.2.1Java的发展历史 21.2.2Java的特点 31.2.3Java与Internet 41.3Socket编程 41.3.1关于TCP/IP协议 41.3.2服务器和客户机 51.4本文内容安排 62需求分析 72.1可行性研究 72.1.1可行性分析 72.1.2系统功能需求 72.1.3系统性能需求 82.1.4系统运行需求 82.2数据流图 82.2.1顶层数据流图 82.2.2一层数据流图 92.2.3二层数据流图 93概要设计 113.1系统实现原理 113.2系统实现层次图: 123.3各模块详细功能 123.3.2服务器端结构 123.3.2客户端结构 144详细设计 194.1系统流程图 194.1.1系统总体流程图 194.1.2系统客户端流程图 204.2编写服务器端程序 204.2.1问题陈述 204.2.2解决方案 214.3客户端程序编写 284.3.3聊天室 38参考文献 46致谢 451绪论1.1国内外聊天系统的研究现状目前国内外做聊天系统的公司很多,产品也琳琅满目,国内有诸如腾讯QQ、新浪UC、网易泡泡等,国外有著名的MSN(新版改名为LiveMessenger)以及跨平台Gaim等。本人取最具代表性的QQ和MSN进行了一些研究,作为我开发聊天系统的准备。腾讯无疑是国内即时通讯市场的霸主,自从99年进入即时通讯领域并迅速占市场之后,其在国内用户数量始终高居榜首,即使近几年面对微软MSN的强大攻势,腾讯QQ的时常占有率依然稳步增长。腾讯的成功与其对QQ的不断创新和完善是分不开的。参考了许多网络上的资料,以及自己通过观察腾讯QQ运行时的各种细节。可以确定腾讯QQ是以多服务器提供服务、服务器总控客户端、客户端之间UDP直连通信的。并且在两个客户端之间不能建立直连的情况下,才由服务器进行中转通信。其模型如图1-1图1-1腾讯QQ服务器-客户端模型1与腾讯QQ不同,微软的MSNMessenger只使用了TCP作为传输层通信协议,所有客户端与服务器进行连接,然后通过与服务器的TCP连接进行中转通信。其模型如图1-2图1-2MSN服务器-客户端模型2腾讯使用的模型中,服务器主要处理客户端各种状态的控制,可以极大减轻服务器的处理压力,但其内部协议和实现复杂度都较高。而MSNMessenger所有数据都要经过服务器,服务器压力可想而知(难怪平时很少见到使用MSN进行语音视频聊天的)。综合腾讯QQ和微软MSNMessenger的特点,我打算在我的系统中尝试建立其类似腾讯QQ的服务器-客户端模型,但以单服务器提供服务。1.2Java语言1.2.1Java的发展历史Java的发展历史,可以追朔到1990年。当时SunMicrosystem公司为了发展消费类电子产品进行了一个名为Green的项目计划。这个计划的负责任是JamesGosling。起初他用具有面向对象特征的C++语言编写嵌入式软件,可以放在面包机或PDA(PersonalDigitalAssistant,个人数字主力)等小型电子消费这杯里,以使设备变得更为“聪明”,更具备人工只能。但后来发现C++并不适合这类任务;因为C++常会使系统失效。尤其在内存管理方面,c++采用直接地址访问方式。需要程序员记录并管理内存资源。这造成程序员编程的极大负担,并可能产生多个Bugs。面包机上的程序错误可能使面包机烧坏甚至爆炸。为了解决此类问题,Gosling决定开发一种新的语言,并取名为Oak。它采用了大部分与C++类似的语法对可能具备危险性的功能加以改进,例如将内存管理改为由语言自己进行管理,以减少程序员的负担及可能发生的错误。Oak是一种可移置的语言,它是一种平台独立的语言,能够在各种芯片上执行,可以降低设备的研发成本。1.2.2Java的特点Java是一种简单、安全、容易适用、面向对象、可移置、高性能、多线程的语言。简单性Java语言简单高校,基本Java系统(编译器和解释器)所占空间不足250KB由于Java最初是为了对家用电器进行集成控制而设计的,因而具备简单命了的特征。面向对象面向对象技术是现代工业的一次革新,提高了软件的模块化程度和重复适用率,缩短了软件开发时间,减低了卡发成本。在Java之前虽然已经有面向对象的程序设计语言问问世,但有些如c++并不是完全的面向对象,而是面向过程和面向对象的混合体。Java则是完全面向对象的程序设计语言。安全性Java是可以用在网路及分布环境下的网路程序设计语言。在网路环境下,语言的安全性变得更为重要。Java提供了许多安全机制来保证其适用上的安全性。平台独立平台独立指程序不受操作平台的限制,可以应用在各种平台上。Java源程序经过编译后生成字节码文件,而字节码与具体的计算机无关。只要计算机安装了能解释执行字节码的Java虚拟机JVM,就可以执行字节码文件,从而实现Java的平台独立性。多线程Java具备内建的多线程功能,可以将一个程序的不同程序段设置为不同的线程,使各线程并发、独立执行,提高系统的运行效率。6.网络功能Java能从全球网络资源获取所需信息,如数据文件、影响文件、声音文件等,并对所得信息进行处理,所以说Java是一种网络语言。7.执行效率Java的字节码需要经过Java虚拟机JVM解释成机器码才能执行,所以速度上较慢。但是随着JVM技术的进步,使得其执行速度直逼C与C++。1.2.3Java与InternetJava语言取得成功的领域之一就是网络(其他语言)数页代码>(Java)一条语句
TCP/IP(传输控制协议/网间协议)是internet的主要协议,定义了计算机和外设进行通信所使用的规则(应用层,传输层,网络层,链路层).大多数基于internet的应用程序被看作TCP/IP协议的上一层.如:ftp,http,smtp,pop3,telnet,nntp等。
IP地址:TCP/IP网络中的每台计算机都有唯一的地址--IP地址.在Java中,有一个用来存储internet地址的类叫InterAddress.Java提供的网络功能有三大类:URL,Socket,Datagram.1、URL是三大功能中最高级的一种,通过URLJava程序可以直接送出或读入网络上的数据.2、Socket是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道.3、Datagram是更低级的网络传输方式,它把数据的目的纪录在数据包中,然后直接放在网络上1.3Socket编程1.3.1关于TCP/IP协议TCP协议是网络通信的基石,对此,Java专门提供了Socket的类库,在其中抽象出TCP协议通信的常用方法:TCP协议与三次握手:在讲述TCP协议流程前,先来声明两个重要的概念:(1)客户端,首先发送TCP请求的是客户端,客户端一般是服务(比如数据查询服务)的请求者。(2)服务器,在接收到客户端的请求后(确保同客户端的通信信道建立)服务器会向客户端提供服务。服务器一般是服务的执行者,会向客户端返回服务执行的结果。为了实现客户端同服务器端的通信,客户端首先发送一个“SYN”数据包。如果服务器收到SYN标记,它将发回一个“SYN+ACK”数据包。接着,客户端为了表示收到了这个SYN+ACK信息,会向服务器发送一个最终确认信息(ACK包)。这种SYN,SYN+ACK,ACK的步骤被称为TCP连接建立时的“三次握手”,在这之后,连接就建立起来了,这个连接将一直保持活动状态,直到超时或者任何一方发出一个FIN(结束)信号。这种通信模式也叫客户端/服务器(C/S)模式。ACK=1ACK=1第一次握手,主机A向主机B发送连接请求第二次握手,主机B收到主机A的请求,向主机A回发一个确认,,同时向主机A发送一个连接请求第三次握手,主机A收到主机B发送的数据包在向主机B发送一个确认连接主机A主机BSYN=1,SEQ=ACK=1,SYN=1,SEQ=SYN=1,SEQ=ACK=1,SYN=1,SEQ=aaaaaaaaaa图1-3三次握手协议由此可见,通过客户端和服务器的“三次握手”,双方可以建立畅通的通信信道,在此信道上双方互相传输数据。1.3.2服务器和客户机网络最基本的目的就是让两台机器连接到一起,并相互“交谈”或者“沟通”。一旦两台机器都发现了对方,就可以展开一次令人愉快的双向对话。但它们怎样才能“发现”对方呢?这就像在游乐园里那样:一台机器不得不停留在一个地方,侦听其他机器说:“嘿,你在哪里呢?”
“停留在一个地方”的机器叫做“服务器”(Server);到处“找人”的机器则叫做“客户机”(Client)或者“客户”。它们之间的区别只有在客户机试图同服务器连接的时候才显得非常明显。一旦连通,就变成了一种双向通信,谁来扮演服务器或者客户机便显得不那么重要了。
所以服务器的主要任务是侦听建立连接的请求,这是由我们创建的特定服务器对象完成的。而客户机的任务是试着与一台服务器建立连接,这是由我们创建的特定客户机对象完成的。一旦连接建好,那么无论在服务器端还是客户机端,连接只是魔术般地变成了一个IO数据流对象。从这时开始,我们可以象读写一个普通的文件那样对待连接。所以一旦建好连接,我们只需使用自己熟悉的IO命令即可。这正是Java联网最方便的一个地方。图1-4服务器和客户机的连接1.4本文内容安排本论文内容安排如下:第二章为聊天系统的需求分析,主要介绍系统的可行性研究,需求分析流程图等。第三章为概要设计,分模块介绍系统的具体实现过程。第四章为详细设计。2需求分析2.1.1可行性分析经济可行性:由于本系统的主要背景是毕业课程设计,不注重直接的经济效益和其后的发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台能运行Java软件的电脑便可,所以不用考虑到经济问题。技术可行性:本系统的开发利用MicrosoftSQLServer2000作为本系统的数据库,它是一个支持多用户的新型数据库,适用于大中规模的数据量需求。学校校园网的建设也为新系统服务器/客户端的结构提供了硬件的支持。使用Java作为系统开发的开发环境,它提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改。运行可行性:本系统为一个小型的局域网聊天系统,所耗费的资源非常的小,现在一般的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。2.1.2系统功能需求本系统主要通过客户端,服务器端来体现聊天系统的基本功能。(1)服务器端1.处理用户注册2.处理用户登录3.处理用户发送信息,服务器监控聊天内容,服务器过滤非法内容4.处理用户得到信息5.处理用户退出 8.服务器踢人。 9.保存服务器日志。10.保存用户聊天信息。(2)客户端1.用户注册界面及结果 2.用户登录界面及结果 3.用户发送信息界面及结果 4.用户得到信息界面及结果 5.用户退出界面及结果2.1.3系统性能需求实用性:为局域网聊天提供方便,有效进行作业管理。操作简单:本系统应该适用于不同水平的使用者,包括事业单位和企业单位,同时系统不应太复杂和烦琐,因此要求系统的操作尽可能简单易行。技术先进:产品的系统设计和开发应紧跟着整个计算机发展潮流,采用当时最先进的设计思想,利用最新的开发技术和开发工具。使系统能够无论在功能设计上,还是在技术实现上,都处于同行业的领先地位。安装使用简便:服务器端的安装简洁明了,客户机无需再装任何软件就可以直接注册登陆聊天。适应性:应该能广泛应用于不同类型的企事业单位。系统采用模块化设计,用户可以根据自己的实际情况自行组合,使系统在不同的硬件环境下都能得以应用。代码可读性好:文中的代码将尽可能简洁,易懂。2.1.4系统运行需求运行环境:Windows9x、2000、xp、2003,Linux 必要环境:JDK1.5以上 硬件环境:CPU400MHz以上,内存64MB以上2.2数据流图2.2.1顶层数据流图图2-1顶层数据流图2.2.2一层数据流图.图2-2一层数据流图2.2.3二层数据流图图2-3系统二层数据流图3概要设计3.1系统实现原理聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。图3-1系统实现原理图3.2系统实现层次图:图3-2系统实现层次图3.3各模块详细功能3.3.1服务器端结构图3-3服务器端结构图ServeFrame.java为服务器端程序界面,负责为服务器的启动提供界面服务。AppServer.java为服务器端启动界面,负责监听服务器的状态,在线人数,最多在线人数,服务器名称,访问协议,服务器IP,服务器端口以及用户信息的管理,日志的保存。Connection.java是连接服务器和客户端的桥梁,主要负责将客户端的信息传送给服务器,并将服务器端的信息反馈给客户端,即所谓的“三次握手”。也是Socket编程的重要部分。WordFilter.java负责将聊天过程中不合法的话语文件等过滤掉,返回合法内容。3.3.2客户端结构图3-4客户端结构图ChatClient.java为客户端程序启动类,负责客户端的启动和退出。Login.java为客户端程序登录界面,负责用户帐号信息的验证与反馈。Register.java为客户端程序注册界面,负责用户帐号信息的注册验证与反馈。ChatRoom.java为客户端程序聊天室主界面,负责接收、发送聊天内容与服务器端的Connection.java亲密合作。Windowclose为ChatRoom.java的内部类,负责监听聊天室界面的操作,当用户退出时返回给服务器信息。Clock.java为客户端程序的一个小程序,实现的一个石英钟功能。4详细设计4.1系统流程图4.1.1系统总体流程图图4-1系统总体流程图4.1.2系统客户端流程图图4-2客户端流程图4.2编写服务器端程序4.2.1问题陈述1.接受用户注册信息并保存在一个基于文件的对象型数据库。2.能够允许注册过的用户登录聊天界面并可以聊天。3.能够接受私聊信息并发送给特定的用户。4.服务器运行在自定义的端口上1001.5.服务器监控用户列表和用户聊天信息(除私聊外)。6.服务器踢人,发送通知。7.服务器保存日志。4.2.2解决方案后台数据库设计基于服务器跨平台运行的构想,服务器的后台数据库使用了SQLServer2000。(1)login表:Login表(2)register表register表此表主要包含了用户帐户基本信息。聊天系统采用用户名作为用户帐号,并给每个用户生成一个唯一ID来做系统内部的用户标识。用户注册1.去数据库读数据首先创建一个File文件类,载入“user.txt”,再用对象输入流ObjectInputStream将用户信息导入到系统中。2.客户端请求注册客户端通过Register.java请求注册,填写注册信息,并验证密码是否符合规定,是否两次输入一致,如不一致会提示重新输入,最后将请求信息发送给服务器端。 intflag=0;//是否重名判断标志 Register_CustomerclientMessage=(Register_Customer)obj; FilefList=newFile("user.txt"); if(fList.length()!=0)//判断是否是第一个注册用户 { ObjectInputStreamobjInput=newObjectInputStream( newFileInputStream(fList)); vList=(Vector)objInput.readObject(); //判断是否有重名 for(inti=0;i<vList.size();i++){ Register_Customerreg=(Register_Customer)vList .elementAt(i); if(reg.custName.equals(clientMessage.custName)){ toClient.println("注册名重复,请另外选择"); flag=1; break; }elseif(reg.custName.equals("所有人")){ toClient.println("禁止使用此注册名,请另外选择"); flag=1; break;3.服务器端响应服务器端得到注册请求会将对象输入流转化为文件输出流,并反馈给客户端。客户端得到注册信息后会在前台填写注册信息,然后创建文件输出流,再用对象输出流包装后写入本地文件将其持久化。最后关闭对象输出流和文件输入流。//将向量中的类写回文件 FileOutputStreamfile=newFileOutputStream(fList); ObjectOutputStreamobjout=newObjectOutputStream(file); objout.writeObject(vList);4.给客户端返回信息将用户注册成功或失败的信息用打印流包装Socket以后,输出给客户端注册结果的详细信息。 //发送注册成功信息 toClient.println(clientMessage.custName+"注册成功"); Datet=newDate(); log("用户"+clientMessage.custName+"注册成功,"+"注册时间:" +t.toLocaleString()+"\n");5.关闭Socket连接当以上的程序都正常运行后,需要关闭Socket连接,否则将会浪费服务器与客户端之间的资源。用户登陆1.去数据库读用户数据打开用户数据库文件“User.txt”,将用户数据对象集载入内存,以供下面的程序使用。//读文件 FileInputStreamfile3=newFileInputStream("user.txt"); ObjectInputStreamobjInput1=newObjectInputStream(file3); vList=(Vector)objInput1.readObject();2.验证用户名是否存在在对象数据库中查找是否有与登录用户的用户名相同的记录,如果有继续验证,否则退出验证处理,返回“没有此用户”错误用户登陆程序模块如下:if(reg.custName.equals(clientMessage2.custName)){ find=1; if(!reg.custPassword.equals(clientMessage2.custPassword)){ toClient.println("密码不正确"); break; }else{ //判断是否已经登录 intlogin_flag=0; for(inta=0;a<userOnline.size();a++){ String_custName=((Customer)userOnline .elementAt(a)).custName; if(clientMessage2.custName.equals(_custName)){ login_flag=1; break; } } if(userOnline.size()>=50){ toClient.println("登录人数过多,请稍候再试"); break; 用户退出1.接收退出信息当用户退出时,客户端将会用基于Socket的对象输出流发送给服务器退出对象。2.在线列表中删除用户用户退出后应该把用户从在线列表中删除,否则用户退出用户还在在线列表中,那么该用户下次将会无法登录。3.更新在线列表用户退出后将服务器端监控界面的用户列表更新。否则用户数据将会不同步。用户退出模块程序:publicvoidserverExit(){ Exitexit=newExit(); exit=(Exit)obj; removeUser(exit); //chenmin if(sFrame.ti.equals(exit.exitname)){ sFrame.ti=""; } Datet=newDate(); log("用户"+exit.exitname+"已经退出,"+"退出时间:"+t.toLocaleString()); freshServerUserList(); }接收用户聊天信息1.接收用户聊天信息当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象。2.过滤用户聊天内容的非法信息分析聊天信息对象的聊天内容,用语言过滤类将非法字符过滤掉。语言过滤的时候将会打开“badword.txt”文件,不允许出现的关键词将会存储在文件中,关键字之间以逗号分割。当聊天内容中出现要过渡的关键字是将会被系统屏蔽,而聊天内容3.接收服务器端的系统消息当有其他用户登陆时,系统会给在线的所有用户发送用户登陆信息,并且通过服务器可以给各用户发送系统消息。系统消息发出后,如再有登录者也可以接收到系统消息。4.返回给客户端当以上信息都封装成功后,打开与客户端连接的Socket的输出流,然后再用ObjectOutputStream对象输出流包装后输出给客户端。publicvoidserverChat(){ //将接收到的对象值赋给聊天信息的序列化对象 ChatcObj=newChat(); cObj=(Chat)obj; //chenmin cObj.chatMessage=WordFilter.filter(cObj.chatMessage); chatLog(cObj); //将聊天信息的序列化对象填加到保存聊天信息的矢量中 userChat.addElement((Chat)cObj); return; }4.3客户端程序编写4.3.1程序将通过Register.java用户注册界面收集用户的用户名、密码、年龄、电子邮箱。如图4-7客户端用户注册信息模块程序: //连接到服务器 SockettoServer; toServer=newSocket(strServerIp,1001); ObjectOutputStreamstreamToServer=newObjectOutputStream(toServer.getOutputStream()); //写客户详细资料到服务器socket streamToServer.writeObject((Register_Customer)data);//读来自服务器socket的登陆状态BufferedReaderfromServer=newBufferedReader(newInputStreamReader(toServer.getInputStream()));Stringstatus=fromServer.readLine();//显示成功消息JOptionPaneop=newJOptionPane();op.showMessageDialog(null,status);if(status.equals(data.custName+"注册成功")){txtUserName.setText("");pwdUserPassword.setText("");pwdConfirmPass.setText("");txtAge.setText("");txtEmail.setText("");}4.3.2用户登录收集用户登录信息程序将通过Login.java用户登录界面收集用户的用户名、密码,如图图4-15收集用户登录信息图 //接受客户的详细资料 …………… try{ //连接到服务器 SockettoServer; toServer=newSocket(strServerIp,1001); ObjectOutputStreamstreamToServer=newObjectOutputStream(toServer.getOutputStream()); //写客户详细资料到服务器socket streamToServer.writeObject((Customer)data); //读来自服务器socket的登录状态 BufferedReaderfromServer=newBufferedReader( newInputStreamReader(toServer.getInputStream())); Stringstatus=fromServer.readLine(); if(status.equals("登录成功")){ newChatRoom((String)data.custName,strServerIp); this.dispose(); //关闭流对象 streamToServer.close(); fromServer.close(); toServer.close(); }else{ JOptionPane.showMessageDialog(null,status); streamToServer.close(); fromServer.close(); toServer.close();} }//login()结束4.3.3聊天室当用户登录成功后,用户的登录界面将会隐藏,然后创建用户聊天室窗口,在界面的标题栏将会显示当前登录用户的用户名,以防止一个机器上的用户开多个账号进入聊天室后分不清哪个窗口是哪个用户登录的,界面第一行将显示当前在线人数。位于界面正中的两个控件分别是List和TextBox用来显示当前服务器上的在线会员名单列表和公共聊天信息。位于界面下方的就是一些用于聊天的功能控件和聊天内容个性化配置控件。包括聊天对象,聊天语气,聊天内容,聊天字体,风格,大小,颜色…….用户发送信息用户需要发送信息时,在聊天内容里写下要发送的信息,然后点击发送就可以发送到其他客户端,也可以选择私聊,聊天表情,聊天信息通过服务器发送到其他客户端。如图:当多个用户同时在线时可以对某个人私聊,而第三个人的聊天界面会被屏蔽掉。//"发送"按钮 publicvoidsendMessage(){ Chatchatobj=newChat(); chatobj.chatUser=strLoginName; chatobj.chatMessage=txtMessage.getText(); chatobj.chatToUser=String.valueOf(cmbUser.getSelectedItem()); chatobj.whisper=chPrivateChat.isSelected()?true:false; chatobj.emote=emote.getSelectedItem().toString(); //向服务器发送信息 try{ SockettoServer=newSocket(strServerIp,1001); ObjectOutputStreamoutObj=newObjectOutputStream(toServer .getOutputStream()); outObj.writeObject(chatobj); txtMessage.setText("");//清空文本框 outObj.close(); toServer.close(); }catch(Exceptione){ } }//sendMessage()结束保存聊天记录当用户需要保存聊天记录时可以直接点击“保存”按钮,为了防止多用户聊天记录文件冲突问题,聊天记录将会以“用户名_message.txt”为文件名,将信息保存在当前应用程序目录下。如图保持模块程序://"保存"按钮 publicvoidsaveMessage(){ try{ FileOutputStreamfileoutput=newFileOutputStream( this.strLoginName+"_message.txt",true); Stringtemp=taUserMessage.getText(); //System.out.println(temp); fileoutput.write(temp.getBytes()); fileoutput.close(); JOptionPane.showMessageDialog(null,"聊天记录保存在"+this.strLoginName +"_message.txt"); }catch(Exceptione){ System.out.println(e); } }显示系统时间当用户需要查看当前时间时,可以直接点击“时钟”按钮,将会启动一个漂亮的电子时钟,时钟模块程序:publicvoidactionPerformed(ActionEvente){timer.restart();}publicvoidpaint(Graphicsg){ Insetsinsets=getInsets(); intL0=(insets.left)/2,T0=(insets.top)/2; inthh,mm,ss; Stringst; h=getSize().height; //绘制圆形…………………… //获取时间 Calendarnow=Calendar.getInstance(); hh=now.get(Calendar.HOUR_OF_DAY);//小时 mm=now.get(Calendar.MINUTE);//分钟 ss=now.get(Calendar.SECOND);//秒 g.setColor(Color.pink); g.fillRect(L0,T0,60,28);//填充的矩形 g.setColor(Color.blue); if(hh<10)st="0"+hh;elsest=""+hh; if(mm<10)st=st+":0"+mm;elsest=st+":"+mm; if(ss<10)st=st+":0"+ss;elsest=st+":"+ss; g.drawString(st,L0,T0+25); //计算时间和图形的关系 sdo=90-ss*6; mdo=90-mm*6; hdo=90-hh*30-mm/2; //擦除秒针 …………… //绘制秒针 g.setColor(Color.yellow); x=(int)((r-8)*Math.cos(RAD*sdo)+x0); y=(int)((r-8)*Math.sin(RAD*sdo)+y0)-2*T0; g.drawLine(x0,y0,x,(h-y)); old_X=x; old_Y=y; //绘制分针 line(g,mdo,(int)(r*0.7),Color.green); //绘制时针 line(g,hdo,(int)(r*0.5),Color.red);}//endpaint图4-22屏蔽聊天信息 FileReaderfileReader=newFileReader(files); BufferedReaderread=newBufferedReader(fileReader); while(true){ Stringline=read.readLine(); if(line==null){ break;} fileString+=(line); //fileString+=(line+"\n"); } read.close(); //System.out.println(fileString); }catch(FileNotFoundExceptione){ //TODO自动生成catch块 e.printStackTrace(); }catch(IOExceptione){ //TODO自动生成catch块 e.printStackTrace(); } returnfileString; }退出聊天系统当前用户点击“退出”按钮或者关闭窗口时,系统将会把用户退出的信息打包成对象发送给服务器,并退出客户端程序。//"退出"按钮 publicvoidexit(){ Exitexit=newExit(); exit.exitname=strLoginName; //发送退出信息 try{ SockettoServer=newSocket(strServerIp,1001); //向服务器发送信息 ObjectOutputStreamoutObj=newObjectOutputStream(toServer .getOutputStream()); outObj.writeObject(exit); outObj.close(); toServer.close(); frmChat.dispose(); //this.destroy(); }catch(Exceptione){ }privatevoidexitChatRoom(){ exit(); }出现异常信息在用户聊天时,当服务器关闭或者与服务器无法连接时,客户端将会给出“不能连接到服务器!”的信息。并在用户查看后退出客户端。致谢本文讨论了如何利用JAVA技术开发聊天室系统,基本满足了结构化、界面友好、速度快、安全性以及稳定性等特点。在当今电脑网络密布的世界当中,一个简单高效的局域网通信工具是如此的具有实用性,所以我们应当重视对它的相关研究与开发。在这次的毕业设计中,我应用了JAVA开发工具在WINDOWS平台上开发了一个基于WINDOWS平台的局域网通信工具,在这一重要的领域进行了相关的实践,不管是对我的研究能力,还是实际动手能力,还是资料查阅能力,都起了相当大的益处。所以,我决定认真总结这次毕业设计的经验,以及学习到的知识,来更加的充实自己的头脑和完善自己的知识结构。系统着重研究并实现了网络应用的部分。根据实现的情况看,具有较友好的聊天界面生成效果,以及流畅的网络通信效果。生成的聊天室可以达到基本的聊天要求,具有较高的研究价值。一个月的忙碌和工作,本次毕业设计已经接近尾声,作为一个专科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及一起工作的同学们的支持,想要完成这个设计是难以想象的。在这里再次感谢我的导师,###老师。通过毕业设计,发现自己在理论研究和实际工作能力等方面都得到了提高,受益匪浅,同时在老师的指导和课题组同学的共同帮助下,及时总结研究成果,这些无疑会对我今后的工作和学习带来很大的帮助。进入社会后,我以后会更加努力,是学校给我学习的机会,在以后的生活中继续提高自己,为自己创造更多的机会,更好的明天!目录绪论 1第1章系统开发背景及意义 21.1系统开发背景 21.2系统开发意义 2第2章网上考试系统需求分析 32.1现状分析 32.2可行性分析 42.2.1经济可行性 42.2.2技术可行性 42.3设计目标 52.4功能要求 52.5系统开发环境配置 62.6系统开发工具 62.6.1开发语言—JSP(JavaServerPage) 62.6.2数据库—MySQL5.0 7第3章网上考试系统设计 83.1数据库设计 83.1.1数据库需求分析 83.1.2数据库概念结构设计 93.1.3数据库逻辑结构设计 103.1.4数据库表设计 133.2系统结构设计 153.2.1页面模块化设计 153.2.2MVC模式设计(Jsp+Servlet+JavaBean) 16第4章网上考试系统实现 174.1系统各部分的实现方法 174.1.1创建与数据库的连接 174.1.2访问数据库的JavaBean 184.1.3用户及管理员登录模块页面 194.1.4系统主要模块页面 234.1.5学生考试模块的实现页面 254.1.6教师添加试题制作试卷模块的实现 27第5章系统测试 305.1什么是软件测试 305.2软件测试的目标与方法 305.3系统的不足和展望 30结束语 32致谢 33参考文献 34绪论考试是检验教学效果的重要手段,也是促进学生学习的重要手段,是教学过程中的一个重要环节。学生考试成绩的优劣,不但反映其对教学内容和应掌握知识的分析、理解、吸收、运用的能力,更反映教师对教学内容的把握和熟练程度。传统的学校教学中,进行一场考试,要求老师编写试卷、印试卷、安排考试、监考、收集试卷、评改试卷、讲评试卷和分析试卷,这是一个繁杂的过程,需要大量人力、物力与时间的投入,已经越来越不适应学校信息化建设与现代教学的需要。尤其在远程网络教学中,学生分布广,不易统一集中安排考试,给校方和学生带来了众多的不便。而网上考试系统不仅减轻了在组织考试、评卷、成绩统计等方面所花费的人力和物力,并且突破了时间与空间的限制,不仅节省了资源,而且提高了评分的客观性、公正性和准确度,大大改善了考试工作的效率。加上数据库技术的利用,大大简化了传统考试的过程,因此在线考试是电子化教学的不可缺少的辅助手段。在当今信息时代,计算机技术与网络技术越来越广地应用于各个领域,改变着人们的学习、工作、生活乃至思维方式,也引起了教育领域的重大变革。将计算机与网络技术应用于现代高等教育中,是现代高等教育发展的需要,也是改革教育模式,提高学校教学效果和教学效率、提高科研和管理水平的必要手段。第1章系统开发背景及意义1.1系统开发背景随着计算机技术、网络技术迅速发展和高校校园网功能的日益完善,很多高校建立了基于校园网的网络信息管理平台,为提高教学管理水平提供了先进的管理手段。目前,基于网络的在线考试系统己经成为现代考试方式的有力补充和发展。相对于传统的笔试,网络在线考试不仅减轻了在组织考试、评卷、成绩统计等方面所花费的人力和物力,并且突破了时间与空间的限制,不仅节省了资源,而且提高了评分的客观性、公正性和准确度,大大改善了考试工作的效率。1.2系统开发意义很多学校学生的期末考试仍采用任课教师(个人或集体)考前出题的方式。为解决学生压题,考前漏题,补(缓)考试题与正式考试试题题量及难度差异问题,教务管理部门通常要求教师同时出多套试卷,其题量与难度要求相同,并且要同时给出答案和评分标准。这样做虽能解决一些问题,但给教师增加了很大的工作负担,若上下届学生的同一门课程由同一教师承担,则难免几届学生用相同几套试卷;若由不同教师任课出题,则上下届学生的成绩之间又不具有可比性。若建立题库,每次考试前由题库中题目随机生成试卷,则可较好地解决考教分离的问题,也可将广大教师从每学期末繁重的命题工作中解放出来。近年来,部分学校陆续开发了一些基于微机的题库系统,并作为成果向其它学校推广,但这些题库一般都是结合本校具体情况,针对单一课程的小型题库,甚至某些学校购得的题库系统中的题目本身是不可维护的,即使题目已不适合自己的学生考试使用,也无法更新题库中的题目。为解决题库系统中存在的这些问题,作者经过研究几种不同的网上系统,经充分的考虑,最后给出了一个较为理想的题库系统解决方案,并结合当前比较使用的B/S结构开发一个功能完备的网上考试系统。
第2章网上考试系统需求分析2.1现状分析传统的考试方法要求组织者提前命题试卷,然后约定一个统一时间,让所有考生到考场里进行考试。这种模式如图2-1所示: 编辑考题印刷大量试卷安排考场,时间,监考人员学生集体考试 阅卷,统计成绩图2-1传统考试模式这种模式存在有较多的问题:命题:由于考试要求统一进行,所有考生都考同样的一份试卷,所以试卷的命题工作便一定得非常谨慎小心,试题太难或太容易,都达不到考试目的,尤其是对于一个大规模的考试,(比如计算机等级考试,英语四,六级考试等),如何正确把握试卷的难度,一直都是让命题教师最为头痛的问题之一。而如何不在考试之前使命好的试题泄漏出去,也是组织者费尽心思。试卷印刷:对于大规模的考试,试卷印刷费工费时,成本高,对纸张资源也是一种浪费。对于涉及地域范围较广的考试(如英语四,六级考试),还要考虑试卷大的长途运送费用。在考试的印刷和运输过程中同样有试题泄漏出去的问题,任何一个环节出了问题,都可能使前面有的工作付诸流水。考场的安排:监考人员的培训与管理。对于大规模的考试,尤其是到了考试密集期(如期末,期中)。诸多学科的考试都要陆续开始的时候,对于教室资源和教师数量相对紧张的学校,如何安排考场,调配监考人员,是一件相对繁琐而又复杂的事情。如果考试再涉及到不同地域之间的同步,如英语四,六级的考试,还要考虑更多的问题。进行考试:由于同一次考试的试卷相同,要杜绝考生作弊是一个普遍的难题,因此,历届组织考试的人动了很多脑筋,如分AB卷,加强监考,加重对作弊者的惩罚程度等,但这些都没能从根本上杜绝作弊。不同地域监考的严格程度,考试时问控制的严格程度,也很难达到统一。过多人为因素的加入,也使得考试的公正性下降。判卷:考试结束后,采用人工判卷比较容易出错,并可能出现人为造成的不公正现象。2.2可行性分析可行性分析也称为可行性研究,即是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、管理的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。该系统的可行性分析包括以下几个方面的内容。2.2.1经济可行性主要是对项目的经济效益进行评价,利用计算机来实现网上考试以成为适应当今教学管理的方式。开发一套能满足网上考试系统的软件是十分必要的,实现试卷管理和试卷生成自动化,在减少由于认为失误而早成损失的同时,也可以使教师减少工作量。本系统在经济上是可以接受的,并且本系统实施后可以显著提高考试效率,有助于学院完全实现网络化管理。所以本系统在经济上是可行的。2.2.2技术可行性技术上的可行性分析主要分析技术条件是否能顺利完成开发工作,硬、软件能否满足开发者的需要等。软件方面,网络化考试需要的各种软件环境都已具备,数据库服务器方面则有MySQL,均能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能。其灵活性、安全性和易用性为数据库编程提供了良好的条件。因此,系统的软件开发平台已成熟可行。 硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。2.3设计目标在线考试系统的总体目标:在线考试系统可以帮助教师完成一个考试从题目设计,考试安排,考试实施,考卷批改到分数计算总结的所有工作。所有的考试数据和其它数据库需要一种主流的方式进行存储和管理,例如使用数据库技术。考试数据的存放和处理必须对考试保密,需要一定的安全性保障。题目最好有一定的稳定性和随机性。稳定性可以保证每一次考试对每一个考生是公平的,随机性可以避免作弊的发生。考试的部分客观题在考生考完之后系统就能自动评分,并保存考生的主观题答案。2.4功能要求系统应该具备的基本功能:用户类别:登录系统的身份定为三种,一是管理员,二是普通老师,四是学生,只有被授权的用户才可以使用本系统的资源。权限管理:系统需要经过有效的身份验证可以登录。用户的身份不同,使用的系统资源也不同。考生只可以参加在线考试;普通教师可以在线制作试卷,控制考试、成绩查询、添加试题、阅卷等。管理员可添加系系部、教师、专业、科目信息、查询修改管理员信息及审批试卷、查询考生成绩。在线考试功能:考生输入学号密码登陆系统后,选择对应的试卷可进行考试。答题中,有倒计时的功能,考试结束时还没提交就自动交卷,系统将自动对客观题进行评分。在线制作试卷:教师、管理员可在线制作试卷,可设定试题的类型、分值,但教师制作试卷后必须要由管理员审核才能考试。控制考试功能:可设定每次的考试时间。考生管理功能:可注册新增学生用户,同时查看考生及班级考生的信息。考生成绩查询功能:提供考生各科目成绩的详细查询。试卷审批功能:只有管理员有此权限。教师制作试卷完毕,只有经过管理员审批后才能发布,发布后学生才能开考。除了实现上述功能以外,在线考试系统还应该具有友好、简洁的界面,安全性要高,稳定性要强。2.5系统开发环境配置选择微软平台作为主导,一方面考虑目前微软的飞速发展,越来越多的企业在规划内部网络时,将微软平台作为首选方案;令一方面从技术角度来讲,微软平台上的应用无论是在开发上,还是在软件的部署上都是非常容易,而且性能优越。具体如下:开发工具:MyEclipse8.0辅助开发工具:Dreamweaver8数据库:MySQL5.0服务器:ApacheTomcat6.0运行环境:安装JDK1.6支持Java运行。技术:前台网页的设计采用JSP技术制作。负责响应用户对业务逻辑的请求并根据用户的请求行为,决定将哪个JSP页面发送给客户由servlet处理,JavaBean则负责数据的处理。2.6系统开发工具本系统是基于JSP+MySQL5.0数据库技术实现的,现对JSP技术和SQLServer2005数据库作简要的介绍。2.6.1开发语言—JSP(JavaServerPage)JSP页面由HTML代码和嵌入其中的Java代码所组成。JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的等特点。JSP的技术的优势:一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之外,代码不需要做任何更改。系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。JSP技术是用Java语言作为脚本语言的。Java语言是成熟的、强大的、易扩充的编程语言。高效性与安全性。JSP在执行前先被编译成字节码,字节码由Java虚拟机解释执行,比源码解释效率高。可维护性。由于JSP技术是一种开放的、跨平台的结构,因此Web服务器、平台及其他组件能很容易升级或切换,且不会影响JSP基本的应用程序。多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。2.6.2数据库—MySQL5.0MySQL是一个精巧的SQL数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用。由于它的强大功能、灵活性、丰富的应用编程接口(API)以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业软件用户的青睐,特别是与Apache和PHP/PERL结合,为建立基于数据库的动态网站提供了强大动力。SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用SQL语言为一个网站检索产品信息及存储顾客信息,同时MySQL也足够快和灵活以允许你存储记录文件和图像。
第3章网上考试系统设计3.1数据库设计在对网上考试系统数据库部分进行设计的过程中,通过对系统功能进行需求分析得到系统的基本信息表,绘制系统业务流程图和系统数据流程图,分析得到数据字典;在概率结构设计阶段通过对需求阶段得到的用户需求抽象得到数据库关系模型的E-R图;在逻辑结构设计阶段得到数据库的关系模式并绘制信息表。详细设计过程如下介绍。3.1.1数据库需求分析需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。系统基本信息综合以上分析,要实现上面的所有功能模块,数据库共要设计十个表,它们分别是:科目表、班级表、系别表、专业表、试卷信息表、学生表、学生成绩表、学生答题试卷信息表、教师表、题库表。系统层次图根据所要实现的功能和用户权限的设置。系统总体的层次图如下图3-1所示:图3-1系统层次图系统数据流程图系统数据流程图如下图3-2所示:图3-2数据流程图3.1.2数据库概念结构设计概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程,它是整个数据库设计的关键,包括概念模型设计和新系统流程两个阶段。在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,才能更好地、更准确地用某一DBMS实现这些需求。概念数据模型独立于具体的数据处理的细节和数据库管理系统。这次设计仍采用传统的实体联系图作为概念设计的工具。再进行优化后,尽量满足结构清晰、关联简洁、实体个数适中、属性分配合理、没有低级冗余。系统E-R图如下图3-3所示:图3-3系统E-R图3.1.3数据库逻辑结构设计对于关系型数据库,数据库的概念结构设计完毕后,要把E-R图描述的概念数据模型转换为等价的关系模式极其约束。逻辑设计的基本工作主要包括如下的3个步骤。关系模式设计该设计以概念结构设计中的E-R图为主要依据,这几出相关的整体逻辑结构。该系统的关系模式如下图3-4所示:图3-4概念关系模型图完整性设计完整性要求用于描述各种信息之间的制约关系,以及关联关系,各个数据项的取值范围以及各个数据项是否可以取值。根据实际需要,采取一定的手段来满足用户的完整性需求。域完整性约束要求属性值必须在域中。实体完整性约束要求主键必须唯一且不能为空。如用户信息表中的用户名设置为主键,并且要求唯一且不能为空。模式优化本次采用3NF为规范准则来分解关系。将一个关系分解为两个或者多个关系,以满足规范,从而避免产生插入异常、删除异常、更新异常。3.1.4数据库表设计学生信息表如图3-5所示图3-5学生信息表教师信息表如图3-6所示图3-6教师信息表题库信息表如图3-7所示图3-7题库信息表
试卷信息表如图3-8所示图3-8试卷信息表学生答案表如图3-9所示图3-9学生答案表学生成绩表如图3-10所示图3-10学生成绩表
系部信息表如图3-11所示图3-11系部信息表专业信息表如图3-12所示图3-12专业信息表科目信息表如表3-13所示表3-13科目信息表班级信息表如图3-14所示图3-14班级信息表3.2系统结构设计3.2.1页面模块化设计模块化设计的要求不仅是为了提高代码的重用性,更重要的是为了提高代码的可维护性和稳定性。一个模块化程度高、结构清晰的应用程序,在程序维护时的便利性是可想而知的。最初设计方案时,就要规划好哪些模块是可以提出来多次使用,哪些模块虽只使用一次,但提出来之后能使代码更清晰等。网上考试系统是一个典型的数据库开发应用程序,本系统主要用管理员、教师和学生三大模块组成,各模块功能如下:管理员模块:该模块主要是对系部、专业、班级、课程进行管理,添加修改学生、教师、信息,添加试题、试卷和审核教师制作的试卷等。教师模块:该模块主要是教师通过登录该系统能够修改个人信息,添加试题,在线制作试卷,阅卷等。学生模块:该模块主要是学生通过登录该系统能够修改个人信息(只能修改密码),进行考试等。3.2.2MVC模式设计(Jsp+Servlet+JavaBean)MVC(ModelViewController)是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。视图是用户看到并与之交互的界面。如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。JSP页面处于表现层,也就是视力(View即V)的角色。模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。JavaBean则负责数据的处理,也就是模型(Model即M)的角色。控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。Servlet用来处理请求的事务,充当控制器(Controller即C)的角色,Servlet负责响应用户对业务逻辑的请求并根据用户的请求行为,决定将哪个JSP页面发送给客户。初始的请求由Servlet来处理,Servlet调用商业逻辑和数据处理代码,并创建Bean来表示相应的结果(模型)。然后Servlet确定哪个页面适合于表达这些特定的结果,并将请求转发到相应的页面(JSP页面即为视图),由Servlet确定哪个业务逻辑适用,应该用哪个JSP页面相应结果(Servlet就是控制器)。
第4章网上考试系统实现4.1系统各部分的实现方法从系统功能模块划分中可以看出,系统总体上有两个功能模块组成。各模块虽然是独立的,但又统一于同一数据库中,便于管理员管理维护数据库,同时也便于教师和学生的操作。在介绍系统各模块的实现方法之前,首先介绍系统与数据库的连接方式——使用JavaBean连接连接在服务器tomcat里配置的连接池。再介绍系统主要部分的实现方法。4.1.1创建与数据库的连接配置数据源创建连接池,再通过JavaBean连接到数据源再对数据库进行操作。连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。连接池可以极大的改善用户的Java应用程序的性能,同时减少全部资源的使用。连接池主要的优点有:减少连接创建时间、简化的编程模式、受控的资源使用。连接池能够使性能最大化,同时还能将资源利用控制在一定的水平之下,不过如果超过该水平,应用程序将崩溃而不仅仅是变慢。配置连接池:1.首先要将mysql的驱动包放在tomcat/lib目录下2.在应用服务器Tomcat里的/conf下找到一个context.xml文件,在里面添加的内容如下:<Resourcename="jdbc/examolds" auth="Container" type="javax.sql.DataSource" driverClassName="org.gjt.mm.mysql.Driver" url="jdbc:mysql:///examol" username="root" password="1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年智能制造生产线整体采购合同
- 2024年新型城镇化建设项目土方工程承包合同3篇
- 2024年液态氨配送合同3篇
- 2024年度新材料研发供应链代理采购合同3篇
- 2024版深圳教育培训服务合同2篇
- 2024年文化产业发展媒体合作合同范本3篇
- 2024版工程监理合同标的及属性
- 2024年农民专业合作社股权出售与农业可持续发展合作合同3篇
- 2024年温泉游泳馆租赁合同2篇
- 2024年消防水带紧急供应系统安装合同3篇
- 智能电能表应用配套安装投标方案(技术方案)
- 《科研诚信与学术规范》学习通超星期末考试答案章节答案2024年
- 2024年平面设计师技能及理论知识考试题库(附含答案)
- TSHJX 061-2024 上海市域铁路工程施工监测技术规范
- 2024年井下采煤工技能竞赛理论考试题库(含答案)
- 天津市河北区2023-2024学年高一上学期1月期末化学试题(原卷版)
- 国家开放大学2024年(202401-202407)《2667绩效与薪酬实务》期末考试真题
- 医院事业单位招录100题真题真解(结构化面试)
- 培训机构学校:教师管理手册
- 39 《出师表》对比阅读-2024-2025中考语文文言文阅读专项训练(含答案)
- YB-T+4190-2018工程用机编钢丝网及组合体
评论
0/150
提交评论