计算机光盘软件与应用 2010年第9期 Computer CD Software and Appl ications 软件设计开发 基于MVC的在线购物系统设计与实现 黄莉 (宝鸡文理学院计算机科学系,陕西宝鸡721007) 摘要:网上购物系统能在网上建立一个虚拟的购物平台,改变了传统的购物流程,使购物轻松、快捷、安全、方便。 本论文设计的网上购物系统采用了基于JAvA和JSp技术的总体设计方案;实现了几个主要模块的算法,探讨了设计中的 关键技术。 关键词:网络购物;电子商务;JAVA;spring;Hibernate;Servlet;JSP 中图分类号:TP311.1 文献标识码:A 文章编号:1007—9599(2010)09—0147—02 The Online Shopping System Based on MVC Huang Li (Department of Computer Science&Technology,Arts&Sciences of Baoji University,Baoji 721 007,China) Abstract:Online shopping system is a virtual shopping platform on website,changes traditional shopping process and provides convenient,efifcient and secure ways for trading.The online shopping system designed in this paper is based on the combination of JAVA and JSP techniques.In this paper the computation of several major modules is realized and then the key technology in the design is discussed. Keywords:Online shopping;E—commerce;JAVA;spring;Hibernate;Servlet;JSP 随着信息技术的不断发展,我们现在已经步入了一个信息化 (三)控制层(Controller) 的时代,而信息时代的代表便是网络技术的日渐成熟。通过网络 控制层主要应用的是SpringMVC框架。Controller需要返回 我们可以足不出户的做许多事情,目前一种新的购物方式已然出 视图和将要由视图渲染的Model。视图通常是JSP页面,因此, 现,就是在线购物。 返回JSp页面的路径即可,而Model可以简单地使用Map来实现。 一、系统总体介绍 由于一个方法只能返回一个对象,因此,有必要将Model和View 根据网上商城系统的基本需求,本系统需要完成的具体任务 一起返回。 如下:商品查询,购物车管理,订单处理,会员注册。本项目采 该层是实现了与用户交互的主要功能。由于处于安全原因的 用四层架构:模型层(Mode1),数据访问层(DAO),控制层 考虑,JCghop中的所有页面都放在了WEB—INF下面,所有的请求 (Controller),展示层(View)。 都必须交给Controller来响应,jsp,html页面是无法直接访问 (一)模型层(Mode1) 到了,都经由Controller后RequestDispateher forward到相应 所有Model类均为POJO类,只提供get和set方法,并重写 的页面。具体的Controller定义为:public class XxxActions equals和hashCode方法。 extends MultiAetionController。在这里需要注意方法的名称和 (二)数据访问层(DAO) 访问时候的参数method名称一样。 DAO层的实现主要采用Hibernate框架。Hibernate的核心接 在SpringMVC环境中的配置处理器映射时候注意,key为访 口一共有5个,分别为:Session、sessionFactory、Transaction、 问时的URL后缀,value为具体的mapping bean的id。另外由于 Query和configuration。这5个核心接口在任何开发中都会用到。 我们采用了Mu1tiActioncontrol1er,必须配置相应的方法解析 通过这些接口,不仅可以对持久化对象进行存取,还能够进行事 器,这要可以让SpringMVC环境根据用户提交的method确定将此 务控制。 请求映射到哪一个Controller上的哪一个方法。在 表1 1DAO基础层详细设计功能表 eonfig/applicationContext—Common.xml文件中配置的。 蠡 纂 g黼 的 蠹嚣 纂 鸷鳓 瓣 瓣耪 耄 囊&v蒸 黼 搏 (四)展示层(View) 类型 接口 类 由于视图层都是相应的jsp页面,在此不过多的赘述。其中 功能 所有DAO的父接口,提供 所有的DAO实现类的父类。实 还包括的jstl的应用。其中视图层springbtVC的视图解析器负责 统一的增删改查等操作。 现统一的增删改查等操作 解析。在config/applicationContext—Common.xml文件中配置。 描述 所有DAO相关的接口都必 所有DAO实现类都必须继承自 配置prefix属性的value为/wEB—INF/,后缀suffix为“.jsp”。 须继承它。 他。 二、结论 Pub1ic abstract Class 在Spring的MVC中我们应用的Controller可以通过如下图 定义 Pub1ic abstract interf BaseDA0Supp0rt<T> extends 的方式描述其之间的相互关系: ace BaseDA0<T> Hi bernateDa0Support implements BaseDAO<T> 备注:有关类的详细设计请查看集体的源代码文件。 具体实现的类(XxxDAOImp1.java)负责实现每一个具体的实 体模型DAO接口。提供完整的数据互通访问和相关CRUD的操作。 每一个接口中的方法可以有不同的实现类,体现了面向接口编程 的优点。 在项目的eonfig/applieati0ncontext—DA0一Imp1.xml配置 文件中如下配置:配置DA0组件,并将sessionFactory bean注 入到对应的XxxDAOlmpl上,因为XxxDk0Impl继承了 HibernateDaoSupport,它有一个setSessionFactory()方法, 提供数据库的链接。 图2 Control Ier继承关系图 (下转第146页) 一147一 计算机光盘软件与应用 软件设计开发 Computer CD Software and Appl ications 2010年第9期 (2)针对文字和代码建立不同的检测数据库。 (3)根据不同的代码类型,必须建立有特征识别功能,能针 对不同语言分别检测的分析系统和相关数据库。 2.系统构架。 根据系统的需求,系统主要功能模块在论文中代码分离基础 上,包括两大部分:针对代码检测的模块和针对文字检测的模块。 具体见图1 代码检测模块包括代码预处理、代码相似度检测和代码相似 度判定三个功能。预处理用于去除代码中的冗余信息。根据表1 中的定义,针对其中的2,3,9项,预处理模块消除了源代码中 的注释,空格,换行和对程序输出效果无效的代码。同时,预处 理模块还消除了常见代码段,如预处理命令和标准输入输出语句 等。预处理之后的代码作为输入,由相应的算法进行检测,并得 出相似度评判结果。 文字检测模块将分离的文字由相应算法进行检测,得出相似 度判定结果。 输出模块根据代码检测判定和文字检测判定,输出最终检测 结果:标记所引用或抄袭的部分的出处,以及所站论文总字数的 百分比,最后给出综合的判定。 三、总结和展望 对代码独创性的判定是一项细化而复杂的任务。要真正形成 完善的系统,还要大量工作要做,如对于代码判定的一系列数据 库的建立,和更完善的判定算法的选择和实现,并在实际投入使 用后进一步完善。 参考文献: [1]Jonatha Adam,Christopher King,Nan Ma.Globfl Research Report China Research and Collaboradon in the New Geographic 图1系统功能构成图 分离模块主要实现代码和文字的分离,根据代码和文字的不 同特征,将其分离为代码部分和文字部分,并将分离后的文字和 代码进行存储。后台数据库包括存储数据库和代码特征数据库两 个部分。其中存储数据库用来存储预处理之后的文字和代码;代 码特征数据库用于存储不同程序语言的特征,以c语言为例,代 码特征数据库中需要存储的内容包括有代表性的操作符和关键 字。代码特征数据库的主要作用包括两个方面。第一,用于判定 段字母构成的文字是否为程序代码,以及该程序段由何种语言 写成。第二,在代码检测时,用于划分代码的结构构成。代码数 据库存储用于比对相似性的大量原始代码信息。针对中文论文的 一Science[R].Thomson Reuter,2009 【2JKJ.Ottenstein.An Algorithmic Approach to the Detection and Prevention ofPlagiarism[J].CSD—TR200,1976,103,2:32—39 [3]Verco KL,Wise MJ.Software for Detecting Suspected Plagiarism Comparing Structure and Attribute—counting Systems【『].Proceedings of the 1st Austrian Conference on Computer Science Education,Sydney,1996,102,2:3—5 [4]Edward L Jones.Metrics Based Plagiarism Monitoring.The Consortium for Computing in Small Colleges.Vermont.2001:253,261 【5】史彦军,腾弘飞,金博.抄袭龙纹识别研究与进展【I].大连理工大学 学报,2005,45,1:50-57 [6】张鹏.C程序相似代码识别方法的研究与实现[D】.大连:大连理工 检测,分离模块以段落为单位,判定三种情况:纯中文,纯字母 和中文字母夹杂。纯中文可以直接判定为论文的文字部分。纯字 母的可以比照代码特征数据库,判定是否为代码。如果是代码, 以代码的形式单独存储,否则,以文字的形式统一存储。中文字 母夹杂的段落,可在去除了中文后,按照纯字母的情况进行处理。 大学,2008 [7】付兵.基于信息隐藏技术的电子作业防抄袭研究Ⅱ].微计算机信 息2009,25,6-3:63-64,70 (上接第147页) 在这个项目中我们主要应用了下面两个Controller: (一)AbstraetWizardFormController(主要应用于下单向 导页的控制) 继承这个抽象类需要实现validatePage()、processFinish ()和processCancel()方法。这里也可以需要写一个构造器, 它至少需要调用setPages()和setCommandName()方法。setPages (二)MultiAetionController Spring借鉴Struts的DispatchAction提供了类似功能的 Mu1tiActioncontro1ler。可以实现不同的请求路径对应 MultiActionController中的不同方法,这样就可以把相关的操 作都在一个类的相关方法中完成。这样使得这个类具有“高内 聚”,也利于系统的维护,并且避免了重复代码。 参考文献: [1]刘中兵.开发者突击JAVAWEB.电子工业出版社.2008年9月 ()的参数是一个String数组,这个数组包含了组成向导的视图 名。setCommandName()的参数是一个String,该参数将用来在 [2]Spring 2.5开发手册.http://fo rum.springframewo rk.org 视图中调用命令对象。和AbstraetFormController的实现一样, /.2008年3月 需要使用命令对象(包含了表单的信息)。 AbstractWizardFormControl1er有几个可以复写(override)的 方法。最有用的一个是referenceData()。这个方法允许把模型 数据以Map的格式传递给视图;getTargetPage()允许动态地更 改向导的页面顺序,或者直接跳过某些页面;onBindAndValidate ()允许复写内置的绑定和验证流程。 [3]Hibernate API Documentation.http://www.hibe rnate.0 rg.2008年6月 作者简介 黄莉(1981-),女,陕西宝鸡人,研究方向:自然语言处理,智 能系统与决策支持,问答系统。 146—