基于Java EE架构的WIKI平台研究与设计
2023-09-06王磊张红梅
王磊,张红梅
(1.蚌埠学院 计算机与信息工程学院,安徽 蚌埠233000;2.安徽电子信息职业技术学院,安徽 蚌埠233000)
传统教育方法暴露出师生之间缺乏互动、学生只能被动接受等问题,为促进师生互动、优化分配教育资源,利用互联网这一信息传播渠道,架设一个课程交流平台,让教师和学生能够感受WIKI多人协作的便捷.众多学者在此领域进行不同探索,文献[1]提出一种基于语义WIKI构建E-Learning平台的方案,利用语义技术,让存储在平台中的资源彼此产生紧密的联系,文献[2]提出一种基于WIKI的汽车人机工程学教学方法研究.
纵观国内外同类平台或网站的发展现状,主要缺陷和不足表现在以下几个方面:第一,开设在平台上的各门课程之间缺乏紧密联系,学生在选择课程时缺乏推荐和引导,不能自主构建完整的课程体系.第二,老师在面对庞大的学生群体时,如何与他们保持良好的交流和互动,让学生向老师反馈学习情况,老师也能适时得到反馈,对教学安排做出针对性的调整.第三,在课程交流平台上学习时,由于学习时间和地点不受限制,笔记、作业、试卷等积累下来的学习材料也变得零散化、碎片化,如何有效地收集整理好这些材料,巩固学习成果,也是一个难题.
1 需求分析
目前,市场上优秀的同类竞争产品有中国大学MOOC、学堂在线、Coursera等.针对这些产品及其用户,通过亲自使用产品、发放网络调查问卷、与用户线上交流等手段完成市场调研工作,获取课程交流平台用户需求.调研发现,学生希望在该平台上浏览和搜索课程,找到感兴趣的课程进行学习,并且与授课教师保持交流,记录和整理学习成果.教师希望在该平台上方便地创建和修改课程,管理参与课程的学生,及时掌握学生的学习情况,为学生解决学习过程中遇到的难题,取得更好的教学成果.借助PowerDesign工具进行建模,设计WIKI课程平台用例模型,如图1所示.
图1 WIKI课程平台用例模型
2 系统设计
2.1 总体系统架构
通过课程学习平台的建设与调研[3],利用现有计算机软硬件资源,设计平台总体系统架构,如图2所示.平台设计遵循Java EE架构,表现层负责接收客户端请求和转发请求;业务层主要负责处理请求,并同时封装事务管理和日志记录;持久层负责数据库与实体之间的操作.
图2 平台的总体系统架构
2.2 数据库设计
系统采用MySQL 8.0.11版本数据库,编码为UTF-8,共有11个表,分别是学生用户信息表(tb_students)、教师用户信息表(tb_teachers)、课程信息表(tb_courses)、学生兴趣表(tb_categories)、消息信息表(tb_notices)、教师课程表(tb_tc)、习题信息表(tb_questions)、笔记信息表(tb_notes)、学生课程表(tb_sc)、试卷/作业信息表(tb_exams)、学生答题表(tb_sq).平台映射到底层数据库表的实体类共有7种:Teacher类、Student类、Course类、Notice类、Question类、Note类、Exam类.它们分别对应tb_teachers表、tb_students表、tb_courses表、tb_notices表、tb_questions表、tb_notes表和tb_exams表.使用Power Designer绘制的课程交流平台物理数据模型如图3所示.
图3 平台物理数据模型
2.3 核心技术介绍
2.3.1 MyBatis框架作用
业务数据存储在关系型数据表中,实现业务逻辑的代码由Java面向对象程序设计语言编写,使用MyBatis框架在两者之间构建ORM映射关系.MyBatis框架在原生的JDBC接口基础上进行合理封装,将SQL语句从业务逻辑代码中剥离出来,在配置文件中集中管理,或以注释形式分散在DAO层接口.当用户在平台上进行各项操作时,服务器内部借助DAO对底层数据库进行相应操作.
2.3.2 Spring框架作用
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,可以无缝对接Spring MVC与MyBatis.在系统开发过程中,使用AOP技术对关键日志进行切入.作为本平台的核心部分,提供控制反转容器的Spring框架,充当控制和产生业务逻辑层组件和数据库访问对象层组件的实例工厂.为了降低各组件之间的依赖程度,Spring框架凭借其依赖注入的特性,将它们以松耦合的方式组合在一起.采用面向接口编程的方式对数据访问对象层和业务逻辑层进行编码,提高平台的可维护性、可扩展性,降低系统重构的成本和风险.Spring通过声明式事务机制,在配置文件中声明事务,实现业务逻辑层代码与事务策略的解耦,使业务逻辑组件更专注于业务功能的实现,方便在不同事务策略间转换.
2.3.3 Spring MVC框架作用
Spring MVC框架是Java Web应用中处理和转发用户请求的重要部分.在Spring MVC框架的管理下,对于平台所有用户的请求,Dispatcher Servlet负责拦截,经过URL解析之后,派发给相应的Controller.控制层方法通过调用业务逻辑层接口处理用户请求,返回Model And View对象,Spring MVC框架选择合适的视图解析器对视图进行渲染,最终将结果返回到用户端.
3 系统实现
刘杰等提出的在线教育平台的设计与实现[4],杨世文等提出学术论坛管理系统[5]均以Spring、Spring MVC、MyBatis三大框架为核心进行设计开发.前端使用BootStrap框架进行自适应布局,利用Ajax异步交互以减轻服务器压力.平台使用JSP和jQuery技术构建表现层,负责收集用户请求数据和动态展示业务数据;使用EL、JSTL表达式以及Spring标签库替代传统开发中Java脚本.
3.1 模块划分
平台主要功能模块划分为“注册登录”“课程浏览”“我的课程”“消息管理”“学习记录”“课程管理”和“课程发布”7大部分.平台模块划分如图4所示.
图4 平台模块划分
“课程浏览”模块分为“所有课程”和“搜索课程”两个子模块.在“所有课程”子模块中,学生可以浏览所有课程基本信息和课程分类,根据课程开始日期,挑选尚未开始、已经结束或是正在进行的课程.
“我的课程”模块分为“已结束”“正在进行”“即将开始”和“推荐课程”4个子模块.在“已结束”模块中,学生可以查看到自己过往所学的每一门课程的基本信息,包括总成绩、最高分、最低分、不及格课程数等信息,以便全面地掌握历史学习情况.在“正在进行/即将开始”模块中,学生可以查看自修课程状态.在“推荐课程”模块中,结合学生用户注册时填写的兴趣学科、学习过的课程和对课程的评分等特征数据,利用Weka提供的关联规则挖掘的推荐算法[6],可以为每一位学生呈现符合自身个性化学习需要的课程.同时学生可以拒绝或接受这些推荐,这一反馈将作为算法模型进一步迭代的依据.
“课程发布”模块分为“发布考试”“发布作业”和“发布笔记”3个子模块.在“发布考试”模块中,教师可以为自己教授的某一门课程创建一份试卷,包括客观题和主观题,设置考试时间,也可以审阅每一位学生考试的答题情况,作出相应的判分和回复.
“发布作业”模块的功能与“发布考试”模块相近,在此不再赘述.
3.2 数据字典
数据字典是描述数据的信息集合,在用户需求分析阶段,对原始数据和产出数据进行描述时,不必注意数据在计算机中的具体的存储方式和数据处理的系统.但随着设计过程的进展,必须将数据的概念和逻辑与数据模型和实际的实现方式联系起来.这时,数据在系统中的标识符(数据项或字段名称)、存储类型(数据项或字段类型)和存储空间(数据项或字段长度)就需要确定下来,以达到数据输入、存储、显示、交换和处理等功能模块的需要.下面对系统涉及的主要数据字典进行介绍.
3.2.1 学生用户数据字典
存储学生用户信息的是tb_students表.其中username字段是该表的唯一主键,通过它区分不同的学生用户.password字段存储学生用户的账号密码,realname、age、sex、email、phone、introduction字段分别存储学生用户的真实姓名、年龄、性别、电子邮箱、手机号码、自我介绍等信息.具体内容如表1所示.
表1 学生用户信息表
3.2.2 教师用户数据字典
存储教师用户信息的是tb_teachers表.其中username字段是该表的唯一主键,通过它区分不同的教师用户.password字段存储教师用户的账号密码,realname、age、sex、email、phone字段分别存储学生用户的真实姓名、年龄、性别、电子邮箱、手机号码等信息.具体内容如表2所示.
表2 教师用户信息表
3.2.3 课程信息数据字典
存储课程信息的是tb_courses表.其中id字段是该表的唯一主键.coursename 、teacherrealname、category、startdate、enddate、introduction字段分别描述课程名称、授课教师姓名、所属分类、开始日期、结束日期、课程介绍等信息,imagename字段指出了存储在服务器中的课程图标文件的文件名.具体内容如表3所示.
表3 课程信息表
3.2.4 习题信息数据字典
tb_questions表存储着习题信息,表中id字段是该表的唯一主键.examId、stem、score、answer字段分别描述习题所属试卷/作业号、题干、分值、答案等信息,choice_a、choice_b、choice_c、choice_d字段是习题的4个选项,isObjective字段标记习题是否为客观题.具体内容如表4所示.
表4 习题信息表
系统其余数据字典设计,可以参照图3平台物理数据模型进行理解.
3.3 系统展示
Tomcat具有优先连接倾向,能保持软件的鲁棒性[7].将项目部署在Tomcat服务器上,使用注册教师身份登录,显示“新建课程”界面如图5所示.在该界面中输入课程名称、授课教师、所属分类、课程介绍,选择开始日期和结束日期,上传作为新课程图标的图片文件,然后点击“创建”,即可新建一门课程.
图5 “新建课程”界面
进入“查看/修改课程”界面后,教师用户教授过、正在教授或未开始教授的课程都会被罗列出来.通过点击警告框里的4个选项,对这些课程在开始时间上进行选择.罗列出来的每一项的信息包括课程名称、分类、开始日期、结束日期、注册人数和课程介绍,后面伴随“详细介绍”、“修改”和“查看评论”3个按钮.如图6所示.
图6 “教师课程”界面
使用学生身份登录,进入“所有课程”界面后,本平台上的全部课程的基本信息将呈现出来,包括课程名称、授课教师、参加人数、课程介绍和评分.点击课程分类按钮组任一按钮,就可选择只出现某一分类的课程.在选择完分类后,可以进一步根据开始日期选择课程,而且能够使用按人气和按评价两种排序方式.如图7所示.
图7 学生“所有课程”界面
4 系统测试
系统开发中使用自定义拦截器实现HandlerInterceptor接口,并在进入控制器方法调用之前进行处理,在业务代码中加入URI判断和用户登录域信息判断.注册和登录模块测试结果表明,系统可以拦截异常操作,达到预期设计效果.测试情况如表5所示.
表5 注册登录功能测试
为了实现上传附件功能,需要在相关XML文件中配置MultipartResolver,设置属性maxUploadSize值为5242880字节,同时设置属性defaultEncoding编码为UTF-8.对系统进行文件上传下载测试,使用如表6中所示的测试用例逐一进行,测试结果均达到预期设计效果.
表6 上传下载功能测试
利用JMeter对系统进行压力测试[8],测试硬件环境如表7所示.在JMeter中设置好各种测试脚本,填入HTTP协议、IP地址、端口等各项内容,设置线程数量50,设置测试时间40 s,聚合报告如表8和表9所示,系统响应时间如图8所示.
表7 测试硬件环境
表8 聚合报告1
表9 聚合报告2
图8 系统响应时间
5 结束语
WIKI课程平台中学生可以浏览全部课程,搜索课程,管理已结束、正在参加或即将开始的课程,获得推荐课程,接收和发送消息,完成考试和作业,创作和提交笔记.教师用户可以查询、新建或修改教授的课程,管理参加自己所教授课程的所有学生,接收和发送消息,布置和批改作业和考试,审阅和发布笔记.后续版本迭代中,需要进一步考虑数据库和数据表的优化和拆分,使得范式级别变高,冗余更少.面对高并发请求响应下降问题,需考虑微服务架构和分布式服务器部署.