基BS架构网络教学台设计实现
Design and Implementation of Network Teaching
Platform Based on B S Architecture
容摘
网络信息时代出现行业互联网发展互联网+概念现中国网络教育火茶百花齐放职业教育中学教育留学教学兴趣教育等等利互联网便捷性进行着知识传播设计款网络教育台符合潮流
具高性拓展系统必须清晰系统架构模块模块间高聚低耦合系统高发低延迟等等非功需求考验着设计者力
项目采BS架构模式开发应spring系列企业级框架开发获模块间高聚低耦合前台vuejselement组件开发台spring系列框架整合MyBatis RabbitMQ ElasticSearch Eurek等软件进行开发
系统前台台模块组成里指前台户操作部分台指教育提供者理员操作部分中台分页面理课程理课程理面教育提供者页面理面系统理员
关键词 :spring 教育 高聚低耦合
Abstract
Today is the era of network information and many industries have relied on the development of the Internet This is the concept of Internet + Nowadays China's online education is in full swing with hundreds of flowers vocational education primary and secondary education study abroad teaching interest education etc all using the convenience of the Internet to spread knowledge Therefore designing an online education platform is also in line with the trend
A highly available and extensible system must have a clear system architecture high cohesion and low coupling between modules high concurrency and low latency etc Nonfunctional requirements test the ability of designers
This project is developed using B S architecture mode and spring series enterpriselevel framework development is applied to obtain high cohesion and low coupling between modules The foreground uses vuejs and element component development and the background uses spring series frameworks to integrate MyBatis RabbitMQ ElasticSearch Eurek and other software for development
This system is mainly composed of the front desk and the background module The front desk here refers to the part operated by the user and the background refers to the part operated by the education provider and the administrator Among them the background is divided into page management and course management Course management is for education providers and page management is for system administrators
Keywords spring education high cohesion low coupling
目录
第章 绪 1
11背景 1
12国外发展现状 1
13系统行性分析 1
131 技术行性 1
132 济行性 2
133 操作行性 2
第二章 系统开发工具相关技术 3
21 系统开发工具 3
211 IntellIj Idea 3
212 MongoD 3
213 MySQL 3
214 Maven理工具 3
22 系统台技术 3
221 Spring 3
222 MyBatis 3
223 RabbitMQ 4
224 ElasticSearch 4
23前端开发技术 4
231 Vuejs 4
232 Nuxtjs 4
233 Ajax技术 4
234 Jquery 4
225 FreeMarker 4
226 Eureka 4
第三章 系统分析 5
31系统功分析 5
32系统功性需求分析 6
321 前台户功需求分析 6
322 台户功需求分析 7
第四章 系统设计 9
41系统体系架构设计概述 9
42系统数库设计概述 10
421 Monogdb数库 10
422 Mysql数库 11
第五章 系统实现 13
51页面理 13
511分页查询实现 13
512 定义查询 14
513增删改页面 14
52页面预览 15
53页面发布 15
54课程理 15
55课程计划 16
56 微服务理 18
57微服务交互 18
58 负载均衡 18
59课程预览 18
510课程发布 18
511课程搜索 19
512文件传 19
513 流媒体 19
514视频处理 20
515 户认证 21
516 授权 22
517异常处理 22
518 页面静态化 23
第六章 系统测试 25
61系统功性测试 25
第七章 结展 29
71总结结 29
72 未展 29
参考文献 30
致谢 31
第章 绪
11背景
传统教育师生面面交流般情况老师需面十学生样果想知学生纲接受教育学生学生间水样样造成某学生正确接受知识方法
现利网络改善种情况利网络进行知识传播广教育提供者台展身手纷纷推出独特教育方法学生选择接受课程网络体量课程会更循环播放学生回头复样高效教育应运生
疫情影响师生身体健康学生学落进行网络教学显十分重
12国外发展现状
种教育方式具开放性享性永久性便利性等特点样满足群需求减低教育成国外种发展趋势迅速扩张中
13系统行性分析
131 技术行性
项目采前流行前端开发前端项目独立部署间通网络http协议进行通信端实现微服务层采spring boot企业级框架加中间件进行开发中spring boot中间件支持较例rabbitmqelasticsearch等说开发难度
处:针户提供页面例pc 户提供页面移动端户提供页面微服务层样没必针户提供微服务前端满足需求调服务层实现需求系统维护业务扩展处
132 济行性
通调查研究项目建设运成接受范围中项目线带济收益非常观项目预算支撑整项目研发中运行项目需视频处理服务器采戴尔站式服务器处理方案价格实惠网站运营需监维护员名般网站运营员配置中太区
133 操作行性
项目没国家政策相背离没会违反法律法规符合社会伦理道德侵权妨碍等责问题项目运行方式员组织行理制度员素质操作方式分析出结果显示行
第二章 系统开发工具相关技术
21 系统开发工具
211 IntellIj Idea
款功强性化开发工具友代码提示功
212 MongoD
非关系型数库具分布式文件存储功wen中采获高性数存储方案第三方支持丰富
213 MySQL
MySQL数库款关系型数库巧运行效率高
214 Maven理工具
款基象模型概念设计软件理工具功方便户导入jar包赖IntellIj Idea集成完善
22 系统台技术
221 Spring
Spring轻量企业级开发框架bean象dao组件service组件容器处理样做处量复杂代码变非常简洁降低代码耦合度期维护扩展升级中非常轻松中spring data操作MongoDB数库十分方便Spring Security Oauth2系统权限控制十分优秀
222 MyBatis
款持久层框架部实现JDBC功配置者XML文件配置映射信息讲数模型象应
223 RabbitMQ
分布式系统中进行消息转发
224 ElasticSearch
系统容进行索引化然支持户实时搜索容
23 前端开发技术
231 Vuejs
js渐进式框架
232 Nuxtjs
js框架服务器进行渲染
233 Ajax技术
窗体顶端
Ajax交互式网站开发技术实现动态更新(局部)容
234 Jquery
功丰富js库
225 FreeMarker
模板引擎做静态页面页面展示
226 Eureka
服务注册中心理微服务
第三章 系统分析
章节会结合前面介绍开发技术进行分析功性需求非功性需求入手进行详细阐述开发确立明确目标
31系统功分析
展现教育模式真种样例腾讯课堂网易云课堂B2B2C模式模式教育机构提供台授课开发权限进行授课中国学MOOC采B2C模式台严谨提供课程质量较优秀项目采B2B2C模式企业提供服务
系统前台模块台理组成前台面普通户提供户登录搜索学留言等功台理分页面理课程理课程理面教育提供者教育提供者台理页面进行课程介绍页面信息增伤改插课程目录编写传视频架课程四模块页面理面系统理员理网站中模块创建修改发布中功模块示意图见图31示
图31系统功模块示意图
32系统功性需求分析
节具体功模块入手前台模块台模块两方面进行详细分析介绍点功需求
321 前台户功需求分析
(1) 门户
门户网站页进入门户显示轮播图课程推介等模块户登陆查课程详细信息搜索课程操作分类游客点击查视频者登陆时跳转登陆界面认证通跳转登陆前页面
(2) 登陆
点击登陆钮填写登陆信息认证通时提示账号密码错误账号存时提示账号存登陆成功跳转登陆前页面
(3) 注册
点击注册钮进入注册页面注册信息户名年龄性手机号码邮箱信息等中邮箱手机号码允许重复账号应邮箱手机号码面信息必填信息余字段信息适进行添加
(4) 收藏
户点击收藏钮时需判断户否已登陆已登录判断前课程否已收藏已收藏提示已收藏须重复添加否数库插入收藏信息前台提示已收藏
(5) 留言
视频方留言前需判断户否登陆未登录跳转登陆页面否提交户留言
(6) 购买课程
购买课程前需判断户否登陆未登录跳转登陆页面否提示提示户否购买确定购买跳转视频播放页面
(7) 课程分类
门户课程分类信息设置3分类课程属类型二年级分类三行业分类意点击某分类字段跳转相应分类列表
(8) 课程推荐
门户课程推荐区域推荐目前做详细求机显示
(9) 课程搜索
搜索课程名称时显示课程信息搜索精确查询模糊查询里设置分页显示
(10) 课程播放
点击播放视频钮跳转播放页面默认播放第视频
322 台户功需求分析
(1) 页面理
网站划分子站点例轮播图分类导航栏课程推介栏属门户站点课程播放属课程站点学中心属学站点等等需理页面系统方便期页面进行增删改查
(2) 页面发布
通事先增加页面点击发布钮发送远程服务器整添加发布程程序动执行需理员登陆服务器完成操作
(3) 页面预览
理员通页面预览预览页面部署服务器效果
(4) 课程理
制作课程理系统前端定义模板户模板填写课程信息课程详情页面里实现课程增加删修改新增里需分页显示中课程添加操作需包含容课程种详细信息例课程简介教师简介建议评语等等课程目录信息课程设置3级目录分课程名称课程章节课程节样目录结构课程图片必须课程设置张广告图吸引学生点击课程视频步骤关键中传视频必须目录结构逐传
(5) 课程预览
保证课程发布准确误发布前必须进行课程预览课程预览显示页面必须课程发布页面保持致
(6) 课程发布
点击课程发布学生前台页面课程信息进入课程页面学
(7) 文件系统
项目中需传图片视频文档文件提高系统重性必须制作文件系统统理文件提供传删查询功
(8) 视频处理
原始视频必须编码处理
第四章 系统设计
章节系统需求分析进行详细设计中某功点进行更加具体分析做完善拓展
41系统体系架构设计概述
UI层:系统独立部署里前端分离开发分水线里属前端里实现户界面没实际数模型通ajax请求微服务层数里协议http协议
微服务层:系统独立部署里属端划分块服务颗粒度分细服务服务间交互少业务扩展性维护性例双11订单服务部署服务器点户理部署服务器少点
数层:提供数持久化操作
种技术架构处UI层针pc户开发模块针H5户开发模块针户开发界面微服务层划分模块模块单独外提供服务需户开发服务种架构早期单体式应明显优势(代码写工程中包成war包部署Tomcat中)
42系统数库设计概述
421Monogdb数库
edu_page 页面信息
字段名
否键
否空
字段说明
_id
否
Id
siteId
否
否
站点id
pageName
否
否
页面名称
pageAlise
否
否
页面名
pageWebPath
否
否
页面相路径
path
否
否
页面物理路径
time
否
否
时间
template
否
否
页面属模板id
dataurl
否
否
存储GirdFs路径
edu_side站点集合
字段名
否键
否空
字段说明
_id
否
Id
name
否
否
站点名称
port
否
否
端口
domain
否
否
域名
time
否
否
时间
edu_config模板数
字段名
否键
否空
字段说明
_id
否
Id
name
否
否
模板名称
model
否
否
模板数类型
Filesystem文件系统索引
字段名
否键
否空
字段说明
_id
否
Id
filepath
否
否
文件路径
size
否
否
name
否
否
名字
type
否
否
类型
422Mysql数库
template页面模板
字段名
否键
否空
字段说明
_id
否
Id
name
否
否
模板名称
siteid
否
否
站点id
templatefileid
否
否
模板id
time
否
否
时间
sys_dictionary数字典
字段名
否键
否空
字段说明
_id
否
Id
type
否
否
字典代码
name
否
否
名称
value
否
否
数类型
course_pic课程图片
字段名
否键
否空
字段说明
_id
否
Id
Pic
否
否
图片id
category课程分类
字段名
否键
否空
字段说明
_id
否
Id
name
否
否
分类名称
label
否
否
标签
parentid
否
否
父结点
isshow
否
否
否显示
orerby
否
否
排序字段
isleaf
否
否
否孩子
Course_base
字段名
否键
否空
字段说明
_id
否
Id
name
否
否
课程名称
mt
否
否
课程分类
status
否
否
状态
descriprtion
否
否
课程介绍
nt
否
否
分类
第五章 系统实现
51页面理
需门户中进行增删改查首先需建立页面查询接口接口基Http Get请求响Json数目录结构图51:
图51
中api放edu_api模块中接口实现类放edu_mange模块中样做处:
1方便统理接口
2微服务相互调时基接口远程调微服务赖api意微服务接口
3换框架时需改实现类改接口
511分页查询实现
采sprint data MongoDB操作数库先定义查询接口CmsPageRepository继承MongoRepository样置api操作数库中调类sprint data MongoDB findaAll方法实现分页操作
orgSpringframeworkdatadomainPage
orgspringframeworkdatadomainPageRequest
orgspringframeworkdatadomainPageable
512 定义查询
输入查询条件查询符合条件页面信息中输入站点id页面id实现精确查询输入页面名实现模糊查询实现功关键定义条件匹配器匹配器放入findaAll方法代码入表512示
条件匹配器
ExampleMatcher exampleMatcher ExampleMatchermatching()
设置匹配方法默认精确匹配先匹配属性告诉匹配器选择匹配方法
exampleMatcher exampleMatcherwithMatcher(pageNameExampleMatcherGenericPropertyMatcherscontains())包涵
exampleMatcherwithMatcher(pageNameExampleMatcherGenericPropertyMatchersstartsWith())前缀匹配
定义Example放入条件匹配器EduPage放Example中
Example
findAll(eduPageExamplepageable)
表512
513增删改页面
增:新增页面求检查页面否存存新增利sprint data MongoDB findBy方法实现条记录idMongoDB数库行创建法事先知检查页面必须唯标识采站点id页面路径页面名称定义索引设定页面唯标识
删:点击编辑钮修改页面信息实现程面异处略
改:执行删操作实现程异处略
52页面预览
MongoDB页面集合中条记录页面中页面url信息url获取页面模板中模板前台程序员提供
首先根页面id查询具体页面url然远程请求获数模型然程序模板数结合生成静态化数利MongoDBgridfs进行分布式存储静态化数响应浏览器
53页面发布
门户站点中页面属站点页面发布应该部署属站点服务器例修改轮播图图片改修改轮播图部署发门户服务器动学中心服务器
里消息中间件(RabitMQ)监听队列页面属站点id
rabitmq路(routing)模式监听站点id简言站点id作routing Key样实现页面会发布属服务器
54课程理
模块面教育机构老师统理课程里实际spring data JpaMybatis操作mysql数库中spring data Jpa表基增删改查Mybatis复杂表连接查询druid理连接池(阿里巴巴提供数库连接池已spring整合起)里细分:
查询:里涉表关联查询mybatisPage helper分页插件尅实现分页查询功具体拦截sql语句添加分页语句实现分页查询
分类:课程必须选择分类信息门户分类选择中需显示应类目课程先建立分类查询接口接口响应格式前端求定义
数字典:课程中信息信息易理维护通建立数字字典集合实现样做处业务分类理解决硬编码问题例添加课程选择分类信息时果采固定写法期需更改信息修改页面样明显符合易维护需求里数字典获取果修改修改数字典提高系统维护性数字典MongoDB中创建详细信息见数库设计
新增课程:点击新增键调前端页面填写信息实现程页面理实现操作异里进行说明
修改课程:进入理页面编辑课程基信息编辑课程图片编辑信息传文件等实现技术页面理模块相
55课程计划
课程计划课程目录里设置目录三级第课程名称第二课程章节第三课程章节通点击章节播放视频讲课程目录设置成树型结构树根树枝组成详细数模型见数库设置章节
sql设置:采连接方式进行查询具体sql语句表551
SELECT
aid one_id
apname one_pname
bid two_id
bpname two_pname
cid three_id
cpname three_pname
FROM
teachplan a
LEFT JOIN teachplan b
ON aid bparentid
LEFT JOIN teachplan c
ON bid cparentid
WHERE aparentid '0'
AND acourseid '课程id'
ORDER BY aorderby
borderby
corderby
表551
Dao层:Mybatis配置文件中制作mapper映射文件见表552