基于MVC的XML技术课程设计
2010-05-01潘海兰
潘海兰
(上海第二工业大学计算机与信息学院,上海 201209)
0 引言
可扩展标记语言 (eXtensible Markup Language,XML)的出现,提高了数据描述能力和数据交换能力。它不仅可以自定义数据类型,还可以定义表示数据的方法。与超文本标记语言(HyperText Mark-up Language,HTML)相比,XML是面向内容的。它以一种开放、自我描述的方式定义数据结构,简单而易于掌握。MVC(Model-View-Controller)设计模式的实质是将数据与其表现形式分离开来,减少各层次之间的耦合。运用这种模式,可以减少开发时间,很好地实现多用户系统中控制逻辑与表现逻辑的分离,从而提高平台的可扩展性和可重用性。
本文所论述的XML课程设计正是锻炼学生使用MVC开发模式实现WEB应用程序,并掌握对XML数据的 CRUD(Create(创建)、Read(读取)、Update(更新)和 Delete(删除))操作。课程设计是目前大多数理工科院校本科课程中很重要的一个环节,目的是让学生巩固在课堂中学到的知识点,并结合已学相关课程综合运用这些知识,所以如何设计课程设计的内容,对于学生掌握这门课程是至关重要的。下面主要介绍XML课程的知识点及其课程设计的内容和考核方式。
1 与XML及其应用课程相关的知识点
上海第二工业大学电子商务专业开设《XML及其应用》课程已有多年。本课程是计算机类专业的一门专业选修课程。通过学习,学生应了解并掌握XML的编写及它具体的、实际的运用;同时深刻体会XML语言给网络上信息共享所带来的区别于HTML的优越性,掌握XML和网页技术,特别是能将其与数据库技术结合,灵活地进行信息的描述、交换和显示。以下具体介绍该课程的设置和知识点。
1.1 XML及其应用课程的设置
作为应用型本科高校的一门课程,《XML及其应用》课程的教学阶段分为授课阶段和课程设计阶段。其中32学时的授课阶段给学生介绍设计和使用XML文档所必需的技术,主要包括:根据给定的信息,编写一个结构良好的XML文档;使用文档类型定义DTD(Document Type Definition)和XML Schema去规范XML文档的逻辑结构;掌握验证 XML有效性的方法;使用数据岛将 XML文件嵌入到网页文件中以提取XML数据;使用可扩展样式表语言XSL(eXtensible Stylesheet Language)格式化提取和显示XML文件;了解XPATH、XQUERY和XLINK等XML高级应用;使用DOM和SAX解析器对XML文件数据进行CRUD操作,以及将XML技术与数据库技术和其他高级语言的混合编程等[1]。
1.2 XML课程主要知识点介绍
随着XML技术的发展, XML的新应用知识和领域不断出现。在大学本科低年级的专业选修课程中,我们注重对XML基础知识点的讲解,并把这些知识点结合到本课程的课程设计项目中,使得学生能对XML技术有系统全面的学习。当然,我们会在学生后续的高年级课程中逐步引入目前常用的XML高级技术。
(1) DTD
DTD是为XML文档提供正规语法的一组规则约束,是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。一个DTD文档包含:元素的定义规则;元素间关系的定义规则;元素可使用的属性、实体或符号规则。
(2) Schema
XML Schema如同DTD一样是负责定义和描述XML文档的结构和内容模式。但是XML Schema从多方面改善了DTD,具有自身的优势,这包括:Schema基于XML,没有专门的语法,可以像其他XML文件一样解析和处理;Schema支持一系列的数据类型(int,float,Boolean,date等);提供可扩充的数据模型;支持综合命名空间并且支持属性组。
(3) XSL
XML不像HTML,它不包含任何显示格式的信息。XSL正是专门针对XML文档而提出来的一种规则,能够使XML文档得到更加有效的表现。XSL语法规范可以把XML源树转换成HTML、XML或其他文档。XSL包含三个部分:XSLT、XPATH和XSL FO(Fomatted Object)。XSLT是一种把XML转换为HTML的语言;XPath是一种定义XML节点路径的语言;XSL FO则是一种定义XML显示格式化对象的语言。课程还简单介绍了XQUERY、XLINK和XPointer等XML高级语法。
(4) XML应用编程
XML仅仅用来存放数据,其他像XML数据读写、添加、删除、修改、查询和管理等工作,都需要用户利用XML编程接口开发相应的应用程序来完成。XML编程接口指的是应用程序操作XML文档或XML数据所使用的API函数的集合,目前最重要最基本的接口有DOM和SAX。DOM对XML文档结构树中的节点对象进行访问和操作,在很大程度上保证了各平台之间的互操作性。SAX接口基于事件驱动模型,以顺序方式访问XML文档,具有良好的兼容性。
(5) 数据岛
XML数据岛是指存在于HTML页面中的XML数据,既是一种数据显示技术,也是一种数据传递技术。采用数据岛作为交互手段,不仅可以使数据具备一定的语义信息,同时还能保持HTML原有的一些特色。另外,XML数据岛还可以减少数据库的压力,主要是使查询数据库的用户不再需要频繁地访问服务器端的数据库,而是访问客户端的XML文档,既提高了查询速度,也减轻了服务器端的负担。
2 应用XML技术与MVC模式构建课程设计项目
2.1 课程设计项目
在授课阶段之后的学期末安排了三周课程设计阶段来运用和巩固授课阶段讲解的知识。在开设XML及其应用课程之前,整个专业的学生前期课程有JAVA程序设计基础、数据结构(JAVA)、数据库技术与应用、网页设计基础和JAVA高级程序设计,因此XML课程设计可以在这些基础上要求学生完成一个相对完整的WEB应用。
这个小型的WEB应用主题由小组成员商定,要求完成整个项目的需求设计、业务流程设计、数据库设计、系统实现和系统测试的全过程,使学生掌握项目开发的基本步骤和技能,并掌握单元和功能测试方法,从中考核学生的动手能力。项目中数据库设计要求使用 XML格式存储数据,并分别使用 DTD和 Schema来进行数据定义,使用JDOM来解析XML文档数据,要求至少实现XML数据的CRUD操作,同时要求在项目中至少使用XSL、XPATH或XQUERY中的两种技术。当然由于JDOM的使用在上课阶段没有介绍,课程设计的教师会用2个课时带学生入门,并提供详细的参考文档。
如何把这些要求很好地结合到课程设计的项目中是很多学生的疑问。下面我们在 MVC设计模式的基础上对XML技术的应用做一个解答。
2.2 MVC模式简介
目前众多 Web开发框架都基于 MVC模式进行设计。MVC的主要关系是由 Observer,Composite和Strategy三个设计模式给出的。它把应用程序分成三个核心模块:视图(View)、模型(Model)和控制器(Controller)。三个核心模块分别负责不同的任务,从而强制性地分开应用程序的输入、处理和输出。图1显示了这三个核心模块的关系和功能。
图1 MVC 设计模式Fig.1 MVC Design Pattern
从图1[2]中我们可以总结出MVC模式的处理过程:控制器接收用户请求,并决定处理请求的相应处理模型,在模型中通过业务逻辑调用来生成返回数据,然后仍然通过控制器来选择视图格式化模型返回的数据,并通过表示层呈现给用户。
2.3 XML技术在MVC设计模式中的使用
现在我们来解答在MVC模式下的XML技术应用。与传统的MVC实现不同,XML可以贯穿视图、模型和控制器三个层次,并有效地衔接各层之间的数据交互。图2[3]显示XML技术在每个层次的不同应用。
图2 WEB应用结构图Fig.2 The Chart of Web Application
(1) 视图部分
视图是用户交互界面,可以接受用户输入数据和请求传递给控制器,并获取来自模型处理后的数据显示给用户,但不包括在视图上的业务流程的处理。课程设计项目中视图层可以用 XML+XSL来实现数据的筛选、查询和排序等操作,实现数据显示的多元化,同时也减少对用户浏览平台的限制,可以提高页面的灵活性。
(2) 模型部分
MVC最主要的核心是业务模型部分,它封装了业务处理中的数据和规则,并控制着对数据的浏览和更新。模型层的业务流程处理过程对其它层来说是不可见操作。模型接受视图请求的数据,并返回最终的处理结果,这样有利于模型的重构和提高重用性。课程设计项目中,模型层主要采用 Javabean组件,分为实体Beans和Action Beans两部分,分别负责数据处理和业务处理,并结合DOM来解析XML文档。对于数据存储,可以直接采用XML作为载体,让用户可以根据自己的需求定制XML文档,对应应用程序的实体,或通过XML映射关系型数据表,实现实体类的转换。如果使用XML作为直接数据存储,则需要通过Dom或Sax对XML数据进行解析访问,结合XPath和XQuery技术来更好地拓展XML技术在MVC中的应用。
(3) 控制器部分
在基于MVC的项目中,模型和视图二者是多对多的关系,它们之间的关联要通过控制器来匹配,从而共同完成一个请求过程。也就是可以把控制层看成一个分发器,支配视图的选择和模型的处理,但它并不做任何的数据处理[4]。课程设计项目中的控制层,可以使用Servlet作为控制器,并结合XML技术实现逻辑处理的封装。
3 课程设计的实施和考核方式
在《XML及其应用》的课程设计阶段,学生按4~6人组成一个小组,各自进行分工,培养团队合作能力。课程设计阶段实施主要关注以下四个主要环节。
(1) 明确任务、制定计划
每个小组在明确课程设计任务后,选定项目主题,明确本小组课程设计的内容和目标,并上报指导老师。项目小组成员共同商议决定如何有序地完成整个项目开发的计划,包括收集资料、需求分析、数据库设计、系统设计、编码、系统测试和文档整理等工作[4-5],最后选出项目组长负责协调小组每个成员的工作,确保项目顺利完成。
(2) 文档和编码过程
课程设计安排在学期末三周集中的时间,全程在学校电子商务实验室完成。这是课程设计的最重要阶段,要求学生实现项目编码,并进行代码测试,同时完成相关文档编写。在此期间每个班级由一名指导老师全程进行答疑辅导,要求学生做好日志记载。组长负责将每位组员完成的情况和项目进度做真实的记录,以此作为教师打分的一个依据。整个过程采用小组方式进行开发,加强学生的团队合作精神,更重要的是让学生学会分析问题与解决问题的方法。
(3) 测试和答辩环节
学生在作品的完善过程中要求不断测试BUG,并及时修正。最后由指导老师对每个小组开发的项目进行了验收。验收不仅看项目运行情况,还要求学生对完成的项目进行答辩,这样改变了以往只看结果的评分方式。在以往考核方式下,教师往往忽略了设计过程,对学生的主观印象分所占的比重较大,给出的成绩有失客观性,不利于调动学生的积极性。
评分标准先给设计团队,也就是教师从设计方案的正确性和合理性、设计说明书文档的完整性和团队协作能力,以及学生答辩时的状态等方面评定出团队成绩;然后再根据组内每个成员的完成情况,进一步给出每个成员的成绩。团队的整体设计成绩直接与组内每个成员的设计成绩相关联,团队的整体成绩将是团队中成员的最高分数,这样团队每个成员都会为团队的成绩尽自己的一份力量,使团队成绩更好。答辩形式采取按团队进行答辩的方式,每组推选一名学生用一刻钟的时间陈述全组课程设计情况,然后组员共同回答指导老师和另一名参加答辩教师提出的问题。当然,在团队成员中,如果存在浑水摸鱼或抄袭他人设计完成设计任务者,则设计成绩按不及格论处[6]。
(4) 课程设计总结
每次课程设计结束时,相关教师必须进行经验总结,提出授课过程中的问题及需要改进的意见,为下次课程设计的准备提供参考。
目前在校电子商务系学生的 XML应用课程设计中采用了以上说明过程。学生通过这种形式的学习,大大提高了对XML技术的掌握程度,并能融会贯通理论课所学的知识点来完成整个项目,收效良好。
4 结论
应用型本科高校对于 XML技术的教学越来越受到重视,这从近几年不断更新的教材就可以看出。而一门技术的掌握需要不断地应用它。利用课程设计的手段来加深学生的理解,加强学生的实践是一种十分有效的方法。几年来,我校计算机与信息学院在教学中逐步提高实践环节,不断改进课程设计的教学方法。从学生的反馈来看,课程设计不仅能巩固学生的专业理论知识,提高实践能力,更能提高学生项目开发技能和软件设计水平,并使学生掌握项目测试和项目文档编写技术,培养学生团队协作能力与应变能力,适合于应用型本科院校的教学。
[1]牛纪桢, 陆 坤, 宋 丹.以XML扩充的MVC设计模式[J].计算机工程与设计.2005, 26(12):3372-3374.
[2]卢菊平, 郭江杰.精通JSP+XML+CSS网络开发混合编程[M].北京:电子工业出版社, 2006.
[3]刘爱琴, 葛君伟.基于XML模型的支持多终端的MVC模式实现方式 [J].计算机应用与软件, 2005, 22(7):51-53.
[4]迪·芬克.大学课程设计自学指南:如何设计课程以促进意义深远的学习[J].李康译.复旦教育论坛, 2008, 1(2):23-26.
[5]罗伯特·M·戴尔蒙德.课程与课程体系的设计和评价实用指南[M].杭州:浙江大学出版社,2006.
[6]肖鹏.大学课程设计的快速整合方法模型[J].现代教育管理, 2009, 5:56-58.