《基于web跑步社区交流网站设计论文.doc》由会员分享,可在线阅读,更多相关《基于web跑步社区交流网站设计论文.doc(37页珍藏版)》请在三一办公上搜索。
1、目 录1. 引言11.1国内外研究现状和开发意义11.1.1 现状分析11.1.2目的意义11.1.3 技术背景11.2可行性分析21.2.1理论可行性21.2.2技术可行性分析21.2.3系统设计原则21.3系统主要内容21.4开发环境22.程序所用的关键技术42.1关键技术42.1.1 MVC42.1.2 JSP42.1.3 Servlet52.1.4 Struts62.1.5 Hibernate63.系统总体设计83.1系统功能分析83.2系统总体设计框架84.系统数据库设计104.1 E-R图104.1.1 各实体的属性关系104.2 数据库具体表结构的设计135.系统的实现165.1
2、整体功能描述165.2 详细设计与实现165.2.1.用户注册功能设计与实现165.2.2.用户登陆功能设计与实现175.2.3.用户个人信息模块功能设计与实现205.2.4创建空间模块功能设计与实现215.2.5 发送短信息模块功能设计与实现245.2.6查找添加好友模块功能设计与实现276.测试3061 测试技术3062测试目标3063 测试方法316.3.1 功能测试316.3.2 性能测试316.3.3 界面测试327.总结33参 考 文 献34致 谢351. 引言1.1国内外研究现状和开发意义1.1.1 现状分析目前网上这种社区网站也有很多,但很多都是没有应用最新的框架,只是单纯的j
3、sp+servlet,不利于扩展,比较陈旧。本社区网站通过应用javaEE1流行的Struts2和Hibernate框架,使代码的书写有了一个很好的封装,更具有层次感,提高了代码的阅读性,对程序员的要求稍微提高了很多,另外一方面,网上针对跑步社区的网站目前还没有很好的设计,因此通过本次设计填补了这个空白。现阶段对网站的书写主要有很多技术,oracle公司的javaEE,微软公司的.Net,开源的PHP等等,新的技术不断打破旧的书写风格。本系统采用javaEE当前流行的MVC模式,就社区网站的基本功能进行重新定位,增加了好友之间的交流功能等,把网站的内容变得更加丰富。1.1.2目的意义21世纪是
4、知识经济时代,计算机网络作为这一时代重要的生产工具,给各个国家带来了巨大的发展机遇。计算机已经成为我们学习和工作的得力助手,人们通过网络展现着自己的才华,述说着自己的爱好,购买着自己的需要的产品。喜欢运动的人也不例外,他们也要在网上购买着自己的运动装备,交流着自己的运动体验。做为商家来说在第一时间内捕获到人们的需要显得尤为重要。那么能不能在运动的爱好者之间,运动的爱好者与商家之间搭起一座桥梁呢?网络跑步爱好者社区系统是专门为跑步爱好者提供的一个交流的平台,使跑步爱好者不需要进行面对面的交流,只需在网上查看跑步爱好者的个人空间,从而了解他人的跑步爱好习惯,如果与自己的爱好相同或相似,就可以加对方
5、为好友,并且能够发送短信息给自己的跑步好友。1.1.3 技术背景在技术上Java语言的跨平台性,稳定性是有目共睹的,而Struts框架是一个比较成熟的框架,可以快速构建整个软件系统的框架结构, 并且适合中小型项目的开发。所以在技术选型上我采用了Struts技术。在操作数据库方面Hibernate封装的非常好,提高了开发效率。整体采用的所有技术都是现阶段比较流行的一套javaEE技术。1.2可行性分析1.2.1理论可行性该系统是网上的一个虚拟平台,能够模拟现实中的交流过程,并且展示个人的风采,满足广大运动爱好者的需求。1.2.2技术可行性分析运用MyEclipse开发工具,它是一个功能非常强大的
6、开发工具,MyEclipse在功能上可以和Tomcat进行集成,并且能做到自动打包,并将包自动部署到服务器上。这从很大程度上提高了开发的效率,节约了开发的时间。1.2.3系统设计原则1. 实用性原则:确保系统具有良好的系统性能,友好的用户界面,较高的处理效率,便于使用和维护,并采用成熟的技术。2. 先进性原则:尽量采用先进而且成熟的技术,使系统具有较高的技术水和较长的生命周期3. 开放性、安全性、可靠性及可扩展性原则。4. 兼容性原则:对于所选硬件系统及平台,能很好地适应开发和使用的需要。5. 规范性原则:软件设计过程严格按照“软件工程”的规定,系统编码,文档,操作系统平台以及所采用的开发方法
7、按照相应的国际标准和国家标准。1.3系统主要内容本系统主要包含四个模块:用户登陆模块、基本信息管理模块、短信息管理模块、好友管理模块,每一个模块都进行了详细的设计。使用本系统可以使跑步爱好者不用进行面对面的交流,可以直接在网上进行交流。1.4开发环境采用B/S架构,使用jdk1.6运行环境;服务器操作系统:Windows;数据库服务器:Oracle10g;Web服务器:Tomcat6.0;开发工具:MyEclipse软件开发技术:MVC JSP Hibernate Struts2 Servlet HTML JavaScript 。2.程序所用的关键技术2.1关键技术2.1.1 MVCMVC是一
8、种架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而达到更好的开发和维护效率。在MVC模式中,应用程序被划分成模型(Model)、视图(View)和控制器(Controller)三个部分。其中,模型部分包含了应用程序的业务逻辑和业务数据;视图部分封装了应用程序的输出形式(页面、界面);而控制器部分负责协调模型和视图,根据用户请求来选择要调用哪个模型来处理业务,以及最终由哪个视图为用户做出应答。MVC模式的这三个部分的职责非常明确,而且相互分离,每个部分都可以独立的改变而不影响其他部分,大大提高了应用的灵活性和重用性。使用MVC模式,可以获得
9、以下好处:低耦合性:在MVC模式中,模型和视图是解耦的,模型不会依赖于视图,视图仅仅从模型中获取需要展示的数据,不会与模型的逻辑处理相关联。更低的开发成本:MVC模式帮我们清楚的划分了各部分的职责,让程序员各司其职,Java程序员只关心业务逻辑的实现,也就是模型部分;而界面程序员只关心页面展示,也就是视图部分。 更好的可维护性:MVC模式划分出明晰的模型和视图,并使其解耦,在软件需求发生变更的时候,就可以各自独立的改变而不会相互影响,使得程序更容易维护和扩展。2.1.2 JSP JavaServerPages (JSP)【3】技术提供了一种简单快速的方法来创建显示动态生成内容的Web页面。由S
10、un公司制定了相关的JSP技术规范,封装了servlet,使web编程更加方便快捷,节省了程序员书写前台样式的时间。该规范还定义了如何在web服务器(本系统用的是tomcat)和Struts间进行交互,还描述了页面的格式和语法。JSP页面使用XML标签和scriptlets(一种使用Java【4,5】语言编写的脚本代码),封装了生成页面内容的逻辑。它将各种格式的标签(HTML或者XML)直接传递回响应页面。通过这种方式,JSP页面实现了页面逻辑与其设计和显示的分离。JSP 技术是Java系列技术的一部分。JSP页面被编译成servlet,并可能调用JavaBeans【6】组件(beans)或
11、EnterpriseJavaBeans组件(企业beans),以便在服务器端处理。因此,JSP技术在构建可升级的基于web的应用程 序时扮演了重要角色。 JSP【7】页面并不局限于任何特定的平台或web服务器上。JSP规范在业界有着广泛的适应性。JSP【8,9】技术广泛应用于各种商业网站,比如铁道部的12306等等,它的设计是开放的,符合行业标准的,并支持绝大多数的服务器,通过浏览器进行访问。由于使用可重用的组件和标签取代了对页面本身脚本语言的严重依赖,JSP技 术大大加快了开发的速度。而且jsp还支持java的原生代码,以及框架用的ognl等表达式的语法,它有与生俱来的可适应性,支持复杂的操
12、作。 JSP【10】是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是类servlet。Servlet和JSP【11】最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP【12】侧重于视图,Servlet主要用于控制逻辑。 2.1.3 ServletServlet是使用Java Servlet 应用程序设计接口(API)及相关类和方法的 Java 程序。除了 Java Servlet API,Servlet 还可以使用
13、用以扩展和添加到 API 的 Java 类软件包。Servlet 在启用 Java 的 Web 服务器上或应用服务器上运行并扩展了该服务器的能力。Java servlet对于Web服务器就好象Java applet对于Web浏览器。Servlet装入Web服务器并在Web服务器内执行,而applet装入Web浏览器并在Web浏览器内执行。 Java Servlet API 定义了一个servlet 和Java使能的服务器之间的一个标准接口,这使得Servlets具有跨服务器平台的特性。 Servlet 通过创建一个框架来扩展服务器的能力,以提供在 Web 上进行请求和响应服务。当客户机发送请求
14、至服务器时,服务器可以将请求信息发送给 Servlet,并让 Servlet 建立起服务器返回给客户机的响应。 当启动 Web 服务器或客户机第一次请求服务时,可以自动装入 Servlet。装入后, Servlet 继续运行直到其它客户机发出请求。Servlet 的功能涉及范围很广。2.1.4 Struts struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类。我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理,这个Servlet再参照一个配置文
15、件(通常为/WEB-INF/struts-config.xml)将各个请求分别分配给不同的action去处理。ActionServlet把请求交给action去处理之前,会将请求参数封装成一个formbean对象(就是一个java类,这个类中的每个属性对应一个请求参数)。ActionServlet把formbean对象传递给action的execute方法之前,可能会调用formbean的validate方法进行校验,只有校验通过后才将这个formbean对象传递给action的execute方法,否则,它将返回一个错误页面,这个错误页面由input属性指定。action执行完后要返回显示的结
16、果视图,这个结果视图是用一个ActionForward对象来表示的,actionforward对象通过struts-config.xml配置文件中的配置关联到某个jsp【13】页面,因为程序中使用的是在struts-config.xml配置文件为jsp页面设置的逻辑名,这样可以实现action程序代码与返回的jsp页面名称的解耦。2.1.5 HibernateHibernate【14】是JDBC的轻量级的对象封装。它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接
17、口的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EJB不是一个范畴的东西,也不存在非此即彼的关系。Hibernate【15】是一个和JDBC密切关联的框架,所以Hibernate的通过加载不同数据库的驱动,进行连接操作,而且hibernate对数据库的操作,打破了之前通过表操作,而是更加面向对象,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。面向对象设计【2】的软件内部运行过程可以理解成就是在不断创建各种新对象、建立对象之间的关系,调用对象的方法来改变各个对象的状态和对象消亡的过程,不管程序
18、运行的过程和操作怎么样,本质上都是要得到一个结果,程序上一个时刻和下一个时刻的运行结果的差异就表现在内存中的对象状态发生了变化。 通过数据库保存java程序运行时产生的对象和恢复对象,其实就是实现了java对象与关系数据库记录的映射关系,称为ORM(即Object Relation Mapping),可以通过封装JDBC代码来实现了这种功能,封装出来的产品称之为ORM框架,Hibernate就是其中的一种流行ORM框架。使用Hibernate框架,不用写JDBC代码,仅仅是调用一个save方法,就可以将对象保存到关系数据库中,仅仅是调用一个get方法,就可以从数据库中加载出一个对象。 Hibe
19、rnate只需要简单的save或者update就可以对对象进行操作,通过自动创建sql语句进行建表或者更改数据库的操作,有一个hibernate.cfg.xml 里面配置了连接数据库的驱动,用户名,密码等。在应用Hibernate时,重点要了解Session的缓存原理,级联,延迟加载和hql查询。3.系统总体设计3.1系统功能分析作为一个在线的社区来讲,首先要实现它的基本功能,如用户的注册,登陆,密码的找回等最基本的功能,而这些是需要用户来完成的,也就是说可以定义在用户管理的模块中。为了更好的展示用户的的个人特征,也就是我们平时说的个性化,我们可以加上一个个人空间的管理。于是我们得出用户管理信
20、息模块的基本功能。其次为了方便用户间的交流,系统提供一个收发信息的功能,它包括短信的创建,对已收信息和已发信息的删除和查看等功能,最后由于系统是一个交流交友于一体的,所以交友这一块内容是必不可少的。经过分析不难发现,要实现该模块的话必须要在功能上实现好友的查找,添加,删除等功能。通过详细的分析,下面就可以顺其自然的得出相应的整体框架。3.2系统总体设计框架为了提高系统的安全性,本系统使用多用户的密码登陆方式登陆系统,已达到增加系统数据的安全性、保密性的目的。系统结构总流程设计如图3-1所示。 图 3. 1 系统结构总流程以上就是根据需求对系统的整体框架做出的设计。设计思路如下,先找出一个个的用
21、例,并画出用例图。根据他们之间的关系,对系统做出整合,把一个个的用例整合到一个大的系统模块下。最后设计出整体的框架。4.系统数据库设计4.1 E-R图在需求分析之后,数据库设计的第一步就是对系统的概念结构进行设计,设计的目标是产生反映全组织信息需求的整体数据库的概念结构,描述概念结构的工具就是ER图。ER图属于逻辑模型,以下是我对各个模块中实体与属性的联系,从而再完成实体间的对应关系。从而进一步细化数据库建模的信息,以更好实现物理模型。能更清晰的了解数据库信息。4.1.1 各实体的属性关系在需求分析之后,数据库设计的第一步就是对系统的概念结构进行设计,设计的目标是产生反映整个系统信息需求的整体
22、数据库的概念结构,描述概念结构的工具就是ER图。详细关系见图。 图4. 1 用户登录的E-R图图4. 2 用户信息的E-R图 图4. 3 个性空间的E-R图 图4. 4 短信息的E-R图 图4. 5 总的E-R图 4.2 数据库具体表结构的设计在确定了各实体详细信息后,下一步就是各实体在数据库中的具体实现,依据E-R图中实体的具体信息,共设计了9张数据表,主要表的描述如下:表4. 1:cp_member列名数据类型可否取空备注说明idnumberNOT NULL编号nicknamevarchar2(20)NOT NULL用户名passwordvarchar2(50)NOT NULL用户密码 表
23、4. 2:cp_graderecord列名数据类型可否取空备注说明idnumberNOT NULL编号minpointnumberNOT NULL最小积分maxpointnumberNOT NULL最大积分gradenamevarchar2(20)NOT NULL等级名称iconpathvarchar2(50)NOT NULL图片路径 表4. 3:cp_memberinfo列名数据类型可否取空备注说明idnumberNOT NULL编号nicknamevarchar2(20)NOT NULL用户名passwordvarchar2(50)NOT NULL用户密码gendervarchar2(1)
24、NOT NULL性别agenumberNOT NULL年龄emailvarchar2(100)NOT NULL电子邮箱provincecity varchar2(10) NULL所在省份addressvarchar2(200) NULL详细地址phone varchar2(50) NULL联系电话passwordquestionvarchar2(200) NULL密码提示问题passwordanswervarchar2(200) NULL密码提示答案recommendervarchar2(20) NULL推荐人pointnumber NULL积分registerdate date NULL注册
25、时间latestdate date NULL上次登录时间statusnumber NULL状态isonlinenumber NULL在线人数 表4. 4:cp_province列名数据类型可否取空备注说明idnumberNOT NULL编号codevarchar2(20)NOT NULL序号namevarchar2(20)NOT NULL城市名字表4. 5:cp_memberspace列名数据类型可否取空备注说明idnumber NOT NULL编号opinionvarchar2(200) NOT NULL跑步习惯与主张runtimevarchar2(20) NOT NULL跑步时间runst
26、arvarchar2(50) NOT NULL喜欢的明星runhabitvarchar2(50) NOT NULL跑步爱好runplacevarchar2(20) NOT NULL跑步地点cellphone varchar2(50) NOT NULL手机号icon varchar2(200) NOT NULL照片表4. 6:cp_pointrecord列名数据类型可否取空备注说明idnumberNOT NULL编号nicknamevarchar2(20)NOT NULL用户名receivedatedateNOT NULL接收时间表4. 7:cp_messagerecord列名数据类型可否取空备
27、注说明idnumberNOT NULL编号sendervarchar2(20)NOT NULL发送者receivervarchar2(20)NOT NULL接受者senddatedate NOT NULL发送时间titlevarchar2(100)NOT NULL题目contentvarchar2(300)NOT NULL内容表4. 8:cp_friendrecord列名数据类型可否取空备注说明idnumberNOT NULL编号selfnamevarchar2(20)NOT NULL用户名friendnamevarchar2(20)NOT NULL朋友姓名表4. 9:cp_blackreco
28、rd列名数据类型可否取空备注说明idnumberNOT NULL编号selfnamevarchar2(20)NOT NULL用户名blacknamevarchar2(20)NOT NULL黑名单5.系统的实现5.1整体功能描述该系统采用MVC(Model-View-Controller)框架模式进行设计,即把该系统的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一来,每一个应用都可以被分成三个层模型层、视图层、控制层。在进行各层设计前,我们需要对整个系统的功能结构进行设计,在确认系统功能结构的基础上将各个功能块进行模块化,进行相对独立的设计。结合前面的需
29、求分析所描述的系统功能,我们可以将该系统划分为如下几个模块:l 用户注册模块l 用户登录模块l 用户个人空间模块l 用户个人信息模块l 用户信息浏览模块l 用户好友配对模块l 用户短信操作模块5.2 详细设计与实现5.2.1.用户注册功能设计与实现用户需要填写相应的个人资料完成会员的注册,同样的用户名不能注册两次,根据用户输入的用户名首先在数据库中查找是否有同样的用户名,如果发现该用户名已存在,在struts的action中加入“addFieldError(registerError, 该用户名不可用)”,然后前台通过标签就能获取到“该用户不可用”的信息,将其予以显示。注册时设置推荐人机制,如
30、果有推荐人,跟据用户输入,将推荐人的积分数进行相应的增加,为了防止用户恶意注册,注册界面设置有随机验证码,讲产生验证码的程序封装为一个servlet,每次刷新界面时都会有不同的验证码,在提交的时候后台需要获取两个验证码,一个是正确的验证码,一个是用户输入的验证码,进行比对,如果发现输入一致则允许通过,验证码的验证应放在查询用户名是否重复之前,如果验证码不正确,就没必要与后台打交道直接告诉用户输入正确的验证码才能进行注册。为了避免用户忘了密码,采取密码找回功能,所以注册时需要填写一下密码提示问题和答案,在找回时,新密码讲是由系统自动生成一个随机字符串,通过弹框,显示给用户。具体的情况如图5-1所
31、示。图5. 1 注册界面5.2.2.用户登陆功能设计与实现如果第一次注册成功,会直接跳入到登陆完成界面,登陆的时候,如果是通过访问其他界面,struts的拦截器会讲没登陆时都统一拦截到login.jsp界面,需要输入用户名、密码,把数据传输到后台进行判断,如果都正确就通过,否则将重新刷新到login.jsp,通过之后,就要进行判断是否是当天的第一次登陆,如果是第一次登陆还要加入登陆操作所增加的积分,同一天登陆多次只能增加一次积分。核心代码如下:alert();alert();alert(您的新密码是:+);具体如图所示: 图5. 2 登陆界面 此外,在登陆的界面,还会有忘记密码的信号,如果忘记
32、密码,可以根据注册时的问题来修改密码,核心代码如下:alert();具体如图所示:图5. 3 找回密码的界面 登陆之后,个人基本信息会显示登陆时间,因为数据库中的时间格式和前台显示时间不一样,所以需要采取格式化输出时间,用到的技术是ognl表达式里面的标签, 而且需要导入相应的类库,否则会不予显示,还会显示等级,短信息等信息。图5. 4 登录后所显示的个人信息 登录界面之后,会显示出各个用户的积分排名情况,用户可以清晰明了的一眼看出自己的积分与排名,设计合理,具有可行性。图5. 5 积分排行信息5.2.3.用户个人信息模块功能设计与实现查看个人基本信息功能,会把会员的昵称、年龄、性别、邮箱、密
33、码问题及答案、地址等信息罗列出来。主要显示方法是通过调用struts的OGNL表达式,例如显示会员昵称的表达式为$sessionScope.member.nickname ,当然首先要保证session中保存的有member对象的信息,所以在登陆成功之后就通session.put(member, m)把member对象放入session中。如下图所示:图5. 6 查看个人信息5.2.4创建空间模块功能设计与实现创建空间模块功能,其中图片需要用到struts2的文件上传功能,需要导入相应的类库,选取较小的图片进行上传到服务器,然后把路径写入数据库,当下次访问的时候就可以浏览自己上次上传的图片,核
34、心代码如下: 上传个性化形象: 具体如图所示:图5. 7 创建个性空间空间创建成功之后,就可以看见自己的个性空间。代码如下: * 请用一句话形容对跑步的主张:*最喜欢的体育明星:* 经常跑步的地点: 上传个性化形象:!- ss具体如图所示: 图5. 8 个性空间5.2.5 发送短信息模块功能设计与实现邮箱的收发信息功能,包括收信人昵称,主题和内容等主要信息,该功能涉及到message表,首先通过传入的member信息找到发件人和收件人,当收件人登陆后通过查看邮箱,就将所有消息收取,一一列举。分如图所示。图5. 9 发送信息
35、界面图5. 10 发件箱界面收件箱核心代码如下:function subPage()var page=document.getElementById(page).value;document.location=?currentPage=+page;function delMessage()cCount = getCheckedCount(ID);if (cCount = 0)alert(请至少一条信息!);return;if (confirm(确定删除吗?)=false)return false;document.forms.inboxForm.action=;document.all(inboxForm).submit();function detailMessage()cCount = getCheckedCount(ID);if (cCount = 0)alert(请选择一条信息!);return;if (cCount 1)alert(对不起,一次只能查看一条信息!);return;document.forms.inboxForm.action=;document.all(inb