Idingfan订餐系统后台设计与实现【毕业论文】

Idingfan订餐系统后台设计与实现【毕业论文】

ID:449043

大小:1.11 MB

页数:32页

时间:2017-08-03

上传者:U-944
Idingfan订餐系统后台设计与实现【毕业论文】_第1页
Idingfan订餐系统后台设计与实现【毕业论文】_第2页
Idingfan订餐系统后台设计与实现【毕业论文】_第3页
Idingfan订餐系统后台设计与实现【毕业论文】_第4页
Idingfan订餐系统后台设计与实现【毕业论文】_第5页
资源描述:

《Idingfan订餐系统后台设计与实现【毕业论文】》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

本科毕业论文(20__届)Idingfan订餐系统后台设计与实现摘要:随着信息技术的日益发展,电子商务的应用领域也越来越广泛。阿里巴巴、淘宝、当当网等国产电子商务网站的成功运营,为我国电子商务其他领域提供了很好的建设及运营经验。餐饮业作为我国的一大消费领域,也渐渐引发了电子商务化的热潮。作为网站的核心,后台系统的开发作为网站的重中之重。本文就以idingfan订餐网站为例,采用MVC模式开发及运行该网站后台系统关键词:idingfan;后台系统;MVC模式28 IdingfanRoscoesystembackstagedesignandimplementationAbstract:Alongwiththedevelopmentofinformationtechnology,theapplicationofe-commercefieldmoreandmorewidely.Alibabaandtaobao,dangdangnetworketcdomestice-commercesitesforthesuccessfuloperationofe-commerceinChina,andotherareas,providegoodconstructionandoperationexperience.ThebiggestconsumptioninChinacateringindustryfield,alsograduallysparkedtheboomofe-commerce.Asthecoreofback-officesystems,websitedevelopmentasthetoppriority.Thisessay,takingidingfanwebsite,forexample,roscoetheMVCpatterndevelopmentandrunthewebsitebackstagesystemKeywords:MVCmode;urbanRBD;idingfan;Backendsystem;28 目录一、idingfan订餐系统后台功能开发背景1(一)餐饮电子商务的现状1(二)餐饮电子商务系统的研究成果2(三)餐饮电子商务系统发展的趋势2(四)餐饮系统所遇到的问题3二、idingfan订餐系统后台功能的开发3(一)开发工具的选择3(二)开发语言的选择3(三)开发模式——MVC模式4(四)开发架构——Struts和Hibernate5三、Idingfan网站后台系统开发7(一)后台系统的需求7(二)后台系统数据库的设计7(三)系统的功能模块划分11(四)后台系统的页面设计12四、idingfan网站后台系统的实现——MVC模型的应用13(一)MVC模型的应用——模型、视图、控制器13(二)功能模块的特点18五、idingfan订餐体统后台功能页面浏览25(一)菜品页面25(二)菜品分类页面25(三)餐馆页面/餐馆分类页面,建筑页面/区域分类页面结构与菜品同型26(四)订单页面26(五)会员页面26(六)系统管理员页面27六、idingfan订餐系统后台管理功能实现中问题的解决方法27(一)中文显示乱码问题27(三)安全问题——使用Struts结构.do28七、总结2828 致谢3028 引言随着信息技术日新月异的发展,当今的电子商务已将发展到了各个领域,包括餐饮业。餐饮业网站的日益增多,使各大餐饮网站的竞争性日益增强。如何是网站功能体现餐饮业的行业特点及挖掘在网上发展的优势,是餐饮网站的一大研究课题。作为餐饮网站的核心部分——后台系统是各个餐饮网站最注重的部分,一个好的后台系统要具有效率的处理功能。采用爱订饭的后台系统采用MVC模式,框架清晰明了。既便于实现餐饮网站功能。又便于后期的维修更新。一、idingfan订餐系统后台功能开发背景(一)餐饮电子商务的现状进入21世纪,电子商务的话题越来越在各大企业中讨论。在全球信息化的大背景下,电子商务已经成为企业谋求进一步发展的手段,如何把电子商务应用到自身的业务中,已经是众多企业的课题之一。服饰,作为电子商务中较早应用到的消费领域,在这几年已经获得了较好的成果,在这个台阶上,许多中小型商家把目标瞄准了餐饮这块市场。“衣食”在人们的生活中占有很大的消费比例,各种的电子商务式餐饮网站如雨后春笋般出现。就目前看,我国的电子商务餐饮网站大致分为六个形式:1.由第三方建立的餐饮信息网站该类网站只负责关于餐饮信息的简单发布。如餐饮文化、餐馆介绍、菜系等等,如中华美食网(http://www.foodsafe.net)。2.有店铺形式的餐饮企业建立的网站该类网站开展的是B2C的业务。如青岛勇丽餐饮管理公司(http://www.yonglee.com.cn)。3.无店铺形式的餐饮企业电子商务网站经营者本身不具有常规餐饮店铺。如丽华快餐(http://www.lihua.com),丽华专营快餐“外送”。4.餐饮业电子商务门户网站用户通过网络实现对餐馆查询级餐馆菜品查询和预订服务,企业会给与相应的折扣。如爱订饭(http://www.idingfan.com)。5.区域性的餐饮电子商务网站利用地理优势在某个或几个居民小区,甚至在学校内部进行的餐饮电子商务活动。这类网站一般是组织附近的多家餐饮店,利用网络的优势,接受外卖订单,规模较小。如杭州的要饭网(http://www.yaofan.com)。6.大型连锁餐饮企业的电子商务28 这种形式发展的较为成熟。从原料采购到网络营销,如百盛必胜客餐厅的网站。(二)餐饮电子商务系统的研究成果一个好的餐饮电子商务网站需要有一个相符合的网站系统,一个合格的网站系统需要一个科学的编制框架。如今,基于Struts模式下开饭的餐饮系统已经取得了良好的市场效果。Struts框架本身是使用JavaServlet和JavaServer急事的MVC模式的实现。Struts开放源码框架的创建是为了使开发者在构建基于JavaServlet和JSP技术的Web应用时更加容易。为开放者提供了一个统一的标准框架。通过使用Struts作为基础。开发者能共更加专注与应用程序的商业逻辑。Struts的优势:1.实现MVC模式,结构清晰2.有丰富的tag可以用。提高开发效率。3.页面导航。页面导航将是今后的一个发展方向,这样做。是系统脉络更加清晰。通过配置文件,即可把握整个系统各个部分之间的联系,对于后期的维护有较大好处。4.提供Exception处理机制5.数据库连接池管理6.支持I18NStruts框架能较科学清晰的为餐饮系统的设计服务,让设计者能更专心与餐饮系统的商业逻辑设计,更完美的实现流畅的餐饮系统操作,而且Struts框架实现的系统成本相对较低。方便与系统使用者后期的维护更新。(三)餐饮电子商务系统发展的趋势1.人性化的操作界面在实际生活中,往往餐饮业的操作人员素质普遍不是太高,一个人性化的操作界面不但使操作员能够迅速的掌握操作流程,防止操作意外。还可以大大提高餐饮信息的传递、汇总。2.及时反映订单需求及时反映订单需求直接关系到订单信息的产生到商家处理订单信息的流程,需求信息反映的越迅速,越能绑商家把握商机,速度做出行动,最大程度上体现餐饮电子化的优势。3.结构清晰,逻辑性强,易于后期维护一个餐饮系统的设计不单单要考虑到其功能的实现,而且还要考虑到后期的维护。系统设计的严谨,逻辑性强,易于维护人员的后期解决产生的问题及维护,当意外发生时,及时解决系统问题将给商家弥补产生的损失。(四)餐饮系统所遇到的问题餐饮系统的问题主要集中在后台及数据库两块,后台功能的完善和数据库精简是是当今餐饮系统继续解决的两大问题。28 后台作为连接和处理前台和数据库的关键环节,在整个网站系统中起着重要的地位,一个完善的后台功能系统能效率的完成订单业务信息的传递、实现网站信息的快速更新等等,但是往往具有相同后台功能的两个网站在实际中所取得的效果却不一样,问题常常产生在其后台功能间的联系是否紧密,其数据库的设计是否合理精简。一个合理科学的数据库能提供最效率的数据信息的存储和提取。许多企业往往不注重数据库的科学设计,导致最终信息的冗余,系统信息处理慢,甚至出错,带来极大的损失。二、idingfan订餐系统后台功能的开发(一)开发工具的选择1.WindowsXP的操作系统2.MacromediaDreamweaver8Dreamweaver是美国MACROMEDIA公司开发的集网页制作和管理网站于一身的所见即所得网页编辑器,它是第一套针对专业网页设计师特别发展的视觉化网页开发工具,利用它可以轻而易举地制作出跨越平台限制和跨越浏览器限制的充满动感的网页3.Mysql数据库开发软件与其他的大型数据库例如Oracle、DB2、SQLServer等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQLCluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。4.MyEclipse8.5开源软件MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。5.其他网页设计软件PhotoshopCS2等。(二)开发语言的选择1.JavaJava是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。Java以其强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势。由于经济管理系网站选用MVC模式,在MVC模式下的ActionServlet、Action、ActionForm都支持JAVA语言编写。2.Jsp28 JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。(三)开发模式——MVC模式MVC模式将表示层和业务逻辑层划分为模型(Model)、视图(View)和控制器(Controller)三部分,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式在理论上实现了页面显示与业务逻辑分离。MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。视图(View)是用户看到并与之交互的界面。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。模型(Model)表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。控制器(Controller)接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。MVC各层分工作用原理(图1)MVC组建类型的关系和功能(图2)。MVC模式的应用范围广泛,具有低耦合性、高重用性和可适用性、较低的生命周期成本、快速的部署、可维护性、有利于软件工程化管理等优点。(四)开发架构——Struts和Hibernate1.Struts的基本原理Struts是一个开源的、基于MVC模式的JavaWeb28 框架。视图组件与业务逻辑组件的关系在一个叫做struts-config.xml的配置文件中声明。当用户在页面上进行操作时,生成了*.action的请求传给struts.xml(MVC中的V)。服务器根据这个配置文件中所定义的action名称,寻找匹配的处理方法:如果没有定义method,则直接调用的是class里面的类的execute方法,如果定义了method,则是调用的class类里的method中所指明的方法(MVC中的C)在method中进行处理,在这里有可能采用若干高深莫测的方法,但都属于较为底层的工作,比如访问数据库等等(MVC中的M)方法处理完后(可能有一串的处理方法,但终究有一个方法是最终进行的),return了一个字符串,比如success、error等,并将这个字符串送回给struts.xml,struts.xml在前面action标签内部定义的若干个result中,找到name属性与返回字符传相同的,然后根据type的类型,向指定页面进行跳转(MVC中的C)。跳转的页面接受到了请求,生成页面在浏览器里进行显示(MVC中的V)。。Struts的工作原理如图3所示:图3Struts工作原理图1.Hibernate的运行过程在MVC模式中,Hibernate可以作为模型层/数据访问层。它通过配置文件(hibernate.properties和hibernate.cfg.xml)和映射文件(*.hbm.xml)把Java对象映射到数据库中的数据表,然后通过操作,对数据表中的数据进行增、删、改、查等操作。28 通过对jdbc进行封装,对java类和关系数据库进行mapping,实现了对关系数据库的面向对象方式的操作,改变了传统的jdbc+sql操作数据的方式,从而使开发人员可以话更多精力进行对象方面的开发运行过程:第一步:Hibernate的初始化.读取Hibernate的配置信息-〉创建SessionFactory第二步:创建Configeration类的实例。它的构造方法:将配置信息(Hibernateconfig.xml)读入到内存。一个Configeration实例代表Hibernate所有Java类到Sql数据库映射的集合。第三步:创建SessionFactory实例把Configeration对象中的所有配置信息拷贝到SessionFactory的缓存中。SessionFactory的实例代表一个数据库存储员源,创建后不再与Configeration对象关联。缓存(cache):指Java对象的属性(通常是一些集合类型的属性--占用内存空间。SessionFactory的缓存中:Hibernate配置信息。OR映射元数据。缓存-大:重量级对象小:轻量级对象第四步:调用SessionFactory创建Session的方法1)用户自行提供JDBC连接。Connectioncon=dataSource.getConnection();Sessions=sessionFactory.openSession(con);2)让SessionFactory提供连接Sessions=sessionFactory.openSession();第五步:通过Session接口提供的各种方法来操纵数据库访问。Hibernate的运行过程,如图428 图4hibernate运行过程图三、Idingfan网站后台系统开发(一)后台系统的需求Idingfan后台系统是idingfan网站中的“支柱”,它既是对前台页面信息的处理,又是实现后台信息对前台页面的传递。Idingfan后台系统主要实现功能包括:菜品信息的添、删、查、改,菜品类别的添、删、改,餐馆信息的添、删、查、改,餐馆类别的添、删、改,建筑信息的添、删、查、改,区域类别的添、删、改,图片上传,订单信息的处理及系统管理员管理。由于idingfan网站是一个餐饮外送性的网站,具有较强的及时性,这就要求后台系统能较效率的对前台信息的处理,尽量避免信息处理的出错率和较人性化的操作。(二)后台系统数据库的设计1.数据库逻辑结构设计本系统主要采用Mysql数据库,数据库名为idingfan,共包含11张表。系统总体结构功能模块设计后,就要对数据库进行设计。用的是关系数据库,而数据之间的结构关系可以用E-R表来分析。E-R图由实体、属性、实体之间的关系三部分组成。经分析总结出系统的实体大致包含以下几个:28 管理员{id、管理员姓名、管理员登录名、密码、管理员类型}建筑{id、区域、简写、全称}餐馆{id、餐馆类型id、餐馆名、外卖费、餐馆编号、外送时间段、外送电话、餐馆介绍、餐馆地址、餐馆图片、加入时间、所属建筑id}顾客{id、用户id、购物车id、订单编号、订单时间、订单状态}菜品{id、菜品类别id、菜品名、菜品价格、所属餐馆编号、菜品介绍、加入时间、菜品图片}菜品类别{id、名称、描述}餐馆类别类别{id、名称、描述}区域类别类别{id、名称、描述}订单{id、用户id、购物车货物总价、购物车状态}餐馆{id、用户等级、用户登入名、用户登入密码、用户真实姓名、用户电话、用户地址、注册时间、最近登入时间、Email}以下是通过idingfan后台系统实体分析,在Visio下设计的idingfan后台系基本实体关系E-R图如图5所示:图5idingfan后台实体关系E-R图28 1.数据库的连接设计数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。Idingfan订餐后台系统通过数据连接池来控制对数据库的访问量。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。先进行Hibernate配置文件的相关编写,系统代码如下:hibernate.cfg.xmlMySQL_JDBCjdbc:mysql://localhost:3306/db_idingfan?useUnicode=true&characterEncoding=gb2312rootcom.mysql.jdbc.Driverorg.hibernate.dialect.MySQLDialectorg.hibernate.hql.classic.ClassicQueryTranslatorFactoryorg.hibernate.connection.C3P0ConnectionProvider205500001003000true28 (三)系统的功能模块划分Idingfan网站后台系统功能模块结构如图6所示:‘图6Idingfan网站后台系统功能模块结构图28 1.菜品浏览模块该模块主要是针对菜品进行增、删、查、改等操作,上传相应图片2.菜品类别浏览模块该模块主要是针对菜品进行增、删、查、改等操作,上传相应图片3.餐馆管理模块餐馆管理模块主要是对网站的注册餐馆进行信息的增、删、查、改等操作,上传相应图片。4.餐馆类别管理模块该模块主要是针对餐馆进行增、删、改等操作,上传相应图片5.建筑管理模块该模块主要是针对建筑进行增、删、查、改等操作,上传相应图片6.区域类别管理模块该模块主要是针对区域类别进行增、删、改等操作,上传相应图片7.订单管理模块订单管理模块是处理前台购物车所生成的订单信息。8.系统管理员管理模块该功能主要对后台系统管理员进行增、改、删操作。9.用户系统模块用户管理模块主要管理消费者信息,浏览消费者的留言并进行答复功能、对消费者用户信息进行查、删等操作。(四)后台系统的页面设计idingfan后台系统的页面采取简约的风格,界面简单明了,方便操作,如图7、图8所示:图7管理员登入页面28 图8登入后页面四、idingfan网站后台系统的实现——MVC模型的应用(一)MVC模型的应用——模型、视图、控制器MVC模型应用在后台系统中,方便了程序员的管理,对未来添加修改优化后台系系统搭建了一个良好便捷的平台。MVC模型在本系统的具体应用以餐馆为例,具体操作如下:1.在hibernate.cfg.xml配置文件中添加“ORM映射文件”:2.“Restaurant.hbm.xml”文件,该文件中提到的"id"、"resName"、"price"、"numb"、"takeawaytime"、"tel"、"introduction"、"address""、"picture"、"joinTime"、"building_id"为数据库Restaurant表的各字段,具体代码如下。ORM是面向对象的程序设计语言与关系数据库的映射,具备持久化操作的能力。28 3.Restaurant.java在com.orm包中对Restaurant表中的各字段get()、set()方法。packagecom.ORM;importjava.util.Date;publicclassRestaurantimplementsjava.io.Serializable{privateIntegerid;privateRCategoryrcategory;privateStringresName;privateDoubleprice;privateStringnumb;privateStringtakeawaytime;privateStringtel;privateStringintroduction;privateStringaddress;28 privateStringpicture;privateDatejoinTime;privateIntegerbuilding_id;publicRestaurant(){}publicRestaurant(RCategoryrcategory){this.rcategory=rcategory;}publicRestaurant(RCategoryrcategory,StringresName,Doubleprice,Stringnumb,Stringtakeawaytime,Stringtel,Stringintroduction,Stringaddress,Stringpicture,DatejoinTime,Integerbuilding_id){this.rcategory=rcategory;this.resName=resName;this.price=price;this.numb=numb;this.takeawaytime=takeawaytime;this.tel=tel;this.introduction=introduction;this.address=address;this.picture=picture;this.joinTime=joinTime;this.building_id=building_id;}publicIntegergetId(){returnid;}……}4.AdminRestaurantAction.java该部分主要实现视图层调用Action的方法,如此例,实现了对餐馆的增删查改等操作。例如addRes()方法的编写:先新定义一个RestaurantForm、Restaurant、ResService类,再进行对视图层页面信息的取值,进行try方法的判断。其添加功能的实现主要是靠ResService类方法实现。publicActionForwardaddRes(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){RestaurantFormrestaurantForm=(RestaurantForm)form;Restaurantres=newRestaurant();ResServiceservice=newResServiceImpl();ActionMessagesmsgs=newActionMessages();SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-dd");res.setResName(restaurantForm.getResName().trim());28 ……(其他字段编写如同)Stringdir=request.getRealPath("/Picture");Stringfilename=null;FormFilefile=restaurantForm.getPicture();InputStreamin=null;OutputStreamout=null;try{res.setJoinTime(df.parse(restaurantForm.getJoinTime()));res.setRcategory(service.loadRCategory(newInteger(restaurantForm.getRcategory())));filename=file.getFileName();if(file==null||filename.length()<1){logger.info("您没有上传文件!");}else{in=file.getInputStream();out=newFileOutputStream(dir+"/"+filename);intreaded=0;byte[]buffer=newbyte[1024];while((readed=in.read(buffer,0,1024))!=-1){out.write(buffer,0,readed);}logger.info("文件"+filename+"已经上传到了服务器上的"+dir+"下");res.setPicture("/Picture/"+filename);}booleanstatus=service.addRes(res);if(status){msgs.add("addResStatus",newActionMessage(Constants.ADDMER_SUC_KEY));}else{msgs.add("addResStatus",newActionMessage(Constants.ADDMER_FAIL_KEY));}saveErrors(request,msgs);}catch(Exceptionex){logger.info("在执行AdminRestaurantAction类中的addRes方法时出错: ");28 ex.printStackTrace();}finally{try{if(in!=null)in.close();if(out!=null)out.close();}catch(Exceptionex){logger.info("在执行AdminResAction类中的addRes方法时出错: ");ex.printStackTrace();}}returnmapping.findForward("addRes");}5.ResServiceImpl.java餐馆分类、餐馆业务逻辑处理接口实现,该文件是对ResService.java文件中方法的实现。如addRes(),Session的主要功能是提供对映射的实体类实例的创建,读取和删除操作。实例可能以下面三种状态存在:自由状态(transient):不曾进行持久化,未与任何Session相关联。持久化状态(persistent):仅与一个Session相关联。游离状态(detached):已经进行过持久化,但当前未与任何Session相关联。游离状态的实例可以通过调用save()、persist()或者saveOrUpdate()方法进行持久化。持久化实例可以通过调用delete()变成游离状态。通过get()或load()方法得到的实例都是持久化状态的。save()和persist()将会引发SQL的INSERT,delete()会引发SQLDELETE,而update()或merge()会引发SQLUPDATE。publicclassResServiceImplextendsBaseLogimplementsResService{publicbooleanaddRCategory(RCategoryrcate)throwsException{Sessionsession=MySessionFactory.getSession();Transactiontx=null;booleanstatus=false;try{tx=session.beginTransaction();session.save(rcate);tx.commit();status=true;}catch(Exceptionex){if(tx!=null)tx.rollback();logger.info("在执行ResServiceImpl类中的addCategory方法时出错: ");ex.printStackTrace();28 }finally{MySessionFactory.closeSession();}returnstatus;}publicbooleanaddRes(Restaurantres)throwsException{Sessionsession=MySessionFactory.getSession();Transactiontx=null;booleanstatus=false;try{tx=session.beginTransaction();session.save(res);tx.commit();status=true;}catch(Exceptionex){if(tx!=null)tx.rollback();logger.info("在执行ResServiceImpl类中的addRes方法时出错: ");ex.printStackTrace();}finally{MySessionFactory.closeSession();}returnstatus;}}6.在JSP页面上使用hibernate标签,就能完成数据库连接、商品的一系列操作。(二)功能模块的特点1.管理员的分权商品管理员、订单管理员、用户管理员、系统管理员。管理员权限的分配有利于后台系统的安全和效率运行、如图828 图9管理员种类显示1.图片上传功能上传商品图片。如图10图10图片上传AdminRestaurantAction.java/**存放文件的文件夹*/Stringdir=request.getRealPath("/Picture");/**文件名*/Stringfilename=null;/**上传的文件*/FormFilefile=restaurantForm.getPicture();/**输入流对象(用于读取上传的文件数据)*/InputStreamin=null;/**输出流对象(用于将读取到的文件数据输出到服务端的另一个文件中)*/OutputStreamout=null;filename=file.getFileName();if(file==null||filename.length()<1){logger.info("您没有上传文件!");}else{in=file.getInputStream();out=newFileOutputStream(dir+"/"+filename);intreaded=0;byte[]buffer=newbyte[1024];while((readed=in.read(buffer,0,1024))!=-1){28 out.write(buffer,0,readed);}logger.info("文件"+filename+"已经上传到了服务器上的"+dir+"下");res.setPicture("/Picture/"+filename);1.后台动态结构的实现后台动态导航条如图11所示:图11后台动态结构显示后台动态树目录代码:<%@pagelanguage="java"import="java.util.*"pageEncoding="gb2312"%><%@tagliburi="http://struts-menu.sf.net/tag"prefix="menu"%><%@tagliburi="/struts-bean"prefix="bean"%><bean:messagekey="admin.pageTitle"/>28 menu-config.xml28 1.数据分页浏览图12数据分页显示效果图数据分页浏览代码publicListbrowseRes(intpageSize,intpageNo,intcateId,booleanisSpecial)throwsException{Sessionsession=MySessionFactory.getSession();Transactiontx=null;Listlist=null;try{if(cateId!=0){//指定类别hql=hql+"anda.category.id="+cateId;}hql=hql+"orderbya.iddesc";Queryquery=session.createQuery(hql);query.setMaxResults(pageSize);query.setFirstResult((pageNo-1)*pageSize);tx=session.beginTransaction();list=query.list();tx.commit();if(!Hibernate.isInitialized(list))Hibernate.initialize(list);}catch(Exceptionex){if(tx!=null)tx.rollback();logger.info("在执行MerServiceImpl类中的browseMer方法时出错: ");ex.printStackTrace();}finally{MySessionFactory.closeSession();28 }returnlist;}1.判断管理员身份,禁止非正常登录packagecom.struts.action;publicclassAdminLoginActionextendsBaseAction{publicActionForwardlogin(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){LoginFormloginForm=(LoginForm)form;AdminServiceservice=newAdminServiceImpl();ActionForwardforward=null;ActionMessagesmsgs=newActionMessages();try{Adminadmin=service.adminLogin(loginForm.getLoginName(),loginForm.getLoginPwd());if(admin!=null){request.getSession().setAttribute("Admin",admin);forward=mapping.findForward("loginSuccess");}else{forward=mapping.getInputForward();msgs.add("loginError",newActionMessage(Constants.ADMIN_LOGINERROR_KEY));saveErrors(request,msgs);}}catch(Exceptionex){logger.info("在执行AdminLoginAction类中的login方法时出错: ");ex.printStackTrace();}returnforward;}publicActionForwardlogout(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse){request.getSession().invalidate();28 returnmapping.findForward("logoutSuccess");}}1.图片跳窗功能在浏览菜品表时,把鼠标移到图片项,跳出图片预览图。如图13图13图片跳窗功能代码:

functionover(picPath){if(picPath=="")picPath="/images/default.jpg";x=event.clientX;y=event.clientY;document.all.tip.style.display="block";document.all.tip.style.top=y;document.all.tip.style.left=x+10;document.all.photo.src=".."+picPath;}functionout(){document.all.tip.style.display="none";}2.键值对国际化在com.struts包中的配置文件ApplicationResources.properties的值国际化。打开jdk文件下的native2ascii.exe,输入你要转化的值回车就会出现转化后的值。国际化的好处:国际化就是多语言版本的应用程序,使中国人使用看到的是中文,英国人使用看到的是英文等28 例如:building.title.text=Buildingu7BA1u7406building.dcategory=DistrictuFF08u533Au57DFuFF09building.shortName=buildingu7B80u79F0building.buildingName=buildingu5168u79F0building.edit.text=Buildingu7EF4u62A4building.add.text=u65B0u589Ebuildingbuilding.modify.text=u4FEEu6539buildingbuilding.delete.text=u5220u9664building五、idingfan订餐体统后台功能页面浏览(一)菜品页面图14菜品页面(二)菜品分类页面图15菜品分类管理页面28 (三)餐馆页面/餐馆分类页面,建筑页面/区域分类页面结构与菜品同型(四)订单页面可以通过对订单业务的处理,完成对订单状态的改变。如图16,点击受理订单,可以使订单状态产生相应的阶段状态改变:未处理—处理中—处理完毕图16订单业务(五)会员页面会员管理额外有留言管理功能,系统管理员可以查看会员留言并进行相应的答复。28 图17会员管理页面(六)系统管理员页面对系统管理员权限的管理,不同的管理员类型进行不同的后台管理资料的操作,相互不重叠,提高安全性和操作效率性图18系统用户管理页面六、idingfan订餐系统后台管理功能实现中问题的解决方法(一)中文显示乱码问题首先分析乱码的情况1.写入数据库时作为乱码写入2.查询结果以乱码返回究竟在发生乱码时是哪一种情况呢?我先在mysql命令行下输入showvariableslike'%char%';查看mysql字符集设置情况:mysql>showvariableslike'%char%';+--------------------------+----------------------------------------+|Variable_name|Value|+--------------------------+----------------------------------------+|character_set_client|gbk|28 |character_set_connection|gbk||character_set_database|gbk||character_set_filesystem|binary||character_set_results|gbk||character_set_server|gbk||character_set_system|utf8||character_sets_dir|/usr/local/mysql/share/mysql/charsets/|+--------------------------+----------------------------------------+在查询结果中可以看到mysql数据库系统中客户端、数据库连接、数据库、文件系统、查询结果、服务器、系统的字符集设置。在这里,文件系统字符集是固定的,系统、服务器的字符集在安装时确定,与乱码问题无关。乱码的问题与客户端、数据库连接、数据库、查询结果的字符集设置有关。我在向mysql写入中文数据时,在客户端、数据库连接、写入数据库时分别要进行编码转换在执行查询时,在返回结果、数据库连接、客户端分别进行编码转换。现在知道,乱码发生在数据库、客户端、查询结果以及数据库连接这其中一个或多个环节。解决这个问题:在登录数据库时,我们用mysql--default-character-set=字符集-uroot-p进行连接,这时我们再用showvariableslike'%char%';命令查看字符集设置情况,可以发现客户端、数据库连接、查询结果的字符集已经设置成登录时选择的字符集了。如果是已经登录了,可以使用setnames字符集;命令来实现上述效果,等同于下面的命令:setcharacter_set_client=字符集setcharacter_set_connection=字符集setcharacter_set_results=字符集如果是通过JDBC连接数据库,可以这样写URL:URL=jdbc:mysql://localhost:3306/abs?useUnicode=true&characterEncoding=字符集JSP页面等终端也要设置相应的字符集。数据库的字符集可以修改mysql的启动配置来指定字符集,也可以在createdatabase时加上defaultcharacterset字符集来强制设置database的字符集。通过这样的设置,整个数据写入读出流程中都统一了字符集,就不会出现乱码了。(三)安全问题——使用Struts结构.doMVC模型所建的系统,用户访问网页所看的网址是以.do结尾的形式,保护了系统网页设计架构隐秘性。七、总结对于小型应用,使用MVC模式会带来额外的工作量,并且会增加应用复杂性,所以小型应用主要采用以Jsp+JavaBean为中心的模式开发。但对于本经济管理系的28 开发业务逻辑复杂、存在大量用户界面的应用系统,尽管在最初构建MVC框架时会花费一定时间和精力,但MVC模式会大大提高后期软件的开发效率。参考文献:[1]文化.传统企业的电子商务化[J].广东财经学院院报,2006(3).[2]刘珍.传统企业发展电子商务的风险分析及对策研究[M].优秀硕博论文,2005(6).[3]杨洪涛.电子商务对消费者需求的影响与企业营销策略[J].中国科技信息,2005(6).[4]多琦.基于电子商务的顾客满意信息收集与评价系统设计的研究[D].哈尔滨理工大学,2003(2).[5]赵冬梅.电子商务市场价格离散问题研究[D].中国农业大学,2005(4).[6]杨坚.电子商务网站典型案例评析[M].西安电子科技大学出版社,2005(5).[7]刘海,孙浩.海尔家居体现海尔竞合战略[N].新华日报,2006(2).[8]方美琪,《电子商务概论》,北京,清华大学出版社,1999.[9]李琪,《中国电子商务》,成都,西南财经大学出版社,2001.[10]黄京华,《电子商务教程》,北京,清华大学出版社,2003年.[11]王健,《电子商务》,上海,海天出版,2003.[12]屈云波,《网络营销》,北京,企业管理出版社,2001.[13]姚国章,《中国企业电子商务发展战略》,北京大学出版社,2001.[14]A.Acquisti,R.Dingledine,andP.Syverson.Ontheeconomicsofanonymity.InFinancialCryptography-FC’03,pages84–102.SpringerVerlag,LNCS2742,2003.[15]A.AcquistiandJ.Grossklags.Losses,gains,andhyperbolicdiscounting:Anexperimentalapproachtoinformationsecurityattitudesandbehavior.In2ndAnnualWorkshoponEconomicsandInformationSecurity-WEIS’03,2003.28

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
最近更新
更多
大家都在看
近期热门
关闭