版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE《软件工程创新实践》课程实验报告(分组论文)实验名称小型电子商务网站数据管理系部计算机科学与工程系班级2013级软件工程4班小组名称第11组指导老师林丁报计算机科学与工程系2014年1月2日论文目录第1章项目系统概述11.1项目背景及意义11.2项目主要特色或优点11.3项目使用前景1第2章网上购物系统分析12.1网站的设计目标22.2网站的可行性分析32.3网站的深入调查 32.4网站开发的设计思想32.5系统设计的总体规则4第3章技术解决方案43.1程序开发工具(Eclipse) 43.2数据库Access 43.3JSP 5第4章系统数据库设计 54.1管理系统的数据流图 54.2实体-关系图(E-R图)74.3系统数据库表的基本设计 7第5章功能实现 8275945.1网站首页设计 8274945.2用户注册设计 11159025.3主页面设计 13177295.4主页面设计 1656685.5购物车设计 1810255.6商品结账设计 2078195.7后台界面设计 2227711第6章调试运行 2420665第7章课程设计总结 2425-第1章项目系统概述当今世界网络、通信和信息技术快速发展、因特网(Internet)在全球迅速普及,使得现代商业具有不断增长的供货能力、不断增长的客户需求和不粉白眉黛黑增长的全球竞争三大简授画戎筹,使得任何一个商业组织都必须改变自己的组织结构和运行方式来适应这种全球性的发展和变化。随着信息技术的国际贸易和商业领域的广泛应用,利用计算机技术、网络通信技术和Internet实现商务活动的国际化、信息化和无纸化,已成为各国商务发展的一大趋势。电子商务正是为了适应这种以全球为市场的变化而出现和发展起来的。从形式上来说,电子商务主要指利用Web提供的通信手段在网上进行交易活动,包括通过Internet买卖产品和提供服务。是一种依托现代信息技术和网络技术,集金融电子化、管理信息化、商贸信息网络化为一体,旨在实现物流、资金流与信息流和谐统一的新型贸易方式。本文作者以一个小型销售型公司的业务为模型,对此公司业务进行详细调研,结合目前跨平台的JAVA开发语言,采用JSP技术,然后为该公司定制开发一个小型电子商务网站。1.1项目背景及意义电子商务网站改变了了人们的生活方式,是当今e时代便捷人们生活的一项伟大创举。在生活节奏越来越快的今天,人们对购物便捷的需求也越来越强烈,而网上购物正是给人们带来一种轻松,让每个人享受购物的快乐和冲浪的乐趣一个网络电子网站可以实现的功能非常强大,例如:淘宝集市除了基本的产品信息发布和交易功能之外,还可分析客户购买行为,列出相关商品,购买后的评价系统,以及便捷的交易支付系统,还有跟后台服务系统及后台物流系统的集成。当然也可以做的功能很简单,例如:现在很多的公司只做到商品目录介绍,连采购车的系统都没有,下订单还要通过电子邮件来完成。当然我觉得做的电子商务网站分为两部分:一是前端的购物系统,二是后端的管理系统。在整个系统中的核心技术为购物和结帐系统,但最为难的技术为安全技术,在整个系统中我们需要进行SSL加密,数据库加密,和网页间数据传递加密以及用户和密码加密。Internet的发展,为改变传统的商业运作模式提供了一种技术上的可行性的方案:利用Internet的技术和协议,建立各种企业内部网Internet,企业外部网Extranet,通过廉价的通讯手段,将买家与卖家、商场和合作伙伴紧密结合在了一起,消除时间与空间带来的长安,从而大大的节约了交易成本,扩大了交易范围。而在世界的生活中,这种方案已经被广泛的运用到了世纪的商业活动中了,人们将这种交易模式成为:电子商务。当今比较流行的网上购物系统国外有“淘宝()”,国内游“当当(/)”。他们都是相当优秀的电子商务网站,对其他的网站提供了良好的典范。设计中可以学习参考他们的思想,了解和熟悉整个网站的开发流程及完整的电子商务网站应有的功能和注意事项。设计和完成一个电子商务网站的,将会牵涉到许多技术上的问题,如:动态网页制作技术的,后台数据库的设计和管理,通过实际的只做个网站,可以避免纸上谈兵,在实践中掌握上述技术的使用。1.2项目主要特色或优点我所设计和开发的网上购物平台是经过很长时间的调查和分析才开始具体实施的,它的主要特点是改变了以往的购物只能通过现实的上场才能达到的结果,采用Web技术,借助于Internet互联网广泛应用技术,达到资源共享,提高以往购物的局限性,缩短人们的时间和提高工作效率,具有较好的交互性,从而实现信息化,规范化,系统化,网络化的平台,是整个购物活动过程简单、方便、易行。1.3项目使用前景几年来,跟随着Internet的迅速崛起,互联网已日益成为收集提供信息的最佳渠道并逐步进入传统的流通领域。于是电子商务开始流行起来,越来越多的商家在网上建起在线商店,向消费者展示出一种新颖的购物理念网上购物系统作为B2B,B2C(BusinesstoCustomer,即企业对消费者),C2C(CustomertoCustomer,即消费者对消费者)电子商务的前端商务平台,在其商务活动全程过程中起着举足轻重的作用,本文主要考虑的是如何建设B2C的网上购物系统。网上购物是一种具有交互功能的商业信息系统。他向用户提供静态和动态两类信息资源。所谓静态信息是指那些比经常变动或更新的资源,如公司简介,会议安排和培训信息等。网上购物系统具有强大的交互功能。可使商家和用户方便的传递信息,完成电子贸易或EDT交易。这种全新的交易方式实现了公司间文档与资金的无纸化交换。第2章网站系统分析2.1网站的设计目标本平台利用现在比较广泛的JSP+Oracle数据库的架构实现的,此系统分为前台管理和后台管理。前台管理是友好的操作界面,供用户浏览、查询是用。包括:浏览商品、查询商品、订购商品、购物车、用户维护等功能:后台管理是提供给管理员的,其中包括:商品管理、用户管理等。水管李元从繁琐的手工操作中解脱出来,并提高了办公效率。2.2网站的可行性分析随着计算机技术的发展和网络人口的增加,网络世界也越来越广播,越来越丰富,电子商务已经成为网上的一股潮流。我们相信咬不了太长久的时间,顾客就可以在网络世界上获得他们在现实世界上可以获得的所有商品和服务。可行性研究是为了弄清楚系统开发的项目是是不是可以实现和值得进行研究的过程,世界上是一次大大简化系统分析和系统设计的过程,所以,进行可执行性的分析是非常必要的,也很重要的,经过最初的设计目标和进行的市场调查得出以下的四点的可行性分析:(1)经济可行性:该平台设计知识作为本人的毕业设计,又因为本人的设计能力有限,其功能还不能完善,所以没有什么经济效益可谈。(2)技术可行性:JSP+Servlet的技术已经较为成熟。(3)运行可行性:该系统需要搭建JVM即JAVA虚拟机和Tomcat环境,在此环境下系统,并且在正确连接数据库后可以正常运行。(4)法律可行性:该平台是作为毕业设计与商业无关,又因为是自主开发设计,因此不会构成侵权,在法律上是可行的。通过以上的可行性分析,我将采用JSP+Servlet相结合的技术,运用Access数据库对网站进行建设。2.3网站的深入调查经过以上的初步调查和研究,并且确定了该平台的可行性,并决定开发本平台,为了能够对现行的平台内容进行充分了解,实用要开发的平台更具有实用性和适应性,通过两个月的实习调查和指导老师的耐心介绍,设计出该平台功能如下:能够完成用户基本信息录入的注册和用户基本信息的个人前台与后台管理。能够完成管理员对网站的商品资料(商品添加、商品审查)会员管理(会员审查)、网站信息管理(新闻添加、修改删除、公告设置),以及常规设置(广告添加,友情链接)的功能。能通过电子商品的名称,电子商品的分类进行搜索。能够通过查看购物车对所选商品进行确定、挑选,通过订单查询对支付费用进行确定。经过前一阶段的调查与研究分析,我已确定了该平台设计的主要功能,对每个功能模块也作了具体描述,下面就来具体分析该平台的设计特点与具体思想。2.4网站开发的设计思想网上购物平台主要是对后台管理和前台操作。后台管理是管理员对本网站的维护通过商品资料(商品添加、商品审查)会员管理(会员审查)、网站信息管理(新闻添加、修改删除、公告设置),以及常规设置(广告添加,友情链接)等功能达到对网站的管理。前台操作时用户登录到本网站,可以进行用户注册,通过网站的精品推荐或商品搜索功能,找到自己想要买的商品,装入购物车,提交订单进行购买。网上购物平台的特点是客户和电子商品信息量很大名管理员需要整理的信息很多,为让管理员轻松、方便、快捷的管理,该平台采用符合购买电子商品的基本原则,满足广大客户的日益增长的数量,并达到操作过程中的直观、方便、实用安全等要求。2.5系统设计的总体规则无论哪个网站都要有他自己的设计规则。该平台也一样,它的主要涉及规则有:简单性:在实现平台的功能的同时,尽量让平台操作简单易懂,这对以一个网站来说是非常重要的。针对性:该平台设计是网上购物系统及后台管理的定向开发设计,所以具有专业突出和很强的针对性。实用性:该平台能完成电子商品展示和管理员管理的基本信息,具有良好的实用性。第3章技术解决方案3.1程序开发工具(EclipseTomcat)Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。3.2数据库DATABASE:AccessAccess是一个小型关系型数据库管理系统。Access是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。Access的SQL“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言。Access软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了Access作为网站数据库。3.3编程语言JSPJSP技术使用Java编程语言编写类XML的tags和,来封装产生动态网页的处理逻辑。网页还能通过tags和访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能第4章系统数据库设计4.1管理系统的数据流图数据流图(DFD)是描述信息流和数据从输入移动到输出时被运用的变换的图形化技术,它反映系统必须完成的逻辑功能,是一种功能模型。它是组织中信息运动的抽象,是在调研的基础上,从系统的科学性、管理的合理性、实际运动的可行性角度出发,将信息处理功能和彼此之间的联系自顶向下,逐层分解,从逻辑上精确地描述系统应具有的数据加工功能、数据输入、数据输出、数据存储及数据来源和去向(外部实体)等项目。首先,分析系统的总体情况,划分系统边界,识别系统的数据来源和去处,确定外部实体从而得出系统的顶层数据流程图。把整个网站系统看成一个整体,分析这个整体与外界的联系。通过分析得出系统有管理员和客户这两个实体,系统的输入有两个来源,即管理员在对系统的维护更新过程中对系统所进行添加、删除或修改的数据和用户在与系统交互时输入的订单资料数据。系统的输出也有两个去向:一个是管理员在对系统录入信息后系统返回给管理员的信息和用户提交的订单;另一个是管理员对系统录入信息后,由浏览器输出到客户端的信息。其中管理员输入的信息和从客户浏览器上或管理员端显示的信息包括首页、关于我们、管理资讯、服务项目、招商代理、管理文库、资料下载、在线服务、管理论坛、人才招聘等,而订单信息是由客户端输入然后返回给客户端并提交给管理员的。系统的顶层流图如下:产品产品分类产品管理订单管理用户管理会员管理购物车订单查询产品查询产品展示数据库后台前台在信息世界中,信息从客观事物出发流经数据库,通过决策机构最后又回到客观世界,信息的这一循环经历了三个领域:信息世界,数据世界,现实世界。现实世界的事物反映到人的头脑中,人的大脑对它有个认识过程,经过分析(选择、命名、分类等)进入信息世界。这些信息再进一步加工、编码,然后进入数据世界,而软件系统的开发工作需要考虑这两个方面的问题,也就是要考虑系统开发所需要的数据,以及如何对这些数据进行操作。这两个问题贯穿了整个软件系统的开发过程,这也就是数据库的设计问题,软件设计的一个核心。电子商务网站的主要对象是用户,所以必需建立用户表,包括用户的基本信息情况;用户的主要活动是对产品的购买,所以必需建立产品信息表;用户对产品的购买,选择所要的产品,首先得对产品进行搜索,所以我们把商品进行分类,建立产品类别表;最后用户提交订单,建立订单表;管理员是后台操作的用户,在此建立了管理员信息表。一般会员管理网络电子商店前台的基本功能。会员系统:基本会员注册、会员登录认证。商品陈列系统:商品模糊查询、商品详细数据介绍。添加商品到采购车、采购车内容的删除修改。订单查询系统:根据会员的登录查出会员历史订单及订单的详细信息。 实现网络电子商店的程序运行的基本结构就是所谓的三层式结构,此种结构最主要的是将前台接口、商业对象及数据库独立分开,将此三者分开,程序运行起来有更大的灵活性,前台接口只负责数据的表现,至于商业对象就是负责将一些商业逻辑运算封装到对象,对象中运算方法则最主要是当作后台数据库与前台接口的桥梁,JSP也提供很简单的方法让您建立、修改及布置商业对象。至于数据库,最主要的功能就是存储数据,就像微软的产品来说最有名的前台数据库就是了Access,在此网络电子商务网站系统选择的数据库是Access。4.2实体-关系图(E-R图)本系统实体包括:店主、广告商、客户、网络管理员、商品、购物车、订单、仓库。4.3系统数据库表的基本设计在建设网站系统之前,我们必须对系统所用到的数据进行大致的分类和具体的结构设计,既要做到清晰明了,又要能适应系统各项功能的调用,而不至于产生结构上的逻辑混乱,保证关键数据在意外情况下不会被破坏,可以说数据库是系统的重中之重。数据库设计要遵循一些规则,一个好的数据库满足一些严格的约束和要求。进两分离歌试题对应的表,一个实体对应一个表,搞清楚该试题有哪些属性,对应有些什么字段,以及各实体之间有何种联系。实体、属性与联系是进行概念设计时要考虑的三个元素,也是一个好的数据库设计的核心。从实际出发,经过仔细地设计,得到各表的设计如表所示。客户信息数据库表商品信息数据库表系统实现页面主要组成:系统主要由几大页面框架组成:(1)前台功能页面主页面框架:bottom.jsp,left.jsp,right_top.jsp,top.jsp;登陆注册:adduser.jsp,index.jsp,signup.jsp;商品展示:index.jsp,fooddeils.jsp后台功能页面主页面框架:back.jsp,bottom.jsp,left.jsp,right_top.jsp,top.jsp;商品管理:manafood.jsp用户管理:manauser.jsp5.1网站首页设计统登陆是进入小型电子商务系统的入口。在运行本程序后,首先进入的系统的主页面,在该页面中任何操作的前提是登陆。用户在点击主页面的任何按钮后,都会天转到系统的登陆页面。在登陆页面,用户或者管理员填写用户名、密码以及选择权限并提交时,系统会经过Servlet进行过滤。过滤的过程实质是条用数据库中的信息与之进行对比,如果在数据库中能找到相同的信息,则跳转到主页面。系统登录的运行结果如图5-1所示。(图5-1系统登陆界面的设计结果)5.1.1界面设计系统登录页面主要用于收集用户的输入信息,并进行验证,如果通过则通过servlet加在页面商品,该页面涉及的表单元素如表5-1-1所示。名称元素类型重要属性含义form1formaction="/buyEat/loginservlet?op=login"method="post"style="height:129px;width:300px;"登录表单usernametext用户名称passwordpassword用户密码Loginsubmitvalue="登陆"“登陆”按钮5.1.2关键代码实现系统登录时,最重要的是如何解决在servlet中提交表单中的信息,以及验证输入的用户名、密码、权限选择是否合法,如果合法则将页面将加在servlet的显示所有商品代码页面,否则不到跳转到商品页面。这将涉及以下几个方法。用户验证关键代码:publicbooleancheckLogin(Stringusername,Stringuserpass) { Connectionconn=null; PreparedStatementps=null; ResultSetrs=null; booleanflag=false; try { conn=BaseDAO.getConn(); ps=conn.prepareStatement("select*fromuserinfowhereloginname=?andloginpass=?"); ps.setString(1,username); ps.setString(2,userpass); rs=ps.executeQuery(); if(rs.next()) { flag=true; } }catch(Exceptionex) { ex.printStackTrace(); }finally { BaseDAO.closeAll(conn,ps,rs); } returnflag;登陆成功后,实现显示跳转的关键代码:publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); Stringusername=request.getParameter("username"); Stringuserpass=request.getParameter("userpass"); UserInfoDAOuserDAO=newUserInfoDAO(); booleanflag=userDAO.checkLogin(username,userpass); if(flag) { //request.getSession().setMaxInactiveInterval(30*60); //设置session失效时间(timeout),单位为秒 //request.getSession().setAttribute("userinfo",username); request.getRequestDispatcher("/foodinfoservlet").forward(request,response); }else { response.sendRedirect("/buyEat/index.jsp"); } }5.2用户注册页面设计用户注册后,才能进行登陆、购物在内的一切功能,以下是用户注册界面,如图5-2所示(图5-2系统注册界面的设计结果)5.2.1界面设计用户注册页面主要用于收集用户的个人信息,并通过自定义的JavaScript函数用于验证输入信息是否为空以及验证用户输入的信息是否合法,该页中涉及的表单元素如表5-2-1所示。表5-2-1系统注册页面所涉及的表单元素名称元素类型重要属性含义Form1formname="form1"method="post"action="adduser.jsp"onSubmit="returncheck(this)"注册表单usernametext用户名称pwdpassword密码repwnpassword确认密码submitsubmitvalue="注册"“注册”按钮编写的自定义JavaScript函数,用于判断用户名和密码是否为空和输入字符的合法性以及各式的正确性。代码如下:functioncheckBlank(Form){ varv=true; for(i=0;i<Form.length;i++){ if(Form.elements[i].value==""){//Form的属性elements的首字e要小写 alert(Form.elements[i].title+"不能为空!"); Form.elements[i].focus(); //指定表单元素获取焦点 v=false; returnfalse; } } returnv;}//验证用户名是否合法functioncheckusername(username){ varstr=username; //在JavaScript中,正则表达式只能使用"/"开头和结束,不能使用双引号 varExpression=/^(\w){3,20}$/; varobjExp=newRegExp(Expression); //创建正则表达式对象 returnobjExp.test(str); //通过正则表达式验证}验证密码类似,这里不再赘述 functioncheck(Form){ if(checkBlank(Form)){ //验证表单元素是否为空 if(checkusername(Form.username.value)){ //验证用户名 if(checkPWD(Form.pwd.value)){ //验证密码 if(Form.pwd.value==Form.repwd.value){ //验证两次输入的密码是否一致 returntrue; }else{ alert("您两次输入的密码不一致,请重新输入!"); returnfalse; } }else{ alert("您输入的密码不合法!"); Form.pwd.focus(); //让密码文本框获得焦点 returnfalse; } }else{ alert("您输入的用户名不合法!"); Form.username.focus(); //让用户名文本框获得焦点 returnfalse; } }else{ returnfalse; } }</script>5.2.2关键代码实现注册时,主要是解决如何利用页面的跳转功能实现对数据库的添加用户的账户和密码,并提示用户注册是否成功,其中注册用户的关键代码如以下的代码所示:<%Connectionconn=null;try{ Class.forName("com.hxtt.sql.access.AccessDriver").newInstance(); Stringurl="jdbc:Access:///d:/db.mdb"; conn=DriverManager.getConnection(url,"","");Stringsql="insertintouserinfo(loginName,loginPass)values(?,?)";PreparedStatementps=conn.prepareStatement(sql);ps.setString(1,user.getLoginName());ps.setString(2,user.getLoginPass());introw=ps.executeUpdate();if(row>0){ out.print("注册成功,请<ahref=\"index.jsp\">返回主界面</a>");}ps.close();conn.close();}catch(Exceptione){ out.print("注册失败,请返回重试<br>"); out.print("<ahref=\"signup.jsp\">返回</a>"); e.printStackTrace(); } %>5.3主页面设计经过登陆验证后,即跳转到主界面即商品页面,页面主要由商品组成,查看商品的图片、商品的价格和商品的描述。主界面的设计效果图如图5-4所示。(图5-3系统主页面的设计结果)5.3.1主界面设计主界面显示所有的商品,用户点击详情并可以订购。为了页面的整洁,描述显示限制在18字以内,点击详情可以显示所有详细描述。商品均显示了所有的商品的图片、编号、以及描述。其中、实现限制商品详细描述的关键代码:<%!publicStringsubDescription(Stringdescription) { returndescription.length()>18?description.substring(0,18)+"...":description; }%>实现显示所有商品的关键代码如下,其中为了精简代码,利用的EL语言,来简洁并高效的运行页面,其中关键代码:<div> <ulid="fooder"style="margin-left:10px;"> <c:forEachvar="food"items="${requestScope.foodlist}"> <li> <divclass="imagecss"> <imgsrc="images/${food.foodImage}"width="90"height="110"/><br/><br/> 编号:${food.foodID} </div> <divclass="info"> <spanstyle="font-weight:bold;">${food.foodName}</span><br/> <spanstyle="color:red;font-size:12px;">现价:人民币${food.foodPrice}元</span><br/> <spanstyle="font-size:12px;"> ${food.description} </span><br/><br/><br/> <ahref="/buyEat/foodinfoservlet?op=details&foodid=${food.foodID}"style="position:absolute;bottom:10px;"> <imgstyle="border:none;"src="images/detail_cn.gif"/></a> </div> </li> </c:forEach> </ul> </div>其中商品引用需要利用servlet对数据库的查询,以及servlet对数据库的信息进行遍历查询,其中关键代码如下:publicFoodInfoselectFoodById(Stringfoodid) { Connectionconn=null; PreparedStatementps=null; ResultSetrs=null; FoodInfofood=null; try { conn=BaseDAO.getConn(); ps=conn.prepareStatement("select*fromfoodInfowherefoodID="+foodid+""); //ps.setString(1,foodid); rs=ps.executeQuery(); if(rs.next()) { food=newFoodInfo(); food.setFoodID(rs.getString(1)); food.setFoodName(rs.getString(2)); food.setRemark(rs.getString(3)); food.setFoodPrice(rs.getDouble(4)); food.setDescription(rs.getString(5)); food.setFoodImage(rs.getString(6)); } }catch(Exceptionex) { ex.printStackTrace(); }finally { BaseDAO.closeAll(conn,ps,rs); } returnfood; } //查询所有食物信息 publicArrayList<FoodInfo>selectAllFood() { Connectionconn=null; PreparedStatementps=null; ResultSetrs=null; ArrayList<FoodInfo>foodlist=newArrayList<FoodInfo>(); try { conn=BaseDAO.getConn(); ps=conn.prepareStatement("select*fromfoodinfo"); rs=ps.executeQuery(); while(rs.next()) { FoodInfofood=newFoodInfo(); food.setFoodID(rs.getString(1)); food.setFoodName(rs.getString(2)); food.setRemark(rs.getString(3)); food.setFoodPrice(rs.getDouble(4)); food.setDescription(rs.getString(5)); food.setFoodImage(rs.getString(6)); foodlist.add(food); } }catch(Exceptionex) { ex.printStackTrace(); }finally { BaseDAO.closeAll(conn,ps,rs); } returnfoodlist;5.4详细信息设计用户点击“详细”按钮后,可以查看商品的全部详细描述,以及图片的详细大图,查看页面的运行结果如图片5-4所示。(图5-3商品详细信息页面的设计结果)5.4.1界面设计因为与主页面类似,具体代码不再赘述,这里提供详细图片关键代码: <div> <h2>详细资料</h2> <hr></hr> <imgsrc="images/${requestScope.food.foodImage}"width="200"height="200"/></div>5.4.2订购设计关键代码用户选定了商品后,点击订购按钮,这时商品的编号便会保存在session变量里,并且返回主页面,session变量以用于购物车计算商品,其中关键代码如下:publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); Stringfoodid=request.getParameter("foodid"); FoodInfoDAOfoodDAO=newFoodInfoDAO(); HttpSessionsession=request.getSession(); HashMapmap=(HashMap)session.getAttribute("cart"); if(map==null) { map=newHashMap(); FoodInfofood=foodDAO.selectFoodById(foodid); Itemitem=newItem(); item.setFoodInfo(food); item.setCount(newInteger(1)); map.put(foodid,item); session.setAttribute("cart",map); }else { if(map.containsKey(foodid)) { Itemitem=(Item)map.get(foodid); item.setCount(item.getCount()+1); map.put(foodid,item); session.setAttribute("cart",map); }else { FoodInfofood=foodDAO.selectFoodById(foodid); Itemitem=newItem(); item.setFoodInfo(food); item.setCount(1); map.put(foodid,item); session.setAttribute("cart",map); } } request.getRequestDispatcher("/foodinfoservlet?op=login").forward(request,response); }5.5购物车功能页面设计用户在浏览详细的商品信息后,可以点击订购按钮加入购物车,因为用户不一定只会购买一件商品,所以在购物车系统里通过了session变量保存了用户添加在购物车中的信息,保证了用户返回继续购买商品时可以显示全部已放入购物车的商品以及计算商品的总价格。购物车页面运行结果如图5-4所示。(图5-5购物车页面的设计结果)5.5.1界面设计如图5-4所示,界面详细地显示了商品的编号、名称、单价、以及商品的数量,其中系统会计算商品的总价,并在合计的商品金额栏显示总金额,便于客户计算所需的花费,也可以继续购物。5.5.2关键代码购物车页面引用了在详细信息页面保存的已购买商品的信息,为了代码的简洁,购物车页面使用了JSP标准标签库(JSTL),方便遍历商品的信息用于显示,EL表达式更能方便的使用jstl的提供的信息,其中购物车页面关键代码如下:<%doubletotal=0;pageContext.setAttribute("total",total); %> <c:forEachvar="food"items="${sessionScope.cart}"> <tr> <td>${food.key}</td> <td>${food.value.foodInfo.foodName}</td> <td>${food.value.foodInfo.foodPrice}</td> <td>${food.value.count}</td> <td>${food.value.foodInfo.foodPrice*food.value.count}</td> </tr> </c:forEach> <% HashMapmap=(HashMap)session.getAttribute("cart"); if(map!=null){ Setkeys=map.keySet(); Object[]kes=keys.toArray(); for(inti=0;i<keys.size();i++) { Itemitem=(Item)map.get(kes[i]); total=total+item.getFoodInfo().getFoodPrice()*item.getCount(); pageContext.setAttribute("total",total); } } %> <trstyle="background-color:#b6aeae;"><td>合计:</td><td>—</td><td>—</td><td>—</td> <td>${pageScope.total}</td> </tr> </table> <divstyle="border:1pxsolidgreen;padding-top:20px;width:200px;height:50px;"> <inputtype="button"value="继续购物"onclick="shoping()"/> <scripttype="text/javascript"> functionshoping() { window.location="/buyEat/foodinfoservlet?op=login"; } </script> <inputtype="button"value="结账"style="margin-left:20px;"onclick="endmoney()"/> <scripttype="text/javascript"> functionendmoney() { window.location="/buyEat/endmoney.jsp?total=${pageScope.total}"; } </script> </div> </div> </div>el表达式可以方便的计算的计算商品的价格*数量的综合,同时点击结账按钮,利
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026南平市延平区人民武装部招聘驾驶员1人笔试备考试题及答案解析
- 2026贵州铜仁市第十七幼儿园招聘临聘人员笔试备考试题及答案解析
- 2026福建厦门市集美区康城幼儿园非在编教职工招聘1人笔试备考试题及答案解析
- 眉山市消防救援支队面向社会公开招录22名政府专职消防员的笔试备考试题及答案解析
- 2026年宝鸡凤县就业见习招聘(50人)笔试备考题库及答案解析
- 2026河南周口市中心医院劳务派遣岗位招聘4人笔试备考题库及答案解析
- 2026上半年甘肃事业单位联考甘肃省农业农村厅招聘48人笔试备考试题及答案解析
- 北京市朝阳区安华里第二幼儿园招聘笔试备考试题及答案解析
- 2026中冶赛迪电气装备重庆有限公司招聘笔试备考题库及答案解析
- 2026湖南长沙市望城区明德美琪学校春季校聘教师招聘笔试备考试题及答案解析
- 2026年北京市离婚协议书规范范本(无子女)
- 2026年开工第一课复工复产安全专题培训
- DB65-T 4600-2023 精神卫生福利机构精神障碍患者生活技能康复技术规范
- 2025届天津中考数学真题试卷 【含答案】
- 五粮液窖池施工方案
- 公司内部技术服务合同范本
- 殡葬保洁保安培训课件
- GB/T 18253-2000钢及钢产品检验文件的类型
- 新建铁路无砟轨道施工安全技术交底
- GB-T 29341-2022 水处理剂用铝酸钙(高清版)
评论
0/150
提交评论