基于MVC模式的Android与Web双模校园信息系统的设计与实现外文翻译资料
2022-08-09 11:25:15
英语原文共 8 页,剩余内容已隐藏,支付完成后下载完整资料
基于MVC模式的Android与Web双模校园信息系统的设计与实现
摘要:校园移动应用是智慧校园建设的重要组成部分。campus service设计了一个校园信息服务系统,该系统由Android客户端、Web客户端和服务器三部分组成,均采用MVC模式设计。Android客户端与服务器端采用C/S架构,Web客户端与服务器端采用B/S架构,采用JSON作为统一的数据接口来完成交互。描述了三个部分的体系结构,阐述了数据库访问优化、Android显示、事务管理和认证等关键技术,其中数据库访问优化技术主要有两个方面:使用C3P0维护连接池和根据其流行程度预取数据。经测试,该系统实现了用户管理、校内公告、与朋友互动、活动参与、校园地图等功能,具有良好的性能。该系统为教师、学生和校方之间的实时交流提供了一个有效的平台。
关键词:智慧校园,MVC,Android,双模,预取
- 介绍
近年来,世界进入了移动互联网蓬勃发展的阶段。平板电脑、智能手机等移动智能终端越来越普及,传统的桌面应用开始转向移动设备。
在此背景下,移动智慧校园系统应运而生。主要是指在校园内使用无线网络技术的应用。它基于智能终端、3G网络、Wi-Fi等移动技术,可以提供多种移动信息服务,方便学生、教师和管理人员随时随地使用。2008年,斯坦福大学开始建设移动校园系统。通过它,学生可以直接在支持iOS系统的移动智能终端上查看课程目录、学校地图、游戏信息和校园内的人物信息。杜克大学、卡内基梅隆大学等大学也推出了自己的移动应用程序。在中国,复旦大学在2009年就建立了一个移动校园应用程序“iFudan”,其他大学紧随其后。
在典型的智能手机系统中,Android以其开放性和Google提供的优秀服务占据了巨大的市场份额,具有巨大的发展空间。为了方便解决学校生活中遇到的问题,本文实现了校园信息服务系统campus service。利用该系统,提高了校园信息传播效率和校园智能化建设。
- 系统设计
2.1.系统目标
CampusService是一个Android和Web双模信息服务系统,它为师生提供Android客户端,供师生接收校方发布的信息并进行交互;为校方提供Web客户端,供校方发布信息或组织活动,收集教师反馈还有学生。同时,作为一个信息服务系统,它需要具有快速响应和高稳定性。
根据西安科技大学校园信息化的资源积累和用户需求,校园服务的主要功能设置如下:
表1.系统功能
功能 |
描述 |
新鲜资讯 |
提供用户关注功能,接收关注用户动态 |
公告 |
提供校园公告的发布、阅读和检索功能 |
在线交互 |
提供好友管理功能,允许用户查看好友基本信息,上传图片,实时互动 |
参与的活动 |
提供出版活动和用户参与的功能 |
校园地图 |
提供查看校园地图、查询所在单位新闻、校园定位导航服务等功能 |
2.2.系统架构
系统的物理结构如图1所示。
图1.系统物理结构
CampusService是一个基于B/S和C/S模式的Java EE项目软件,包括三个组件:Android客户端、Web客户端和服务器。Android客户端实现了与Web客户端相同的功能,两种客户端使用统一的数据接口JSON与服务器交互,使服务器能够统一处理来自两个客户端的请求。选择JSON实现数据交换的另一个原因是减少了数据传输的流量。系统采用四层体系结构,客户端为表示层,服务器端为表示层,服务器端为服务逻辑层,服务器端为数据模型层,如图2所示。
图2.系统架构
Android客户端与服务器交互采用C/S架构,Web客户端与服务器交互采用B/S架构,因此总体设计采用两种架构的结合,即B/S架构的扩展。以下是服务器端、Android客户端和Web客户端的主要设计思想。
2.3.服务器架构
服务器处理和响应来自Android客户端和Web客户端的请求,管理和保存系统数据和应用程序数据。其设计模式为MVC DAO,采用struts2实现层次结构,Hibernate实现数据持久化,采用Tomcat作为Web服务器,MySQL作为数据库,如图3所示。
图3.服务器架构
服务器使用MVC模式实现分层架构。
- 基于Tomcat,表示层负责接收客户端发送到struts2的JSON流,并将struts2的结果转换成JSON流返回Android或Web客户端;
- 在struts2中,使用FilterDispatcher作为控制器来过滤来自客户端的请求,然后经过多个拦截器的代码转换、身份验证和其他预处理,将请求传递给相关操作,该操作调用JavaBean(作为模型)来完成业务逻辑处理;为每个功能定义相应的操作模块,每个JavaBean类对应于处理业务逻辑的特定操作;
- Hibernate中的事务管理对象完成数据库中的CRUD操作,采用C3P0架构接管数据源连接。
- 业务处理结果按递归顺序返回到表示层。
服务器端设计的数据表包括:①用户表。包含学生号(工作号)、昵称、用户组、密码和其他用户信息。其中学生号(工作号)是用户的唯一身份;②新闻表。用户发布的新闻数据表,包含新闻ID、作者ID、发布时间、内容、评论、图片等信息;③活动表。是活动信息的数据表,包含活动及其注册信息;④放置表。它旨在保存地址信息、存储位置和与位置相关的最新新闻。
2.3.Android客户端
Android客户端采用MVC设计模式,具体设计为分层结构,分为表示层、控制层和模型层,如图4所示。
图4.Android客户端架构
表示层由多个活动和XML布局文件组成,通过可视化界面与用户交互,完成信息的显示。模型层使用Google提供的GSON包解析服务器传输JSON数据,实现数据的解析和处理;使用Android自带的SQLite库完成本地数据的存储。控制层是表示层和模型层之间控制数据流的桥梁。具体流程是:Android客户端通过控制层接收服务器发送的消息,对消息进行分类,排序后发送到模型层完成逻辑处理。根据需要,一部分数据存储在SQLite中,一部分数据通过事件响应来改变和显示表示层的接口;同时,在模型层进行处理和处理后,将表示层的用户请求转发到控制层,后者向服务器发送请求。
2.4.web客户端
Web客户端的主要工作是与服务器交互,更新Web页面。它使用Ajax中的jQuery框架,该框架使用JavaScript作为脚本语言[3],在与服务器交互时使用JSON作为数据格式。基本交互的整个过程是:加载网页时加载jQuery;用户操作界面和jQuery根据操作绑定事件;从服务器读取JSON数据,解析和处理JSON数据,促进网页的部分刷新。
3.关键技术
3.1.优化数据库访问
在处理业务逻辑的过程中,需要频繁的数据库操作。当并发访问率很高时,数据库的运行将成为性能瓶颈。为了提高服务器在高并发情况下的性能,采用多层优化的方法对数据库进行访问。
3.1.1.与C3P0建立连接池:传统JDBC中对数据库的每一次访问都需要经过建立数据源、处理事务、释放数据源等一系列过程,造成资源浪费。为了解决这个问题,CampusService中的DAO层使用开源框架C3P0建立并维护了一个数据库连接池,连接池维护了许多主动物理连接。当系统需要数据访问操作时,直接从池中获取连接使用,操作完成后不释放连接,而是将连接放回池中供以后使用,以提高服务器的响应速度。根据Webbench测试软件的压力测试结果调整C3P0的配置。
3.1.1.基于流行度的网页预取:为了提高网页的命中率,进一步提高服务器的响应速度,设计了基于流行度的网页预取策略。
基于Web访问的空间局部性原理,通过对当前和历史页面请求的分析,Web预取技术主动地预测用户下一步可能浏览的网页,并提前将这些网页提取到本地缓存中,这样用户只需要从本地缓存中访问这些网页。典型的Web预取技术是PPM[4],它是一个上下文模型。PPM的基本思想是用马尔可夫预测树来描述用户的访问模式,并通过序列匹配来预测未来的用户访问。该模型有很多扩展研究[5,6],本文借鉴了基于流行度的PPM模型[6]。提出了一种新的基于网页普及度的网页预取模型。网页的受欢迎程度是根据网页之间的连接关系、新鲜度、等级和访问频率等因素来计算的。该模型将访问量最大的网页预取到数据库连接池的缓冲区中,以快速响应用户请求。
该模型由以下两部分组成:
①计算网页的流行度。影响流行度的因素有:
- 链接关系l:相关页面的访问顺序;
- 新鲜度f:Web消息的发布时间;
- 等级d:发布者级别;
- 访问频率v:网页的访问次数。分别赋予这些因素相应的权重,即wl、wf、wd和wv,然后通过加权求和公式(1)计算网页的流行度p。
p=l*wl f* wf d*wd v*wv (1)
② 生成一组预取网页:
定义类PageRankNote以获取一组需要预取的网页。该类包含五个属性,即newsId、next page、freshness、classify、visitCount,分别表示网页ID、最相关的下一页、freshness、grade level和页面访问频率。Top-N页面集的生成过程如下:
- 根据用户点击,检查用户需要的网页是否在缓冲区内,是否连接池。如果是,则直接返回网页并重新计算网页的PageRankNote实例的受欢迎度;
- 如果所需的网页不在缓冲区中,则从数据库中获取网页并返回给用户,然后生成网页的PageRankNote实例并计算其受欢迎度;
- 比较计算出的受欢迎度为了现有页面的流行,如果它在TopN中,则将其保存在缓冲区中;
- 否则,将其从缓冲区中移除。
在具体实现中,为了快速找到对应的网页PageRankNote实例,使用哈希表,其中Key为newsId,Value为对应实例;配置struts2框架的对应拦截器,当用户请求网页时,请求都可以放到拦截器中;如果用户请求的网页属于Top-N,直接从拦截器返回请求的网页。
3.2.Android兼容屏幕显示
在Android客户端的设计中,需要解决不同型号屏幕之间的不匹配问题。在布局文件中设置控件大小时,应遵循以下原则:①包装内容、填充父控件和dp。因此,使用sp来定义文本的大小,以便更好地适应屏幕大小。程序代码中不出现特定像素值;②不使用绝对布局(Android1.5中已废弃),应使用相对布局;③为不同屏幕提供合适大小的图像。
3.3.事务管理
在处理业务逻辑的过程中,一个业务常常需要涉及到对文件服务器或数据库记录的一些更改。如果在处理过程中出现异常,不能执行一个步骤,则会出现数据不一致,影响系统的稳定性。Hibernate本身不具备事务管理的能力,而是委托底层的JDBC或JTA来实现事务管理和调度功能。系统实现了基于JDBC事务的事务管理。在事务处理过程中,调用SessionFactory.openSession()返回会话,然后调用session.beginTransAction()和session.commit()将多个操作打包到一个组中。当异常发生时,通过回滚技术进行恢复操作,保证事务的原子性。
3.4.身份验证
为了确保安全,每个业务逻辑操作都应该经过身份验证。系统使用struts2的拦截器实现统一认证。在配置文件struts.xml中,定义并将其添加到struts2的interceptor堆栈中。当用户请求到达时,CheckUser interceptor截取identity字段进行身份验证,如果身份验证成功,则截取identity字段并将其发送到Action,或者直接返回验证失败。
4.测试
为了测试系统的功能和性能,搭建了一个网络测试环境,其中服务器为Windows 2003 Tomcat 6.0 MySQL 5.1;智能终端中的Android版本应为Android 2.1或更高版本。
4.1.功能测试
功能测试包括Android客户端和Web客户端的全部功能。Android客户端面向员工和学生,而Web客户端面向学校的部门。试验项目及结果见表2。
表2.功能测试
功能项目 |
Android客户端 |
Web客户端 |
用户注册 |
如果用户信息正确,则成功;否则失败 |
如果用户信息正确,则成功;否则失败 |
用户登录 |
如果用户信息正确,则成功;否则失败 |
如果用户信息正确,则成功;否则失败 |
动态发布 |
通过 剩余内容已隐藏,支付完成后下载完整资料 资料编号:[239402],资料为PDF文档或Word文档,PDF文档可免费转换为Word |
课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。