摘 要
程序语言课程是计算机相关专业的核心教学内容之一,要提高程序语言设计能力必须通过大量的实践练习与交流。在传统的学习过程中,往往通过人工方式对程序的源代码进行评测,遇到问题,不易于学习交流。本系统目的便是构建一个基于B/S的,能够方便扩展系统功能的在线评测系统。同时在基础框架之上扩展出几个模块,以增强程序学习者之间的学习交流,简化程序的评测过程,提高程序学习的效率。
本系统结合当前优秀的开源框架,构建一个相对易于扩展的web在线评测系统。系统总体框架实现和技术主要为Spring,Hibernate,MySQL,Lucene等主流技术。采用Spring MVC来控制主要的业务逻辑,Hibernate实现数据的ORM映射,MySQL实现系统数据的存储。前端使用JSP进行显示,用jQuery进行行为的控制,前后端之间Ajax传输JSON格式数据。
本论文阐释了如何可扩展系统,jQuery插件开发,Ajax服务的构建,易用的DAO模块设计,基于角色的权限控制等适应于本系统的基础应用。这些基础应用的设计最大好处就是能加快系统开发,提高系统的扩展性及灵活性。最后在这些技术的基础之上扩展了三个模块,分别是,基础管理模块,在线评测模块和论坛模块。
关键字:可扩展 SpringMVC Hibernate Ajax RBAC
Abstract
Course of programming design is the mainly teaching contents of computer relative majors. Only take more practice and active communications can improve the programming ability. When in traditional learning process, people do the code judge work by their eyes. Meanwhile, it is not convenient to communicative with each other. The purpose of this system is to build and Program Online Judge which is B/S based and easy extensible. Several modules will be developed to promote the communication beyond learners. What’s more, teaching assistant, easily judge processing and more effective programming learning will be provided.
This system is based on fluency and excellent open source framework. To building a WEB online judge system which is easy to extend. The implementation of system’s framework and the technology mainly for SPRING, HIBERNATE, MYSQL and so on. Spring MVC is used to control the main business logic, while Hibernate implements the Object-Relation Mapping, and the MYSQL will store the system data. In the front page, JSP is ready to display. Meanwhile, web action will be controlled by the JQUERY. AJAX will be using to the transfer of data between front and back side without fresh, always the JSON formatted data.
This paper is ready to showing basic application’s and framework’s design of extensible system, the development of JQUERY plugin, AJAX service building and the Role-Based Access Control (RBAC) system. All of above is the basic applications which suitable for the core system. Finally, will extend three modules, respectively is the basic management module and program online judge module and BBS module.
Key words: Extensible; Spring MVC; Hibernate; Ajax; RBAC
目 录
1 前 言 6
1.1 研究目的 6
1.2 研究意义 6
1.2.1 在线学习程序设计语言 6
1.2.2 学员间交流 6
1.2.3 基于角色的权限控制 7
1.3 国内外研究概况 7
1.3.1 国内研究现状 7
1.3.2 国外研究现状 8
1.4 项目开发必要性 8
1.5 系统需求 8
1.5.1 外部行为需求 8
1.5.2 内部特性需求 9
1.6 系统开发环境 10
1.6.1 客户端软件 10
1.6.2 服务端软件 10
1.6.3 开发工具 10
2 相关技术概述 10
2.1 Spring 11
2.1.1 简介 11
2.1.2 应用场景 13
2.1.3 价值 14
2.2 Hibernate 14
2.3 jQuery 15
2.4 Ajax 15
2.5 WEB中的RBAC概述 16
2.6 分页概述 17
2.6.1 分页前端显示 18
2.6.2 基于数据库查询的分页 19
2.6.3 基于内存的数据分页 20
3 基础架构设计与实现 21
3.1 可扩展架构设计与实现 21
3.1.1 可扩展架构设计 21
3.1.2 可扩展架构实现 25
3.2 RBAC权限模型设计与实现 27
3.2.1 领域模型分析 28
3.2.2 基础数据操作 29
3.2.3 RBAC实现 30
3.3 JSONLIB设计与实现 32
3.4 Ajax基础服务设计与实现 35
3.5 日志服务设计与实现 38
3.6 数据访问设计与实现 39
3.7 分页设计与实现 41
3.7.1 前端分页插件设计 41
3.7.2 基于数据库的分页 43
3.7.3 基于内存的分页 45
4 模块分析 47
4.1 模块划分 47
4.2 模块功能 47
4.2.1 基础应用扩展模块 47
4.2.2 在线评测扩展模块 48
4.2.3 在线论坛扩展模块 49
4.3 领域模型分析 49
4.3.1 系统参与者 49
4.3.2 参与者权限分配 50
5 模块详细设计与实现 53
5.1 系统体系架构 53
5.1.1 系统体系架构 53
5.1.2 职责分配 54
5.1.3 结合SSH的MVC模型 55
5.1.4 SSH工作流程说明 57
5.2 基础应用扩展模块 57
5.2.1 领域模型分析 57
5.2.2 视图与控制层设计 58
5.2.3 业务组件设计 60
5.3 在线测评扩展模块 60
5.3.1 领域模型分析 60
5.3.2 视图与控制层设计 61
5.3.3 业务组件设计 63
5.3.4 源代码评测实现 63
5.4 在线论坛扩展模块 65
5.4.1 领域模型分析 65
5.4.2 视图与控制层设计 65
5.4.3 业务组件设计 67
6 系统测试 68
6.1 基础应用模块测试 69
6.2 在线评测模块测试 72
6.3 在线论坛模块测试 75
7 总结 85
参考文献 87
Abstract 2
致 谢 87