跑步社区实训报告.docx
- 文档编号:1650764
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:24
- 大小:671.58KB
跑步社区实训报告.docx
《跑步社区实训报告.docx》由会员分享,可在线阅读,更多相关《跑步社区实训报告.docx(24页珍藏版)》请在冰点文库上搜索。
跑步社区实训报告
郑州轻工业学院
实训报告
实训题目:
Struts+Hibernate在B/S系统中的应用
学院:
软件学院
专业:
软件技术
班级:
软件技术12-02
学生姓名:
你猜
学号:
621
指导老师:
成绩:
项目简介
Struts是目前广受欢迎的基于MVC的JavaWeb框架,Hibernate则是JavaWeb开发中一个功能强大的持久化中间件。
Struts与Hibernate相结合在B/S系统开发中有着广泛的应用。
本网络跑步社区系统的开发,正是使用了它们。
本系统采用的是模块化设计,并采用接口化编程思想降低模块之间的耦合度。
该系统主要采用Struts框架,涉及到前台页面的展示,后台与数据库的交互,中间层业务逻辑的处理等。
设计中用到了Eclipse开发工具,Hibernate持久化中间件,采用Jsp网络编程,以及Servlet等技术。
该系统具备数据查询、修改、增加、删除等功能,实现了基本信息管理,短信息管理,好友管理三大模块的全部功能。
系统具有界面直观友好、操作简单的特点,并且能够承受多用户同时上线,满足了用户在网络交流方面的需求。
本系统主要采用的是Eclipse开发工具开发的,采用的是Java语言,由于Java语言的跨平台性使得系统的可重用性增强,由于Java语言的垃圾回收,安全等机制提高了系统的性能。
使用Struts框架更是提高了开发效率,使得模块化更加简洁,设计更加方便,使用Hibernate持久化中间件。
2系统分析
2.1系统描述
描述:
网络跑步爱好者社区系统,是专门为跑步爱好者在网络上提供的一个交流的平台,使跑步爱好者不需要进行面对面的交流,只需在网上查看跑步爱好者的个人空间,从而了解他人的跑步爱好习惯。
如果与自己的爱好相同或相似,就可以加对方为好友,并且能够发送短信息给自己的跑步好友
2.2系统需求
系统主要分为三个部分:
1. 会员活动
a) 注册、登陆、创建个人空间、站内短信、好友速配、跑步论坛
2. 跑步指南
a) 跑步调查、跑步课堂、跑步赛事、跑步搜寻
3. 后台管理
a) 会员管理、活动信息管理、都市节拍评论管理、下载区资源管理、专业跑步指南管理、积分管理、权限管理
功能需求描述:
注:
积分主要是用来升级个人空间、以及可以购买虚拟的物品、系统每过一段时间会奖励在这段时间内所获积分较高的会员。
1) 注册:
加50分(密码需要MD5加密)
推荐:
加20分(在注册的时候,如果是某个会员推荐过来的,可以指明推荐人,如果注册成功,则相应给推荐人加20的积分)
登陆:
加3分(提供自动登陆,每天多次登陆只算一次,登陆以后根据积分的多少显示不同的级别名称)
忘记密码:
用户可以到忘记密码页面,输入密码提示问题和密码回答,如果正确,系统需要创建一个新的密码返回给用户。
2)创建个人空间:
加25分
当个人积分达到一定数量以后,可以升级个人空间。
3)站内短信
1.发送短信,显示已发送短信,并可删除短信,如果你在别人黑名单中,则你无法发送短信给他。
2.接收短信,可以显示没有阅读的短信,以及阅读过的短信,可以删除短信,将发送短信的会员加为好友或加入黑名单。
3.添加好友,如果所添加的好友不存在,就转到好友速配页面,可以去查询符合条件的会员。
可以删除好友,可以将好友加入黑名单。
4.黑名单,显示当前会员黑名单中的会员
4)好友速配
可根据需要的条件,查询出合适的会员,并可加为好友,在此页面上还需要显示积分最高的5个会员
5)会员管理
在这个栏目检索会员信息,检索条件为积分,会员昵称,注册时间。
执行会员注销,恢复操作。
执行加积分(米)操作。
6)积分管理
积分动作的增删查改。
2.3功能需求
2.3.1注册
在register.jsp页面用户可以注册一个会员帐号,昵称作为以后登陆社区的唯一标识。
如果有推荐人的话,可以输入推荐人的昵称。
当注册成功的话,除了给新注册会员加50米的积米以外,还需要给推荐会员加20米的积米。
并且需要将这次获取积分的过程记录下来,密码需要用MD5算法加密。
详细描述:
1.需要判断注册的用户名是否已经在数据库中存在
2.取到注册可以获取的积米数
3.通过MD5加密密码.
4.获取会员的初始等级
5.将获取积米的信息记录下来
6.判断注册的用户有无推荐人,如果有的话,则需要给推荐人加上相应的积米,并将获取积米的信息记录下来。
7.最后将注册信息保存到数据库
具体步骤:
1.实现IMemberDao接口中注册需要用到的方法
2.BeanFactory中提供获取IMemberDao实现类的对象的功能
3.实现接口IMemberService中的业务逻辑方法register
4.创建action和actionform
5.创建register.jsp
6.修改register.jsp,然后写js对页面上数据格式进行验证
2.3.2登陆
在login.jsp页面上用户可以输入昵称和密码进行登陆,如果用户名和密码都正确,则登陆成功。
如果不正确,需要提示用户。
在login.jsp页面上还有一个checkbox,如果用户登陆的时候选上的话,则下次用户再访问index.jsp的时候,则自动登陆。
详细描述:
首先,用户在访问index.jsp页面的时候,系统要检测是否需要自动登陆,那如何检测呢,就是检查浏览器的cookie中有没有用户上次登陆保存的用户名和密码,如果有,就用cookie中的用户名和密码来直接登陆。
如果没有就转到登陆页面login.jsp。
然后,当用户登陆的时候,系统需要检查用户是否有选择下次访问自动登陆的checkbox,如果有选择,系统就需要将这次登陆的用户名和密码保存到用户浏览器的cookie中,以便下次访问的时候能自动登陆。
具体登陆过程:
1. 查看登陆的用户名是否存在
2. 查看登陆的用户是否现在已经是在线状态
3. 查看登陆的用户是否是注销状态
4. 查看密码是否正确
5. 判断这次登陆是否和上次登陆是否在同一天内,如果不是需要
给这次登陆加登陆应该能获取的 积分数,并需要保存获取积
分的记录
6.将会员的isonline设成在线状态,将latestDate设成当前时间,
并需要把上次登陆的时间保存到memberinfo的另外一个实例
变量中。
还需要设定会员的当前级别
具体action的功能描述:
checkAutoLoginAction:
当用户访问index.jsp页面的时候,就会转到这个action,这个action需要做的事情是,从request里面取到所有的cookie,然后查看有没有名字是loginname、password的cookie,如果有,就把value取出来放到loginForm中,然后转到loginAction去登陆。
loginAction:
从loginForm中取loginname、password、autoLogin,然后调用业务逻辑方法logi进行登陆,如果登陆成功,把login方法返回的memberinfo对象放到session范围内,然后检测autoLogin的值是否为true,如果是,还需要把loginname、passoword作为两个cookie写到浏览器中,转到afterLoginAction(客户端重定向).如果登陆失败,转到login.jsp,重新登陆
2.3.3忘记密码
当会员忘记密码的时候,可以访问password_misssing.jsp,输入会员的帐号、密码提示问题、密码提示答案进行提交,系统对这些信息进行判断,如果正确,则产生一个新的密码返回,并且在页面上显示,并将数据库中的密码修改成新密码。
如果不正确,则提示用户。
实现业务逻辑方法findNewPassword,首先根据用户名查询memberinfo对象,如果返回是null,就抛出异常。
如果不为null,则判断密码提示问题和密码提示答案是否一致,如果是,产生一个新密码返回,如果不一致,抛出异常
2.3.4修改个人信息
会员在modify.jsp页面上输入要修改的信息,点击提交,则需要将修改的信息保存到数据库,并且还需要将session范围内的memberinfo对象里面的属性值与数据库中的值同步
2.3.5新建邮件
需要判断接收者是否存在,如果存在,则在Messagerecord表中插入一条数据,并且提示用户成功,如果不存在提示用户接收方不存在。
2.3.6接收邮件
显示当前会员接收的所有短信(包括新短信和已读短信),并且可以删除某条短信,查看某条短信的详细信息
2.3.7发送邮件
显示当前会员发送的所有短信(已经删除的除外),并且可以删除某条短信
2.4系统设计与实现
2.4.1数据库表的设计
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接影响到系统的效率及系统实现的效果。
合理的数据结构设计可以提高数据存储的效率,保证数据的完整性和一致性。
合理的数据库结构也将有利于程序的实现。
(1)数据库的需求分析
用户的需求具体体现在各种信息的添加、修改、删除和查询,这种数据库结构能够满足各种信息的输入和输出。
收集基本数据、数据结构及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。
(2).数据库创建的意义
数据表是一组有意义的,相对完整的数据的集合,它是构成数据库的最直接的单元。
换句话说,数据库是由一个或多个数据表直接构成的。
(3)根据数据字典和功能模块图设计出网络跑步爱好者社区系统数据库中的各个数据表。
根据小区管理要求得到以下几类数据表。
1)用户信息数据表2-1,用于保存跑步爱好者的详细地址及联系方式,数据表名为“memberinfo”
表2-1用户信息表
字段名
字段类型
约束或索引
描述
ID
Number(Sequence)
PK
记录流水号
NickName
Varchar2(20)
NotNull
用户昵称
Password
Varchar2(50)
NotNull
MD5加密口令
Gender
Nvarchar2
(1)
NotNull
性别,’男’或’女’
Age
Number
NotNull
年龄
Nvarchar2(100)
NotNull
电子邮件
PasswordQuestion
Nvarchar2(200)
密码提示问题
PasswordAnswer
Nvarchar2(200)
密码提示问题答案
ProvinceCity
Nvarchar2(20)
所在省市
Address
Nvarchar2(200)
地址
Phone
Varchar2(50)
联系电话
Point
Number
Default=0
当前积分
Recommender
Varchar2(20)
推荐人
RegisterDate
Date
注册时间
LatestDate
Date
上次上线时间
Status
Number
Default=0
0-正常1-注销
IsOnline
Number
Default=0
0-下线1-在线
GradeId
Number
等级ID
2)用户个人空间表2-2,用于保存用户个人空间的基本信息,数据表名为“memberspace”。
表2-2用户个人空间表
字段名
字段类型
约束或索引
描述
ID
Number(Sequence)
PK
记录流水号
Runplace
Varchar2(20)
跑步地点
Runtime
Varchar2(20)
跑步时间
Runhabit
Varchar2(20)
跑步习惯
RunStar
Varchar2(20)
喜欢的体育明星
Cellphone
Varchar2(20)
正在使用的手机
Opinion
Varchar2(200)
个人对跑步的看法
Icon
Varchar2(50)
个人空间头像图片路径
Memberid
Number
会员id
3)短信息数据表2-3用于保存短信的基本信息,数据表名为“messagerecord”
表2-3短信息数据表
字段名
字段类型
约束或索引
描述
ID
Number(Sequence)
PK
记录流水号
Sender
Varchar2(20)
NotNull
发件人登录名
Receiver
Varchar2(20)
NotNull
收件人登录名
SendDate
Date
NotNull
发送日期
Title
NVarchar2(100)
NotNull
短信标题
Content
Nvarchar2(300)
NotNull
短信内容
Status
Number
Default=0
0-未阅读1-已阅读
SenderStatus
Number
Default=0
0-未删除1-已删除(发送者)
ReceiverStatus
Number
Default=0
0-未删除1-已删除(接收者)
4)好友名单数据表2-4,用于保存好友的基本信息,数据表名为“friendrecord”
表2-4好友名单数据表
字段名
字段类型
约束或索引
描述
ID
Number(Sequence)
PK
记录流水号
SelfName
Varchar2(20)
NotNull
会员登录名
FriendName
Varchar2(20)
NotNull
好友登录名
5)黑名单数据表2-5,用于保存即将删除的好友,数据表名为“blackrecord”
表2-5黑名单数据表
字段名
字段类型
约束或索引
描述
ID
Number(Sequence)
PK
记录流水号
SelfName
Varchar2(20)
NotNull
会员登录名
BlackName
Varchar2(20)
NotNull
被加入黑名单者登录名
如以上建立户主关系数据表为例,建立以下数据表:
用户信息表,个人空间表,短信息表,好友名单表,黑名单表。
数据表名分别为:
“memberinfo”“memberspace”、“messagerecord”、“friendrecord”、“blackrecord”,保存数据库名称为“briupdb”,数据结构表建立完毕。
各数据表间关系如图2-2所示:
图2-2各数据表间关系图
2.4.2界面实现
点击注册,进入register.jsp页面
完成注册内容:
1.用户名已存在或者用户输入验证码不正确时会弹出提示:
2.若是用户名输入小于6位会提示:
3.若是输入密码和输入确认密码不一致,会弹出提示:
4.若是提示答案输入少于6位,会弹出提示:
注册成功,跳到登录页面,输入账号密码登录:
1.若是用户名,密码错误,后台会显示错误:
2.登录成功,进入首页:
activity.jsp
点击首页左下角,基本信息,转到/modify.jsp。
在这里可以对用户信息进行更改:
提交后保存新的用户信息,更新到数据库。
点击我的信箱,转到inbox.action。
对收件箱的信件进行显示。
点击写纸条,转到sendInfo.jsp。
在这里可以给用户发送消息。
发送成功,转到sendInfo.action
对发出的信息进行显示,如图所示,这条消息发送成功了。
点击主题的名称,可以对这条信息进行浏览:
再返回时,状态栏的图标小信封也变化了:
点击选择框,对这条消息进行删除:
点击确定,这条消息被删除啦!
用样于批量删除:
publicStringdelMessage(){
try{
for(inti=0;i messengerService.delMessage(id[i]); return"success"; }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); return"failure"; } } 2.4.5系统设计用到的一些图 (1)各实体间联系简图: 图2-7各实体间联系简图面 (2)各个用例图 图2-8管理用户信息用例图 图2-9管理好友用例图 图2-10管理短信息用例图 3.1DAO模式简介 DAO模式是标准的J2EE设计模式之一.开发人员使用这个模式把底层的数据访问操作和上层的商务逻辑分开.DAO是DataAccessObject数据访问接口,数据访问,故明思异就是与数据库打交道,是夹在业务逻辑与数据库资源中间。 DAO用来封装DataSource的,就比如,Connectionconn=DAOFacotry.createConnection(),就可以把Driver,URL,username,passpword这一些放在DAO中,以后要更改数据库的类型。 比如要把MSSQL换成Oracle的话,只需要更改DAOFacory里面的getConnection()里面的Driver.URL.之类的。 DAO也是把对数据库的操作(比如最基本的CRUD操作)全部封装在里面,比如说你要你要插入一个新的用户,那么.在DAO中我们只需要提供一个insertUser(Useruser)这一个方法就可以了。 具体的操作是在DAO中实现的。 那么对于要调用DAO的时候.只要知道insertUser(User)是用来插入一个新的用户,而不需要知道是如何实现的。 一般DAO是与AbstractFactory模式一起来用的。 Factory来建立数据库和定位具体的DAO(比如说是UserDao,CustomerDao)。 一般将getConnection设置为static也可以把HibernateSessionFactory这一个公共类放在这一AbstractFactory类中去。 DAO实现了用来操作数据源的访问机制。 依赖于DAO的业务组件为其客户端使用DAO提供更简单的接口。 DAO完全向客户端隐藏了数据源实现细节。 由于当低层数据源实现变化时,DAO向客户端提供的接口不会变化,所有该模式允许DAO调整到不同的存储模式,而不会影响其客户端或者业务组件。 重要的是,DAO充当组件和数据源之间的适配器。 软件开发人员应当养成一个良好的编程习惯,在定义系统的包结构时应当遵循一定的原则,比如通常将DAO层单独定义成一包,专门用来存放DAO接以及DAO接口的实现类,如图4-1所示。 图3-1工程包结构 3.1.1用户基本信息操作的DAO接口声明 这个接口定义了用户跟数据库打交道的底层方法。 在这个接口中定义的方法有: 保存或更新会员信息方法,根据用户名查找用户信息方法,根据行为的名字查找行为对象方法,根据积分查找级别对象方法,保存积分记录方法,统计在线用户的数量方法,随机查找用户方法,根据条件查询会员信息方法,查找会员的总数方法等。 3.2Service服务的接口声明 Service层是业务处理层,在功能上主要负责对业务逻辑的处理操作,包括对DAO层数据的调用,对每一个业务模块进行逻辑的判断与处理等。 同DAO层的设计模式一样,在Service我也是采用的接口编程的方式进行的处理。 3.2.1Service层的用户基本信息操作的接口声明 这个接口中定义的方法有: 登录方法,注册方法等,它们再调用DAO层的接口方法完成相应的操作。 4.1关键技术 4.1.1关于JSP JSP是JavaServerPages的缩写,是由Sun公司倡导,许多公司参与,于1999年推出的一种动态网页技术标准。 JSP是基于JavaServlet以及整个Java体系的Web开发技术,利用这一技术可以建立安全的、跨平台的先进动态网站。 当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个Java文件,再将这个Java文件编译生成字节码文件,然后通过执行字节码文件响应客户的请求,而当这个JSP页面再次被请求执行时,JSP引擎将直接执行这个字节码文件来响应客户,这也是JSP比ASP运行速度快的一个原因。 而JSP页面的首次执行往往由服务器管理者来执行。 JSP有很多优点: 比如平台和服务器的独立性,开放的开发过程,开放的源代码,JSP标签的可扩充性,JSP跨平台的可重用性等等。 4.1.2关于Servlet Servlet是使用JavaServlet应用程序设计接口(API)及相关类和方法的Java程序。 除了JavaServletAPI,Servlet还可以使用用以扩展和添加到API的Java类软件包。 Servlet在启用Java的Web服务器上或应用服务器上运行并扩展了该服务器的能力。 Javaservlet对于Web服务器就好象Javaapplet对于Web浏览器。 Servlet装入Web服务器并在Web服务器内执行,而applet装入Web浏览器并在Web浏览器内执行。 JavaServletAPI定义了一个servlet和Java使能的服务器之间的一个标准接口,这使得Servlets具有跨服务器平台的特性。 Servlet通过创建一个框架来扩展服务器的能力,以提供在Web上进行请求和响应服务。 当客户机发送请求至服务器时,服务器可以将请求信息发送给Servlet,并让Servlet建立起服务器返回给客户机的响应。 当启动Web服务器或客户机第一次请求服务时,可以自动装入Servlet。 装入后,Servlet继续运行直到其它客户机发出请求。 Servlet的功能涉及范围很广。 4.1.3关于Struts Struts是一个MVC框架(Framework),用于快速开发JavaWeb应用。 Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的Action,也为V(View)提供了一系列定制标签(CustomTag)。 但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式的商业逻辑。 Spring是一个轻型容器(light-weightcontainer),其核心是Bean工厂(BeanFactory),用以构造我们所需要的M(Model)。 在此基础之上,Spring提供了AOP(Aspect-OrientedProgramming,面向层面的编程)的实现,用它来提供非管理环境下申明方式的事务、安全等服务;对Bean工厂的扩展ApplicationContext更加方便我们实现J2EE的应用;DAO/ORM的实现方便我们进行数据库的开发;WebMVC和SpringWeb提供了J
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 跑步 社区 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)