2015届本科毕业论文(设计)
基于JAVA语言的网络聊天软件
代码:https://www.wendangku.net/doc/523446421.html,/detail/syqwe/8890181姓名:XXXX
系别:计算机与信息技术学院
专业:计算机科学与技术
学号:XXXXXXXX
指导教师:XXXXXX
2015年05月08日
目录
摘要............................................................................... II Abstract ........................................................................... II 1 软件介绍.. (3)
1.1 背景 (3)
1.2 目的 (3)
2 开发技术 (3)
2.1 界面层技术 (3)
2.2 通信层技术 (3)
2.3 数据层技术 (3)
3 开发环境 (4)
3.1 硬件环境 (4)
3.2 软件环境 (4)
4 需求分析 (4)
4.1 客户端需求分析 (4)
4.2 服务器需求分析 (4)
4.3 数据层需求分析 (4)
5 系统架构 (5)
6 设计实现 (5)
6.1 消息封装类Message (5)
6.2 服务器 (6)
6.2.1 主服务器Server (6)
6.2.2 虚拟服务器VirtualServer (6)
6.2.3 登录验证Logon (7)
6.2.4 Hibernate配置文件 (8)
6.2.5 Hibernate会话工厂 (8)
6.2.6数据操作类 UserDao (9)
6.2.7 数据操作类 CrowdDao (10)
6.2.8 表结构设计 (10)
6.2.9 用户类User (11)
6.2.10 群组类Crowd (11)
6.3 客户端 (11)
6.3.1 Client (11)
6.3.2 登录界面Logon (13)
6.3.3 好友界面Friend (14)
6.3.4 聊天界面Chart (15)
6.3.5 游戏界面Game (16)
6.3.6 游戏规则 (17)
6.3.7 算法思路 (17)
7测试说明 (18)
总结感想 (19)
参考文献 (20)
致谢 (20)
基于JA V A语言的网络聊天软件
摘要
本聊天软件是使用Java编程语言来完成开发的。在软件的开发过程中,使用Socket来进行网络通信,使用Swing来绘制界面,使用开源的对象关系映射框架Hibernate来进行数据访问。其中Hibernate能够使程序员以面向对象的思维来处理关系型数据。本聊天软件不仅支持聊天,还加入了“连连看”游戏。该游戏让人们之间的交流得到延伸,让彼此之间的关系更进一步。本聊天软件主要有以下三个功能:一、登录验证;二、聊天通信;三、游戏互动。
关键词
聊天;Java;Swing;套接字;Hibernate
NetworkChatSoftwareBasedonJA V ALanguage
Abstract
ThischatsoftwarewasdevelopedbyusingtheJavaprogramminglanguagetocomplete. Intheprocessofsoftwaredevelopment,Socket is used for network communication, Swing is used to draw the interface, object relational mapping framework Hibernate open source is used for data access.Hibernateallowsprogrammerstodealwithrelationaldatainobject-orientedthinking. Thischatsoftwarenotonlysupportchatatthesametime, alsojoinedthe"LinkUpFree" game. Thegameallowscommunicationbetweenpeoplehasbeenextended, sothattherelationshipbetweeneachothermore.Thissoftwaremainlyhasthefollowingthreefunctions: First, landingvalidation; Second, chatcommunications; Three, theinteractionofthegame.
Keywords
Chat; Java; Socket; Swing; Hibernate
1软件介绍
1.1背景
在当今世界,人们的追求早已不局限于物质生活,而更多的是渴望在精神领域上得到满足,这突出表现在我们的人际交往上。人们渴望与远在天涯又或是近在咫尺的亲朋好友无拘无束地沟通,而此时此刻一款即时通讯工具对于我们来说,它的重要性不言而喻!
在计算机网络愈来愈普及的今天,人们对于网络的依赖也愈来愈大,类似于QQ、MSN等聊天工具早已融入到我们日常生活中,为我们的生活带来了欢乐和便利。因此,我力图开发一个在线的即时聊天软件以满足我们在日常生活中交流的需要,为我们的生活增光涂色。
1.2目的
本聊天软件以通信为其核心,同时融入了娱乐的元素,一款十分经典的“连连看”游戏。让我们在聊天的同时还能与好友一起通过游戏来增进彼此的感情,让彼此的心更加靠近,让我们的生活从此不再单调。
本聊天软件是在Windows环境下进行开发的。通过Swing实现操作界面的设计,使用Java语言中的Socket(套接字)来实现网络之间的通信,使用Hibernate框架来进行数据的增删改查,而MySQL 数据库则用于数据的存储与管理。在开发的过程中综合运用自己所学到的各种技术,一方面强化我在学校里学到的知识与专业技能,另一方面也使得我更好地去理解有关软件开发的流程与思想。这些能力与经验都将为我后续的学习和工作打下坚实牢固的基础,不断地提升个人的职业素养。
同时,本聊天软件将不断与信息领域的系统相互集成和渗透,向校园、集团等群体进行拓展,应用将突破个体,并应用于远程教学、远程演示、网络会议等。以丰富的接入方式,以保质保量的服务,以友好的用户体验呈现在世人面前。并且不断地扩大功能与应用范围,满足未来时代的话音。
2开发技术
本聊天软件用到的技术涉及到3个层面,它们分别是:界面层、通信层、数据持久化层。
2.1界面层技术
使用Java中的Swing来进行操作界面的开发。Swing是一款功能强大,使用方便,跨平台的图形界面开发工具包,专门用于开发Java应用程序的用户界面。Swing允许您设定自己喜爱的界面风格,它可以是跨平台的Java风格,也可以是我们熟悉的Window风格,这一点是其他界面开发工具很难比拟的。
2.2通信层技术
利用java中的Socket(套接字)来完成客户端与服务器的交互。该Socket是基于TCP/IP通信协议的数据传输对象,它提供了安全可靠的通信机制。在服务器使用ServerSocket创建监听端口,而在客户端则使用Socket来连接服务器。在连接成功时,应用程序的客户端和服务器都将产生一个Socket 实例,本聊天程序就是通过利用这个Socket实例来实现两段的通信和其他功能。在通信的过程中我也使用了多线程编程技术以实现复杂的交互行为。尤其是在服务器端,服务器每接收一个客户端就会产生一个虚拟服务器来单独为其服务。通过该技术的运用使得本聊天软件可以允许多人同时在线与自己的好友畅怀的交流。
2.3数据层技术
考虑到现如今框架技术的兴起,在数据层的处理上我也使用了开源的对象关系映射框架Hibernate。它对Java的数据库连接(JDBC)进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用面向对象编程思维来操纵数据库。
本聊天软件使用MySQL作为数据持久化存的储器。MySQL是一个真正的多用户、多线程数据
库服务器,是以客户端/服务器架构实现的,它由一个服务器守护线程和很多不同的客户程序和库组成。MySQL是一种关系型数据库管理系统,通过表来管理数据,增加了处理数据的速度并提高了操作的灵活性。Hibernate+MySQL的组合在数据的处理上让我变得得心应手,同时也让这个程序变得更加强壮与稳健。
3开发环境
3.1硬件环境
硬件配置:AMDX64兼容桌面平台。
3.2软件环境
操作系统:Windows8.1企业版。
JDK版本:JDK_8。
数据库:MySQLServer5.6。
开发工具:MyEclipse2015。
第三方工具包:Hibernate。
4需求分析
本聊天软件是在C/S模式下完成开发的,整个系统分为两个重要的组成部分:客户端、服务器。
在客户端用户可以通过登录模块进行登录操作,登录成功的用户则进入到好友列表界面;选中指定的好友,就可以发起与该好友的会话,通过聊天模块与好友相互嘘寒问暖;在聊天模块中,既可以发送消息,同时也可以发起与该好友的游戏互动,在PK中一决雌雄。
在服务器,服务器要为每个用户进行服务,对用户登录信息进行验证,接受来自用户的消息请求并按照消息的类型进行各种不同的操作和处理。
4.1客户端需求分析
客户端实现的功能主要有:
1.登录模块:用户在登录界面中输入个人身份信息,由客户端将信息传递至服务器进行用户合
法性的验证,验证成功,则跳转到聊天模块,否则给出相关提示。
2.好友模块:显示好友列表,通过该模块可以发起与好友的会话或者游戏。
3.聊天模块:能够及时的发送用户的文本消息,同时能够即时地将好友发过来的消息展现出来。
4.游戏模块:开启两个好友之间的游戏互动。
5.界面效果:布局整洁、大方;色彩光鲜、夺目;操作简单、舒适。
4.2服务器需求分析
服务器作为后台程序,实现的功能主要有:
1.能够接收每个客户端的通信连接。
2.调用数据访问层来验证用户的个人信息。
3.能够及时接受用户的聊天消息并进行消息的转发。
4.3数据层需求分析
数据层实现的功能主要有:响应来自服务器的数据访问请求。
《Java Web应用开发》项目设计参考方案(学时:84)项目一网上商城项目开发环境的搭建(学时:8) 一、教学目标 最终目标:学会Java Web 开发环境搭建,了解如何在集成开发环境中开发JSP、Servlet程序,能在Web服务器上进行运行测试。 促成目标: 1. 了解JSP、Servlet技术; 2. 了解Java Web 开发模式; 3. 了解Java Web服务器运行条件,掌握如何安装、配置Jdk、Tommcat和集成开。 二、工作任务 1.任务1 Java Web 环境搭建 2. 任务2 简单JSP、Servlet测试 三、活动设计 1.活动思路 首先介绍动态网页技术及相关开发模式,并将相关技术进行比较,从而引出本门课的重点。接着指出建立Web服务器的条件,引出如何搭建Java Web运行环境;最后学习集成开发环境的安装与设置,并学习如何写JSP程序、Servlet 程序,并掌握如何在客户端进行运行测试。 2.活动组织 3.活动评价 评价内容:根据学生具体任务完成情况、课后作业等情况进行评价。 评价标准: 实践部分评价:能基本完成相关软件的安装、环境配置为及格;独立完成相关软件的安装、环境配置,基本能进行代码编写及测试为良好;独立完成相关软件的安装、环境配置,并能进行正确的代码编写及测试为优秀。
模块一 Java Web 环境搭建(学时:4) 一、教学目标 最终目标:掌握浏览静态网页和动态网页的技能,掌握分析网页所采用的技术的技能,能独立完成JSP运行环境的安装及配置 促成目标: 1.了解静态网页中的静态的概念; 2.了解动态网页中的动态的概念; 3. 了解JSP、Servlet技术; 4. 了解Java Web 开发模式; 5.学会JDK、Tomcat的下载、安装及配置。 二、工作任务 1. JDK、Tomcat的安装及配置; 2.浏览各种类型的网页,分析出网页采用的技术; 三、活动设计 1.活动内容 通过浏览多种类型的网页、导出静态网站与动态网站的概念,继而引出对各种网页开发技术的分析,引入JSP动态网页开发技术、开发模式及运行环境;浏览电子商务网站,导出网上商城的项目;分析JSP的基本概念,导出Web服务器的概念,引出JSP常用的Web服务品Tomcat。构建JSP运行环境,为下一步开发工作做好准备。 子任务一:JDK安装与配置 子任务二:Tomcat的安装与配置,服务器运行测试。 2.活动组织
全国2012年1月高等教育自学考试 Java语言程序设计(一)试题 课程代码:04747 一、单项选择题(本大题共10小题,每小题1分,共l0分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.下面供选字符序列中,不属于 ...Java语言关键字的是( ) A.inner B.throw C.false D.throws 2.表达式“-1>>>1”的十进制值是( ) A.-2 B.231-1 C.-(231-1) D.232-1 3.Java语言中,在类定义时用final关键字修饰,是指这个类( ) A.子类必须实现父类未实现的方法 B.没有具体实现代码 C.必须要有实例 D.不能被继承 4.表达式"java程序设计".1ength()的值是( ) A. 0 B.12 C. 8 D.13 5.以下关于BorderLayout布局的叙述中,不正确 ...的是( ) A.把容器内的空间划分成5个区域 B.加入组件应该指明要放入的区域 C.是框架窗口的默认布局 D.一个位置可直接放多个组件 6.利用文件对话框打开或保存文件,在打开文件对话框之前,可用FileFilter类设置筛选条件,其所用的两个方法是( ) A.accept()和getSelectedFile() B.accept()和getDescription() C.accept()和setDescription() D.setDescription()和getDescription() 7.设已经有Graphics2D对象g2d,RoundRectangle2D对象rRect,绘制对象rRect的代码是( ) A.g2d.draw(rRect) B.g2d.drawRoundRect(rRect) C.rRect.draw() D.rRect.drawRoundRect() 8.以下关于线程互斥和同步的叙述中,正确的是( ) A.临界段是线程互斥使用资源的程序段 B.临界段能使线程使用其它线程的资源 浙04747# Java语言程序设计(一)试卷第1页(共12页)
Java工程师笔试题 一、填空题(本大题10小题,每空1分,共20分)。 1.Java语言的三大特性即是: 继承、封装、多态。 2.在Java中,char 型采用____unicode_______编码方案,这样,无论是中文字符还是英文字符,都是占用__2___个字节的内存空间。 3. 形式参数指的是方法被__定义____ 时的参数行,实际参数是方法被__调用__ _ 时所传递进去的变量或值。 4.JSP内置对象中,application对象是代表应用程序上下文,它允许JSP页面与包括在同一应用程序中的任何Web组件共享信息,而session 对象则是每个客户专用的。 5.如果想把一个对象写入一个流,那么这个类就必须实现Seralizable 接口。 6.程序中实现多线程的方法有两种:继承Thread类和实现___Runable _ 接口。 7.多线程中,可以通过调用相应的setPriority() 方法来修改一个线程的相对优先级。 8.面向对象编程的五大设计原则,分别是单一职责、开放封闭、 里氏替换、依赖倒置、接口分离 9.通过Ajax,客户端获取的数据主要有两种类型:文本型和xml 10.Socket通常也称为套接字,用于描述__ ip 和_ _接口 二、选择题(本大题20 小题,每小题2分.共40分)。 1.在JA V A中,如果父类中某些方法不包含任何逻辑,并且需要由子类重写.应该使用( )关键字来声明父类的这些方法: A) final B) static C) abstract D) void 2.在JA V A中,已定义两个接口B和C,要定义一个实现这两个接口的类,以下语句正确的是()。 A) interface A extend B,C B) interface A implements B,C C) class A implements B,C D) class A implements B, implements C
Java语言程序设计(郑莉) 第二章习题答案 1.什么是对象、类,它们之间的联系 答:1)对象是包含现实世界物体特征的抽象实体,它反映系统为之保存信息和与它交互的能力。对象是一些属性及服务的封装体,在程序设计领域,可以用“对象=数据+作用于这些数据上的操作”来表示。现实生活中对象是指客观世界的实体;在程序中对象是指一组变量和相关方法的集合。 2)类是既有相同操作功能和相同的数据格式的对象的集合与抽象!3)两者的关系:对象是类的具体实例.。 2.什么是面向对象的程序设计方法它有那些基本特征 答:面向对象程序设计从所处理的数据入手,以数据为中心而不是以服务为中心来描述系统。它把编程问题视为一个数据集合,数据相对于功能而言,具有更强的稳定性。 它的特征:抽象,封装,继承,多态。 3(无用) 4.请解释类属性、实例属性及其区别。 答:实例属性,由一个个的实例用来存储所有实例都需要的属性信息,不同实例的属性值可能会不同。 5.请解释类方法、实例属性及其区别。 答:实例方法表示特定对象的行为,在声明时前面不加static修饰符,在使用时需要发送给一个类实例。 类方法也称为静态方法,在方法声明时前面需加static修饰符,类方法表示具体实例中类对象的共有行为。 区别:实例方法可以直接访问实例变量,调用实例方法,实例方法可以直接访问类变量,调用类方法;类方法可以直接调用类变量和类方法,类方法不能直接调用实例变量和实例方法; 6.类的访问控制符有哪几种具体含义及其区别。 答:类的访问控制符只有public(公共类)及无修饰符(默认类)两种。 区别:当使用public修饰符时表示所有其他的类都可以使用此类;当没有修饰符时,则只有与此类处于同一包中的其他类可以使用类。 7类成员的访问控制符有哪几种他们对类成员分别有哪些访问限制的作用 答:类成员的访问控制符有 public,private,protecte及无修饰符. public(公有的):用public修饰的成分表示公有的,也就是它可以被其他任何对象访问(前提是对累成员所在的类访问有访问权限). Private(保护的):类中限定为private的成员只能被这个类本身 访问,在类外不可见。 proteced(保护的)用该关键字修饰的成分是受保护的,只可以被同一类及其子类的实例对象访问。 无修饰符(默认的):public,private,protected这个三个限定符不是必须写的。如果不写,则表明是“friendly”,相应的成分可以被所在保重的各类访问。 8简述构造方法的特点答:构造方法主要有以下特点: (1)构造方法的方法名与类名相同; (2)构造方法没有返回类型(修饰符void也不能有);(3)构造方法通常被声明为公有的(public); (4)构造方法可以有任意多个参数; (5)构造方法的主要作用是完成对象的初始化工作; (6)构造方法不能在程序中显式的调用; (7)在生成一个对象时,系统会自动调用该类的构造方法为新生成的对象初始化。 9如果在类声明中声明了构造方法,系统是否还提供默认的构造方法 答: 用户在进行类声明时,如果没有声明任何构造方法,系统会赋给此类一个默认(无参)的构造方法。但是,只要用户声明了构造方法,即使没有声明无参的构造方法,系统也不会再赋默认的构造方法。 10:声明Patient类表示在门诊室中的病人。此类对象应包括name(astring)\sex(achar)、age(an integer)、weight(a float0、allergies(a boolean). 声明存取及修改方法。在一个单独的累中,声明测试方法,并生成两个patient的例子: Atient april=new Patient(); (“zhangli”) (‘f’);; (330; ; (true); 那么:”+()); ”+()); ”+()); (“weught: ”+());\ ”+()); 声明并测试toString()方法显示一个病人的aga、sex、name及allergies属性。 答: public class Patient { private String name; private char sex; private int age; private float weight; private boolean allergies; public void setname(String a) { name=a; } public void setsex(char b) { sex=b; }
J2E E部分 1、运算符优先级问题,下面代码的结果是多少?(笔试) package test; public class Test { public static void main(String[] args) { int k = 0; int ret = ++k + k++ + ++k + k; // ret的值为多少 } } 2、运算符问题,下面代码分别输出什么?(笔试) package test; public class Test { public static void main(String[] args) { int i1 = 10, i2 = 10; } } 3、下面代码的结果是什么?还是抛出异常?(笔试) package test; public class Test { public void myMethod(String str) { } public void myMethod(Object obj) { } public static void main(String[] args) { Test t = new Test(); t.myMethod(null); } } 4、假设今天是9月8日,下面代码输出什么?(笔试) package test; public class Test { public static void main(String[] args) { Date date = new Date(); } } 5、下面代码的输出结果是什么? package test; public class Test {
public static void main(String[] args) { double val = 11.5; } } 6、下面代码的结果是什么? package test; public class Test extends Base { public static void main(String[] args) { Base b = new Test(); b.method(); Test t = new Test(); t.method(); } @Override public void method() { } } class Base { public void method() throws InterruptedException { } } 7、以下代码的结果是什么? package test; public class Test extends Base { public static void main(String[] args) { new Test().method(); } public void method() { } } class Base { } 8、true or false? package test; public class Test { public static void main(String[] args) { String str1 = new String("abc"); String str2 = new String("abc"); StringBuffer sb1 = new StringBuffer("abc"); StringBuffer sb2 = new StringBuffer("abc"); } } 9、输出的结果是什么?
java软件工程师面试题集 EJB方面 1、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别? 答:规范内容包括Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理员。这里面,EJB容器是EJB之所以能够运行的核心。EJB容器管理着EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS..... 2、EJB与JAVA BEAN的区别? 答:Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java 类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB 必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 3、EJB的基本架构 答:一个EJB包括三个部分: Remote Interface 接口的代码 package Beans; import javax.ejb.EJBObject; import java.rmi.RemoteException; public interface Add extends EJBObject { //some method declare } Home Interface 接口的代码
BOS物流管理系统第一天搭建环境 内容安排: 1、运行项目,分析功能结构 Struts2 通配符映射,将所有页面放在WEB-INF下 2、项目改造为maven结构 项目使用STS 3、jQuery EasyUI 框架 常用各个布局插件、Ztree菜单技术 学习目标:maven 、svn 、eclipse 工具、掌握前端开发框架EasyUI 1.BOS项目概述 1.1.项目背景 什么是BOS? (Business Operation System) ,各个软件最核心业务系统 用友软件公司为宅急送公司开发ERP系统---- 核心系统 BOS一期工程C/S结构,二期工程B/S 结构 传统项目分类:OA 自动化办公系统、CRM 客户关系管理系统、ERP 综合管理平台
1.2.项目开发任务 项目完整开发流程: 需求分析(需求分析文档)----- 系统设计(页面原型设计jquery easyui 、数据库设计PowerDesigner )------ 编码----- 测试----- 集成部署和运维 BOS系统非常庞大,十几天学习哪些功能
涉及三大核心业务模块:基础设置模块、取派模块、中转模块 基础设置模块:管理物流信息基础元素信息(快递员、配送区域、配送时间、排班…)取派模块:客户要进行快递,系统进行业务受理、系统分单到快递员、快递员取件、打包、计费 中转模块:管理货物在配送路程中间数据 路由模块:管理车辆和线路 财务模块:计费 PDA模块:管理快递员无线电通信 报表模块:生成统计数据 用户权限管理:通用权限管理系统Apache Shiro
1.3.项目开发平台和技术 新建一个Maven工程mavenbos 1.4.导入原型页面 配置说明pom.xml 导入参照下发pom.xml 文档!
《Java语言程序设计基础教程》练习思考题参考答案
第1章Java程序设计概述 1.9 练习思考题 1、Java运行平台包括三个版本,请选择正确的三项:() A. J2EE B. J2ME C. J2SE D. J2E 解答:A,B,C 2、Java JDK中反编译工具是:() A. javac B. java C. jdb D. javap 解答:D 3、public static void main方法的参数描述是:() A. String args[] B. String[] args C. Strings args[] D. String args 解答:A,B 4、在Java中,关于CLASSPATH环境变量的说法不正确的是:() A. CLASSPATH一旦设置之后不可修改,但可以将目录添加到该环境变量中。 B. 编译器用它来搜索各自的类文件。 C. CLASSPATH是一个目录列表。 D. 解释器用它来搜索各自的类文件。 解答:A 5、编译Java Application源文件将产生相应的字节码文件,扩展名为() A. .java B. .class C. .html D. .exe 解答:B 6、开发与运行Java程序需要经过的三个主要步骤为____________、____________和____________。 7、如果一个Java Applet源程序文件只定义有一个类,该类的类名为MyApplet,则类MyApplet必须是______类的子类并且存储该源程序文件的文件名为______。 8、如果一个Java Applet程序文件中定义有3个类,则使用Sun公司的JDK编译器编译该源程序文件将产生______个文件名与类名相同而扩展名为______的字节码文件。 9、开发与运行Java程序需要经过哪些主要步骤和过程? 10、Java程序是由什么组成的?一个程序中必须要有public类吗?Java源文件的命名规则是怎么样的? 11、编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。
案例--注册功能 1功能说明 没有人不知道什么叫注册功能吧! 我们这里的注册功能很简单,给用户提供一个页面,在页面中给出一个注册表单,用户输入自己的注册信息(用户名和密码)。然后提交表单,把请求发送到Servlet,Servlet会把用户的注册信息保存到XML文件中。完毕! 我们也不打算让Servlet做太多的事情,所以真正保存信息的工作还是交给DAO来做吧!所以在Servlet中只是获取DAO对象,然后调用DAO的方法来完成保存信息! DAO – Data Access Object(数据的存取工作,由这个对象来完成!) ●User :这是我们注册功能的唯一数据类! 不能用业务数据做主键(唯一标识!) username:用户名是唯一的! password email:唯一的! 2项目分析 用户通过注册页面的表单向Servlet发送请求,Servlet获取DAO对象,然后调用DAO 对象的方法save()方法完成向XML文档中保存注册信息。 ●reigst.jsp:包含注册表单的页面,提交表单会把请求交给RegistServlet来处理; ●RegistServlet:注册Servlet,包含doPost()方法。获取DAO对象,然后调用DAO对 象的save()方法传递User对象(注册信息领域对象)过去,由DAO完成保存注册信 息; ●RegistDao:只有一个save(User)方法,会使用DOM4J完成把User保存到XML文件 中; ●RegistDaoImpl:为了更好的处理耦合的问题,我们把RegistDao定义为接口,而 RegistDaoImpl为其实现类; ●User:领域对象,用来封装注册信息。最终还需要把它转换成XML数据持久化! ●user.xml:因为我们现在没学数据库,只能使用XML作为存储数据的工具。 总是从无依赖开始! 3从注册页面开始