社交网站的设计与实现.docx
- 文档编号:6583495
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:31
- 大小:203.74KB
社交网站的设计与实现.docx
《社交网站的设计与实现.docx》由会员分享,可在线阅读,更多相关《社交网站的设计与实现.docx(31页珍藏版)》请在冰豆网上搜索。
社交网站的设计与实现
课题题目
社交网站的设计与实现
课题来源
□导师指定■自定□其他来源
课题的目的、意义以及和本课题有关的国内外现状分析:
1.目的:
随着社会的进步和网络的快速发展,人们对精神生活的追求越来越高,希望能结交到更多的朋友,并且可以及时的了解到朋友发生了什么事情。
社交网站以网络为平台,人们可以足不出户的结识五湖四海的朋友,并且可以最快的参与到朋友圈发生的故事。
用户可以在社交网站上查找添加好友,添加自己的动态(新鲜事,日志,照片,分享),发表对好友动态的评论、赞、收藏等。
2.意义:
与其他社交网站相比,希望能为用户提供更为简洁,明了的界面展示和更为直接的交流方式。
通过社交网站,人们可以充分利用网络资源,在闲暇之时简单有效的扩展人脉,与朋友互动交流。
3.现状:
目前,国内外社交网站发展越来越好,也更加的成熟,对用户体验的关注也更加注重了。
在国内做的比较好的社交网站有新浪微博,人人网,豆瓣等。
比如说新浪微博,它为用户提供了网站上的实时在线交流工具,方便用户在社交的同时更为直接的交流。
人人网则是基于实名制的,用户寻找好友更为有针对性。
豆瓣为用户提供了简单的页面和以兴趣为基础的交友体制。
这些都不同程度的增强了用户的社交体验
研究目标、研究内容和准备解决的问题,拟采取的方法、技术或设计(开发)工具:
1.目标:
用户可以自由的查找用户,关注用户。
并且可以实时的查看到好友的动态,可以对好友的动态反映自己的态度。
2.内容:
网站应实现好友搜索,好友添加,发表新鲜事,创建相册并上传照片,(评论,分享,赞,收藏)动态,修改个人资料,邀请好友等功能。
3.准备解决的问题:
(1)网站使用struts2,spring和hibernate技术,mvc模式开发。
(2)采用eclipse+tomcat+mysql作为开发工具。
(3)在技术上,对于javascript脚本使用和spring编程还不熟悉。
(导师根据学生的开题报告填写)
题目名称社交网站的设计与实现
毕业论文(设计、创作)要求
1.设计内容
基于javaweb的社交网站。
2.基本要求
社交网站要求至少实现以下内容:
(1)用户管理自己的个人信息,上传头像,邀请好友,添加好友。
(2)用户可以发表新鲜事,创建相册,上传照片。
(3)用户可以(评论,赞,分享,收藏)新鲜事和上传的照片。
(4)管理员可以冻结用户,发布站内公告
3.要解决的问题
(1)页面验证不完善,用户可以随意输入不合理的信息
(2)页面间的展示还有待完善
4.要求提交的成果
(1)毕业设计源程序
(2)论文
指导教师签名:
2017年1月10日
河南大学2017届毕业设计(论文、创作)中期检查表
(导师只填写评语,其他由学生填写)
题目名称:
社交网站的设计与实现
一、毕业设计(论文、创作)进展情况
实现了社交网站的基本页面设计。
用户模块:
个人资料和头像的修改以及好友添加等已经实现
内容模块:
新鲜事发布,创建相册,上传照片,评论,赞,分享,收藏等功能已实现。
后台模块:
管理员冻结用户,发布公告的功能也已实现
根据实际需要,用户可能会进行一些非法操作,如提交空内容,重复操作等,需要对各内容进行输入验证。
同时页面的展示还不够完善。
二、毕业设计(论文、创作)存在的问题及解决方案
存在的问题:
发表多内容类型(表情,图片,超链接)的新鲜事,日志。
解决方案:
通过采用kindeditor开源文本编辑器提供的富文本内容(表情,图片,超链接),将用户产生的内容以html形式存放入文本,然后提交到后台数据库存放。
展示的时候取出来直接放入jsp页面,即可显示丰富的内容效果。
还需要完善多张图片的插入显示效果。
存在的问题:
未登录用户的非法访问。
解决方案:
有时一些未注册或者未登录用户,可能会直接访问网站页面。
这可能会引发一些错误,所以应对此加以阻止。
通过为网站加入登录过滤器,对用户发出的请求加以过滤,非登录页面的直接访问,验证用户是否登录。
这样可以有效防止信息的泄露和错误发生。
三、学生本人对毕业设计阶段所做工作及进展情况的评价
社交网站的开发期间,对我的jsp、数据库、struts2、hibernate等知识有很大的提高,从中学到了一些没有用过的内容,如过滤器等,也巩固了以前的知识。
功能方面,用户模块的资料修改等功能已实现,内容模块中在收藏,添加好友上采用的ajax还不太熟练,并未能完全的体现出ajax的优点。
同时在页面的布局,跳转上还有待完善
四、指导教师对学生毕业设计(论文、创作)中期检查的评语
根据该生提交的毕业设计成果,以及该生和导师交流的情况,同意该生通过中期检查。
允许该生根据本人搜集的参考资料和已经完成的设计成果,开始整理毕业论文文档。
指导教师签名2017年4月10日
摘要
随着社会信息化的快速发展,网络所能为我们做的事情也越来越多,结交朋友,了解朋友的近况,这些都可以在网络上实现,使用户可以足不出户即可认识来自各地的人们。
社交网站就是基于此目的实现的。
社交网站,根据著名的六度理论,通过互联网认识朋友的朋友,来扩展自己的人脉,帮助用户组建起自己的社交圈。
在Web2.0时代,互联网更注重用户的交互作用,用户更多的参与网站内容制造,这使得社交网站在Web2.0时代飞速的发展。
本论文首先介绍了关于社交网站的课题背景与国内外发展的现状,对社交网站所需功能进行需求分析,接着详细描述了整个系统的总体设计和实现过程,并对开发过程中使用的技术进行介绍。
社交网站的实现用Java语言开发,具体技术采用SSH(Struts2、Hibernate、Spring),Jsp,Mysql数据库,实现了用户模块(资料修改,上传头像,登录/注册,添加好友),内容模块(新鲜事,评论,分享等),后台管理(公告发布,用户冻结)等功能。
关键词社交网站;java;struts2;hibernate;jsp
ABSTRACT
WiththerapiddevelopmentofSocialInformatization,networkcanhelpustodomoreandmore.Forexample,makingfriendsandunderstandfriend’sstatus,whichcanrealizedonthenetwork.Peoplemakefriendsfromallovertheworldeventhoughpeopleremainwithindoors.SocialNetworkingsiteisbasedonthispurpose.AccordingtothefamoustheoryofSixDegreesofSeparation,usersexpandtheirsocialcirclewithmakingfriendsoffriendsthroughtheInternet.IntheWeb2.0era,theInternetapplicationpayattentiontotheinteractionofusers.Usersparticipateingeneratewebcontent,whichmakestheSocialNetworkingsitedevelopquicklyintheWeb2.0era.
First,thisthesisintroducethetopicbackgroundofSocialNetworkingsiteanditsdevelopmentstatusathomeandabroad.Then,thesisproceedRequirementsAnalysisandOveralldesignofSocialNetworkingsite.And,itintroducesometechnologiesusedintheSocialNetworkingsite.
SocialNetworkingsitehasusedJAVAlanguage,SSH(Struts2、Hibernate、Spring),jspanddatabaseofmysql.Thefunctionofusermanagement(modifyinformation,upload,login/register),publishdynamic,adminmanagement(freezeuser,publishannoucement)havebeenimplemented.
Keywords:
SocialNetworkingsite;java;struts2;hibernate;jsp
第1章绪论
人们在社交网站上,可以认识来自四面八方的好友,关注他们发生的故事。
这些年来,以MySpace、Facebook等为代表的社交网站发展非常迅猛,各种各样的应用使得社交网站充满着生机,用户数量也惊人的快速增长,使得社交网站成为当前热门的互联网应用。
1.1课题背景及分析
随着Internet的普及和Web2.0时代的到来,相较于Web1.0时代的以用户通过浏览器获取信息,2.0时代引发了互联网发展的新方向。
Web2.0倡导用户参与网站内容制造。
就是说与web1.0网站单向信息发布的模式不同,web2.0网站的内容通常是用户发布的,使得用户既是网站内容的浏览者也是网站内容的制造者,这也就意味着web2.0网站为用户提供了更多参与的机会。
社交网站作为Web2.0的代表性应用,更是呈现出迅猛的发展势头。
1.2国内外在该方向的研究现状及分析
伴随Web2.0的兴起,各类社交网站也泉涌而出,除了一些专门的社交网站之外,几乎所有的门户都增加了SNS相关栏目,具有SNS的一些功能。
其中国内外著名的社交网站有:
Facebook,Twitter,人人网,开心网,新浪微博等。
这些网站的共同点就是都提供了丰富完善的社交功能,像用户发表新鲜事,评论,赞等,并且在此基础上添加更为丰富的第三方应用。
但是过多的内容展现,容易造成用户的视觉疲劳。
同时这些网站也有各自的特点。
新浪微博,在用户交友的过程中,又为用户提供了网站上的实时在线交流工具,方便用户在社交的同时更为直接的交流。
人人网则是基于实名制的,用户可以在其中找到多年以前的同学,甚至是小学同学,完善的好友寻找,可以极大的满足用户社交的需求。
1.3运行环境及开发工具
网站以java语言为基础开发,所以需要安装jdk。
这里采用jdk1.6版本。
数据库选用Mysql5。
服务器使用Tomcat6.0
开发工具使用Eclipse
操作系统在windowsxp、windows7下可运行。
在客户端,只需要用户安装一款主流浏览器即可,如Firefox,IE7以上浏览器等。
第2章相关技术
本章概括介绍了社交网站开发中所用的技术。
2.1Java语言
Java是由Sun公司推出的java面向对象程序设计语言和java平台的总称。
Java编程语言的风格十分接近C、C++语言。
Java是一个纯粹的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心。
Java舍弃了C语言中容易引起错误的指针(以引用取代)、运算符重载(operatoroverloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。
在Java1.5版本中,Java又引入了泛型编程(GenericProgramming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
Java语言的主要特性:
Java语言是简单的。
Java语言是面向对象的。
Java语言是分布式的。
Java语言是健壮的。
Java语言是安全的。
Java语言是解释型的。
Java语言是多线程的。
Java语言是动态的。
Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。
Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。
Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。
特别是Java企业应用编程接口(JavaEnterpriseAPIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。
2.2Struts2
Struts2是Struts的下一代产品,是在struts1和WebWork的技术基础上进行了合并的全新的Struts2框架。
其全新的Struts2的体系结构与Struts1的体系结构差别巨大。
Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品。
Struts把Servlet、JSP、自定义标签和信息资源(messageresources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。
2.3Hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
2.4Jsp
JSP:
(JavaServerPages)是一种跨平台的动态网页技术,在静态页面中嵌入Java代码片段,再由Web服务器中的JSP引擎来进行编译并执行嵌入的Java代码片段,生成的页面信息返回给客户端。
JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
2.5Spring
Spring是一个开源框架,它由RodJohnson创建。
它是为了解决企业应用开发的复杂性而创建的。
Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。
然而,Spring的用途不仅限于服务器端的开发。
从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
Spring框架由七个定义明确的模块组成,组成Spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。
如图2-1所示
图2-1Spring模块图
第3章网站总体设计
网站总体设计是根据用户提出的需求进行开发方案的拟定,以及对制定的方案进行开发前的详细设计,主要包括对网站功能模块的划分,数据库设计等。
3.1网站总体结构
根据网站采取的技术,对网站的整体结构进行设计和划分,下面是对总体结构的描述。
3.1.1网站运行流程
由于网站采用mvc模式开发,所以将网站整体划分为三层结构开发:
页面表示层,控制层,数据访问层。
网站运行流程结构如图3-1所示。
图3-1网站运行流程图
3.1.2网站功能模块
根据前面第二章的功能需求分析,将社交网站的功能模块设计成如图3-2所示。
图3-2网站功能模块图
下面介绍模块功能。
(1)用户模块:
该模块实现用户的基本操作,注册过的用户可以填写登录信息登录网站。
登录后可以按自己的需要修改个人资料,上传头像完善自己的信息。
还可以根据安全密码修改登录密码。
用户还能根据搜索到的好友,添加好友。
(2)内容模块:
用户可以在个人中心选择进行发表新鲜事,日志,创建相册,上传照片等操作产生用户动态,用户产生的动态可以被好友评论,分享,赞,收藏。
用户还可以在网站想现实中认识的人发送邀请注册的email。
(3)后台模块:
后台只能有管理员身份才能进入,管理员可以对用户进行冻结操作,被冻结的用户无法登录网站。
管理员还可以发布网站公告。
3.2网站设计
良好的网站分层对于后期的开发和扩展可以起到很大的作用。
网站采用SSH(Struts2、Spring、Hibernate)技术实现,采用MVC设计模式。
将网站整体划分为,数据访问层、业务逻辑层、表示层。
在struts的基础上将业务逻辑层再细分为service和action,由action控制流程跳转,service负责具体的业务逻辑。
下面主要介绍三层用到的公共部分。
3.2.1表示层设计
Web页面整体UI设计如图3-3所示:
图3-3WebUI图
其中header会跟随页面,方便用户快速点击功能,Mainpage内容为居中显示,leftbar提供功能列表。
表示层页面,主要使用Bootstrap库进行前台视觉开发,由Bootstrap提供的基础样式快速创建页面,并且能够提供一致整体的效果。
使用方式需我们向标签中添加class属性即可。
如:
Bootstrap库依赖于jQuery,将所需脚本和样式文件引入jsp页面,部署关键代码如下:
为改善用户体验,在部分功能上面采用Ajax技术实现,为了可复用ajax,减少代码量,将ajax对象的提供从中剥离,创建ajaxcommon.js文件以供多次使用。
关键代码如下:
functionGetXmlHttpObject()
{
varxmlHttp=null;
try
{
//Firefox,Opera8.0+,Safari
xmlHttp=newXMLHttpRequest();
}
catch(e)
{
//InternetExplorer
try
{
xmlHttp=newActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
xmlHttp=newActiveXObject("Microsoft.XMLHTTP");
}
}
returnxmlHttp;
}
3.2.2业务逻辑层设计
Action作为与表示层的接口,控制页面间的跳转,通过配置struts.xml文件来实现。
并将页面传递进来的数据进一步交给service处理。
为提高可扩展性,在action包下,创建BaseAction,其他action可以继承它,这样可以把一些重复性工作放到其中,其余action可专注于实现自身功能。
publicclassBaseActionextendsActionSupportimplementsServletRequestAware,ServletResponseAware{
·······················
}
Service层完成具体的业务逻辑,其中由spring维护的dao类进行数据
操作,spring的相关配置文件在applicationContext.xml下。
3.2.3数据访问层设计
数据访问层主要由Hibernate框架来完成。
创建dao类进行具体操作。
为提高复用可扩展。
系统提供IDao接口,由BaseDao来实现hibernate支持的增删改查基本操作。
复杂操作自行实现,只需要继承BaseDao即可。
关键代码如下:
IDao.java
publicinterfaceIDao{
publicvoidsaveObject(Objecto);
publicvoiddeleteObject(Objectobj);
publicvoidupdateObject(Objectobj);
publicvoiddeleteObject(Classclass1,Serializableserializable);
publicObjectgetObject(Classclass1,Serializableserializable);
}
BaseDao.java
publicclassBaseDaoextendsHibernateDaoSupportimplementsIDao{
}
3.2.4网站代码目录
网站后台代码结构如图3-4所示:
图3-4后台代码目录
代码目录:
(1)action包存放控制层的代码
(2)dao包存放数据库接口操作的代码
(3)filter包存放自定义过滤器
(4)hibernate包下的cfg存放hibernate配置文件
(5)hibernate包下的pojo存放数据实体类
(6)hibernate包下的xml存放实体配置文件
(7)service包存放业务逻辑操作的代码
(8)vo包存放页面实体
(9)util包存放网站公用的工具类
网站前台页面及相关文件目录如图3-5所示:
图3-5前台代码目录
WebContent目录下存放网站前台页面及样式表,图片,脚本文件等
(1)css目录放样式表
(2)editor目录存放kindeditor插件
(3)img包括网站图片
(4)js存放网站的脚本文件
(5)page分别存放网站页面
(6)WEB-INF/lib存放网站配置文件及所需jar包
3.3数据库设计
根据功能模块划分,建立数据库。
下面是对数据库设计的描述。
3.3.1数据库表设计
1.用户表(snsuser)
包括用户的登录信息,和用户的基本资料,如表3-1所示
表3-1snsuser
字段名称
数据类型
可否为空
说明
username
varchar
不可
用户名
password
varchar
不可
密码
varchar
不可
邮箱
secure
varchar
可
安全问题
secureanswer
varchar
可
安全问题答案
role
varchar
不可
用户角色
status
varchar
不可
账号状态
createtime
date
可
创建时间
lastlogin
date
可
最后登录
residence
varchar
可
居住地
school
varchar
可
学校
gender
varchar
可
性别
birthday
date
可
生日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 社交 网站 设计 实现