网站首页  词典首页

请输入您要查询的论文:

 

标题 基于web服务器集群的师生互动社区的设计与实现
范文

    赵懿谦 徐其波 程细柱 陈智健

    

    

    

    摘要:随着高校校园网的建设与发展,基于校园网的各种论坛也是层出不穷,但是大多数校园论坛都是以娱乐交流为主、功能有限。因此,该课题组结合高校的实际情况开发了一个方便老师和学生进行学术交流和提问与解答的WEB平台,该平台采用B/S的体系结构,基于Spring+SpringMVC+Mybatis框架,采用Mybatis数据库+Redis缓存数据库进行开发,平台的主要功能是老师和学生可以提出自己的问题,也可以解答别人提出的问题,还可以发表自己对不同知识点的见解,并记录自己的学习过程,同时还可以在该论坛上组建自己的项目团队,共享各种学习资源。作为老师用户,还可以上传自己的研究项目和发表的期刊论文。该文介绍了开发该平台的关键技术,同时还介绍了Nginx反向代理服务器在本系统中的作用。

    关键词:校园论坛;Java;Redis;Nginx

    中图分类号:TP311.52? ?文献标识码:A

    文章编号:1009-3044(2019)16-0065-05

    开放科学(资源服务)标识码(OSID):

    1 引言

    为了方便高校老师之间共享教学资源和科研成果,分享教学经验,进行学术交流,以及老师与学生之间提问与解答,本课题组共同开发了一个“基于web服务器集群的师生互动平台”网站。

    该网站允许高校老师在自己的个人主页中上传自己的教学经验,分享课题研究困难的解决办法,分享相关教学素材、所带团队研究学习项目进度等资源,达到资源互享,学科互补的效果。

    而且,本网站还提供高校学生课后与本学科或跨学科老师交流互动、难点问答、学校硬件资源借用等功能,达到教学资源利用最大化。学生可以通过课程类别搜索到相应的老师,发起疑难点的提问,师生间通過交流互动解决课程难题。而且学生或老师可以组成团队进行实验研究。

    另外,利用该平台,学生可以发表自己的参赛心得,展示自己的作品,供其他人浏览学习,同时还可以在论坛模块开启一些学术话题讨论,还可以解答别人的问题,让知识真正活起来,更加贴近现实生活。

    该平台能较好地整合优质的教学资源,有利于激发学生学习兴趣、培养学生独立思考和动手能力、规范教学管理、提高教学质量,使教学资源利用率达到最大化。如果推广使用,可以产生较好的经济效益。

    2 系统分析

    2.1 可行性分析

    2.1.1 技术和经济可行性

    本系统使用Java作为开发语言,使用Spring + SpingMVC + Mybatis作为系统的开发架构[1],数据库使用Mysql,缓存数据库使用Redis,视图层使用freeMarker模板引擎,整个项目采用Maven进行搭建。系统开发完成后部署到基于Nginx反向服务器的Tomcat集群上。因为上述的各功能组件都是成熟稳定,并且开源免费,因此在技术和经济方面是可行的。

    2.2 需求分析

    2.2.1 功能需求

    通过对多个学校以及网络上相关论坛的考察,结合老师与学生的具体需求,本系统主要包含如下几大功能模块。

    1)问答模块:登录用户可以在该模块进行提问与回答。

    2)博客模块:对于喜欢记录学习过程的用户,可以通过该模块,发表自己对某些知识点的见解。

    3)团队模块:用户可以通过发表一个需要研究的项目从而招募成员。

    4)资源模块:用户可以通过此模块,共享自己的资源或者下载自己喜欢的资源。

    5)科研成果展示模块:该功能只有老师才能使用,老师用户可以上传自己的研究项目或者发表的论文,从而让更多学生吸收到老师的研究成果。

    3 系统总体设计

    3.1 系统模块的组成

    3.1.1 系统模块相对应功能的概要描述。

    登录模块:用户可以使用账户和密码登录。

    学生注册模块:学生填写学号、性别、年级、就读专业、邮箱等信息完成注册。

    个人信息管理模块:用户可以在该功能模块中修改自己的个人信息。

    关注和粉丝模块:用户可以通过该功能模块查看自己关注的用户,也可对关注用户进行取关,同时也可以查看自己的粉丝,删除自己的粉丝。

    博客模块:用户可以发表自己的博客,也可对博客进行收藏,点赞,评论,举报。

    老师科研模块:老师可以在该模块管理自己的论文和课题。

    团队管理模块:用户可以通过该功能模块申请加入团队,也可以管理自己的团队。

    用户交流模块:用户可以在该模块下提出问题,回答问题,也可以收藏问题和回答,也可以对提问和回答进行点赞,评论,举报。

    项目管理模块:老师用户可以通过该模块管理和展示自己的项目。

    后台管理模块:管理员进行注销用户和管理举报消息和删除违规消息。

    权限管理模块:为用户账户授予权限及收回权限。

    3.1.2 系统模块之间的关系

    该系统分为前台模块和后台管理模块,分别如图1、图2所示。

    3.2 系统的整体流程

    这里通过系统的流程图来表示该系统的整体流程,如图。

    4 数据库设计

    4.1 数据库整体设计

    这里通过er图模型来表示出该系统各个实体之间的关系。问题模块如图4所示;资源模块、关注和粉丝模块、团队模块的er图如图5所示;,博客和项目模块er图如图6所示;私信模块、权限管理模块,论文模块的er图如图7所示。

    5 系统详细设计与实现

    5.1 登录注册模块的设计实现

    用户在登录页面(如图6所示),填写上用户名、密码。点击登录,后台验证正确,就可以进入系统首页(如图8所示),否则,就提示账号密码不匹配。如果用户没有注册就点击注册新用户,在注册页面(如图7所示)填写注册信息,后台录入数据,注册成功,跳转到登录页面,否则,提示注册失败。

    5.2 问答模块的设计实现

    1)发起提问

    在提问页面,描述好问题信息,点击提问按键,后台入库,跳转到浏览问题页面。

    2)举报提问

    在提问浏览页面,点击举报按键,填写举报原因,提交后台处理。

    3)回复评论

    浏览回答页面上,点击评论按键,填写评论,点击提交。

    4)举报回答

    在回答浏览页面,点击的举报按键,填写好举报原因,提交后台。

    5.3 资源共享模块的设计实现

    该功能支持最大500M的大文件的上传,用户点击“上传资源”,选择目标资源,即可上传,如果中途上传中断,该功能还支持资源的续传[2]。

    5.4 团队模块的设计实现

    1)组建团队

    在团队招募的页面中,点击“招募团队”,详细填写团队信息,点击提交,新建团队出现在我的团队页面中。

    2)申请加入团队

    浏览团队列表,点击某个招募中的团队,进入该团队的详细页面,点击“申请加入”,填好申请信息,提交给后台。

    3)上传资源到团队

    功能说明:进入我的团队,点击资源上传按键,选好上传的资源,将资源给服务器存储入库,成功,告诉前端。否则提示重传。

    4)从团队下载资源

    进入我的团队,点击资源下载按键。后台返回下载的资源。

    5)团队成员管理

    进入我的团队,如果用户是团长,点击踢除按键,踢除团队成员;点击“同意”入队申请,就添加了一名队员,或者点击“驳回”,就拒绝了他的入队申请;点击“团队解散”,就是将团队解散;点击修改招募时间,就修改了截止招募日期。

    如果用户是队员,点击退出团队,向后台入库“退队申请”,等团长同意,即可退队。

    5.5 论文模块的设计实现

    1)评论论文

    浏览论文的页面上,填写评论,点击发表评论。

    2)举报论文

    浏览论文的页面上,点击“举报”,填写举报原因,提交后台处理。

    3)回复评论

    浏览论文的页面上,点击“回复”,填写内容,提交后台,页面显示回复内容。

    5.6 项目模块的设计实现

    1)评论项目

    浏览项目的页面上,填写评论,点击发表评论。

    2)举报项目

    浏览项目的页面上,点击“举报”,填写举报原因,提交后台处理。

    3)回复评论

    浏览项目的页面上,点击“回复”,填写内容,提交后台,页面显示回复内容。

    5.7 博客模块的设计实现

    1)评论博客

    浏览博客的页面上,填写评论,点击发表评论。

    2)举报博客

    浏览博客的页面上,点击“举报”,填写举报原因,提交后台处理。

    3)回复评论

    浏览博客的页面上,点击“回复”,填写内容,提交后台。

    5.8 私信的设计实现

    在私信发送页面上,选择联系人,填写信息,点击发送。联系人收到私信。

    5.9 个人信息管理的设计实现

    1)修改用户的基本信息

    在个人信息页面,点击“修改”,填写个人基本信息,点击“保存”。

    2)修改密码

    在个人信息页面,点击“修改密码”,填写新密码,点击“确认”。

    5.10 关注和粉丝模块的设计实现

    浏览其他用户信息时,点击“关注”,即关注了用户,成为他的粉丝;

    浏览我的关注页面,点击“取消关注”,即退出他的粉丝。

    5.11 收藏模块的设计实现

    浏览博客、提问、问题的回答时,点击收藏;在我的收藏中,点击取消,取消相应资源的收藏;

    5.12后台管理模块的设计实现

    1) 权限管理

    在管理端,创建、删除权限 和 角色;为用户账户授予权限及收回权限。

    2) 举报管理

    审核举报消息,同意或驳回。

    3) 帖子管理

    删除违规的论文、提问、回答评论、资源、团队

    4) 用户管理

    管理员进行注销用户

    5.13 对系统运行时的session进行持久化处理

    本系统是通过重写shiro框架中的类WebSessionManager中的SessionDao属性来对系统运行时的session进行持久化处理。具体操作如下:

    1) 新建一个继承AbstractSessionDAO的类:RedisSessionDao,然后重写增删改方法,让session的获取和创建都是经过我们配置好的Redis服务器。

    2) 测试上述步骤时发现,每次访问服务器的请求,都需要从redis读取session至少7次,这显然会导致redis的高负载,很不利于系统的稳定,因此,接下来,我们要重写读取redis中Session的规则。

    3) Shiro中控制读取session逻辑的是 DefaultWebSessionManager中的 retrieveSession()方法,因此我们需要新建一个继承DefaultWebSessionManager的类CustomSessionManager,然后将方法retrieveSession()改写为:只当首次访问时才从redis中取session接下来的请求都从request中获取请求。

    5.14 项目的部署

    为了让系统应对高并发量的请求,这里将把系统部署到基于Nginx反向代理服务器的Tomcat集群中,具体操作如下:

    然后在浏览器输入nginx服务器的地址+项目根路径,即nginx服务器的ip地址+项目根路径对项目进行访问,多次访问发现nginx将多次请求,随机的分发到了三个tomcat服务器中的本系统进行处理。然后打开redis,发现redis只持久化了一份session。

    因此,整个服务器集群搭建成功,并且session的持久化也成功了。

    参考文献:

    [1] 舒礼莲.基于SpringMVC的Web應用开发[J].计算机与现代化, 2013(11).

    [2] CSDN网站.Java实现浏览器端大文件分片上传[Z].2017.

    [3] 郝淑惠.基于Nginx的Web服务器负载均衡策略改进与实现[J].河套学院网络信息中心,2019(2).

    【通联编辑:梁书】

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/2/11 3:42:01