基于Struts的网上购书系统毕业设计.doc_第1页
基于Struts的网上购书系统毕业设计.doc_第2页
基于Struts的网上购书系统毕业设计.doc_第3页
基于Struts的网上购书系统毕业设计.doc_第4页
基于Struts的网上购书系统毕业设计.doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

届 别: 2009届 学 号: 200501051401 毕 业 设 计(论文)基于Struts的网上购书系统姓 名 系 别、 专 业 导 师 姓 名、职 称 完 成 时 间 摘 要互联网的迅速发展为人们提供了更多的购物方式,网上商店就是目前最主流的网上购物方式之一。本网上购物系统的设计源于对网上购物需求的增加,由于地理位置购物不便,购物管理不规范,管理工作效率低的现状开发设计而成,人们可以足不出户,在电脑前就可以获得自己所需要的商品。网上购物将传统的购物流程数字化,可以大量减少人力、物力;另一方面突破了时间和空间的限制,使得交易活动可以在任何时间、任何地点进行,极大地方便了消费者,使购物过程变得轻松、快捷、方便,从而大大提高了效率。本论文设计就是利用JSP技术开发网上购物系统的事例。本网上购物系统采用模块化程序设计方法,使用Oracle10g进行数据库开发。本系统充分利用了jsp+sruts+javabean+jstl+hibernate+orcle的简单组合,采用MVC设计模式,具备数据查询、修改、增加、删除、维护等功能,可以实现会员信息管理管理、订单管理、产品信息管理、购物车管理的功能。系统具有高可靠性、可扩展性和重用性的特点,为顾客提供一个便利的购物平台。界面设计使用了Dreamwaver;工具运用了Eclipse,JDK和Tomcat,后台数据库使用了Oracle.关键词:网上购书系统;Hibernate;Struts;模块化;Oracle10g;MVC模式;ABSTRACTWith the development of the internate technology,It provides much more shopping styles .Shopping online is one of the most popular shopping style in the world. The e-commerce portal system design stems from domestic demand to increase in online shopping, shopping inconvenient Because of its geographical location, shopping management was not standardized, low-efficient management of the development and design from the status quo. The reference to e-commerce portal system is modular in design procedures, the use of Oracle10g database development. The system made full use of jsp + sruts + javabean + jstl + hibernate + orcle a simple combination of using MVC design pattern, a data query, modify, add, delete, maintenance, and other functions, members can achieve the management information management, order management, product Information management, shopping cart management functions. to provide customers with the A convenient shopping platform.Interface design uses Dreamwaver; tools used Eclipse, JDK and Tomcat, background database using Oracle Keywords: Online bookstores; hibernate;struts;mode database; Oracle10g; MVC model;目 录前 言1第1章 系统概述及可行性分析21.1系统概述21.2 可行性分析21.2.1技术可行性分析21.2.2经济可行性分析3第2章 系统总体设计32.1系统结构总框架设计32.2系统结构总流程设计42.3网上购物用例图42.4网站工作模式52.5 Struts框架5第3章 系统数据库设计73.1 数据库概念结构设计73.2 数据库逻辑结构设计8第4章 系统的实现134.1创建项目和数据库134.2系统功能结构设计144.2.1用户自管理模块14用户登录模块15用户注册模块17用户退出系统操作19找回密码204.2.2. 购物车管理模块21添加购物车23查看购物车24清空购物车25修改购物车254.2.3 订单管理模块26生成定单26查看定单27删除定单28查看定单明细284.2.4短信息管理模块29新建短信29已接收短信31已发送短信314.2.5客户留言坂模块31发表留言314.2.6后台管理模块设计32用户信息管理32动作积分管理34权限管理36订单管理模块37商品管理模块38第5章 关键技术及系统安全性能405.1系统关键技术405.1.1创建业务逻辑层类405.1.2创建过滤器类和监听器类405.1.3使用标签库实现国际化415.2系统安全性能415.3数据验证41第6章 总结42参考文献43致谢44附录:44前 言改革开放以来,我国经济保持着快速、健康、稳定的高速发展的势头,连续成为世界经济增长最快的国家,人们生活水平逐步提高,消费水平提高,可供消费的额外人民币数目增加,消费理念超前,消费方式也出现新的变化,消费者不再仅仅只去商店购物,随着网络技术的发展,许多商家看到通过互联网进行销售具有潜在的商机,同时也为消费者提供了购物便利,在最近几年中计算机越来越多的活跃在社会的各个领域:管理,网络,计算,控制,多媒体等,并且在某些方面成为不可缺少的工具,尤其在管理方面,管理软件的出现使大量烦琐复杂的问题变得简单易行,本软件的设计考虑以上因素制作,本着以最通俗的语言,最简单的操作,最快捷的设计方案而开发制作而成,可以很好的对现有的商品进行规范,高效的管理。本系统主要运用了Eclipse开发工具,服务器使用tomcat,开发环境使用JDK5.0开发而成,该工具具有卓越的性能,简洁规范的用户界面,可视化的编程环境,简单易懂的java编程语言,用较少的代码可以实现大量繁琐复杂问题的功能,是初级程序开发人员的理想选择。下面将本系统的主要内容介绍如下:第1章和第2章主要介绍了系统实际需求和系统总体设计。第3章介绍了本系统的数据库的设计。第4章详细介绍了本系统的实现。第5章介绍了本系统的关键技术、系统安全性能及数据验证。第1章 系统概述及可行性分析1.1系统概述本系统使用java语言及周边技术制作,为广大消费者提供一个网上购书的平台,便于对订单管理形成规范化,使信息资源可以有效的利用,极大的提高效率,减少工作量。该系统的功能模块主要由以下部分组成:1.用户登录模块2.用户注册模块3.购物车管理模块4.订单管理模块 在后续章节中将详细介绍这些功能模块。1.2 可行性分析1.2.1技术可行性分析使用java语言要比使用其他编程语言效率高,没有指针,代码中不进行内存管理,完全面向对象的语言由JVM和垃圾回收机制实现内存管理,跨平台一处编写处处运行,而且是多线程,在j2ee开发中使用一系列的框架从而使代码更加条理清晰,系统性能更加强大稳定,在web层使用struts框架在持久化层使用hibernate技术实现数据库中的表和代码中的实体类进行映射,对于业务逻辑和数据访问使用javabean技术进行管理,层与层之间相互调用,所使用的模式有MVC模式,模型层就是业务逻辑层,处理业务逻辑、封装和传递数据,控制层由struts框架下的action完成,控制用户请求的转发,根据不同的要求转发到相应的显示层 jsp进行显示。MVC具体的处理过程如下:首先控制器接收用户的请求,并决定该调用哪个模型来进行处理;然后模型根据用户请求进行相应的业务逻辑处理,并返回数据最后控制器调用相应的视图来格式化模型返回数据,并通过视图呈现给用户。Struts有自己的控制器,同时整合了其他的一些技术去实现模型层和视图层,在模型层struts可以很容易的与数据访问技术相结合,包括EJB、JDBC;在视图层Struts可以JSP,XSL等等这些表示层组相结合Struts框架是一个开源框架可以免费获得,使用web框架可以大大的提高开发软件的效率,在struts框架中由action实现控制转发请求,一般对每一个功能模块对应一个action,从而使web开发变得轻松,愉快,在本系统的开发中充分利用了过滤器和监听器等功能是系统更加灵活的运行。操作系统使用Windows 95/98,或Windows NT4.0,或Windows XP,或更高版本;JAVA应用服务器:Apache Tomcat;数据库 Oracle9i/10g;采用B/S架构,使用j2se1.5.08运行环境1.2.2经济可行性分析开发此系统所用软件Eclipse,JDK,tomcat都可以到网络上免费下载。第2章 系统总体设计2.1系统结构总框架设计本网上购物系统分成四个模块,这些模块又有若干个子模块构成的,形成一个结构紧凑,明确清晰的网上购物系统,系统结构总框架设计如下所示:图2-1 系统结构总框架图2.2系统结构总流程设计为了提供系统的安全性,本系统使用用户的密码登陆方式登陆系统,增加系统数据的安全性、保密性,只有合法的用户才可以登陆系统。系统结构总流程设计,如图2-2所示:2.3网上购物用例图2.4网站工作模式目前在应用开发领域中,主要分成两大编程体系,一种是基于浏览器的B/S结构,另一种是C/S结构。在此网上购物系统中,我们采用了B/S模式。基于这种模式,用户可以在任意一台装有操作系统、网络协议软件、浏览器的机器上登录我们的网站。本网站应用的是网站常用的MVC模式,即模型层,控制层和视图层(显示层),其中模型层即是与数据库进行数据交互的javabena,视图层是采用jsp来显示页面来与客户交互。这里最重要的也就是逻辑控制层通常是用Servlet和Action做控制。本系统主要采用的是struts2框架(用action作控制)。下面详细介绍一下该框架。2.5 Struts框架一个成功的电子商务网站的构建不仅需要考虑到如何高效快捷的实现系统功能,还要本着可扩展的原则,在一定时期内适应技术发展与功能扩充的需求,同时要给用户提供方便、实用的信息服务,使网站的商务功能最大化。因此在网上购物系统的设计中,采用了基于Struts的结构框架设计,采用Struts的结构框架设计的优点有:(1) 可扩展性:Struts框架是基于JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型,其业务逻辑和表示逻辑分开,而且所有默认的设置都可以配置,包括了一系列通用标记扩展,适应复杂的业务形式,具有较强的可扩展性,能满足新业务发展的要求。(2) 标准性和开放性:Struts 框架基于Java语言,而且其基本组件具有统一的标准,在许多运行标准的容器中都工作的非常好,具备优异的可移植性(3) 安全性和高效性Struts具有完善的安全管理机制,Java语言也是当前最安全的语言。采用Struts能使系统具有较高的网络安全性和运行效率,保证提供高质量的网络服务和快速的响应速度。Struts的工作流程 1)客户端发起一个.action结尾的请求 2)请求首先经过一些过滤器,最后这个请求被FilterDispatcher接收过滤 3)FilterDipatcher将请求交给ActionMapper进行判断,如果请求的action不存在,则出现404错误 4)如果请求的action存在,那么FilterDispatcher将请求交给ActionProxy(负责action的整个调用过程)对象处理 5)ActionProxy对象通过ConfigurationManager对象获得请求的action的配置信息,然后创建ActionInvocation对象 6)ActionIncation对象负责调用拦截action的拦截器(负责请求的以预处理,将客户端提交的参数设定到Action对象中) 7)最后一个拦截器负责调用Action对象的execute方法,Action的execute方法可以调用模型 中的方法 8)Action执行完毕后,ActionInvocation对象获得Action的返回结果;根据这个返回结果获得一个Result对象。 9)ActionInvocation执行结果,将请求跳转到一个jsp页面10)最后由jsp页面向客户端作出响应Struts框架的工作流程图:第3章 系统数据库设计3.1 数据库概念结构设计数据库在信息系统中占有及其重要的地位,数据库结构设计的好坏关系到系统的运行效率、存储数据的效率、系统的复杂程度等,合理的数据库结构设计可以提高系统性能。本网上购物系统数据分为前台和后如数据,分别是商品数据、订单数据、客户数据,订单明细数据,短信息数据,客户积分数据,客户等级、积分动作数据,留言板数据,管理员数据等。考虑到用户需求的各种实体,本系统规划出的实体有用户信息实体,产品信息实体、订单信息实体、订单明细信息实体,等等实体之间通过外键建立联系,在数据库中hibernate技术,对数据库中的数据进行封装,一般是一张表影射成一个POJO类,通过类与类之间的关系来确立表之间的关系,在数据访问层通过HQL语句对数据库进行增删改查,通过hibernate技术中相关的知识将数据信息持久化到数据库中,其中实体具体描述E-R图如下: 3.2 数据库逻辑结构设计将以上的数据库概念结构转化为关系数据模型,即数据库的逻辑结构。各个数据的字段设置如下表所示:(1)customer表:存放会员信息字段名字段类型约束或索引描述IDNumber(Sequence)PK记录流水号NameVarchar2(20)用户名PasswordVarchar2(20)用户密码ZipVarchar2(20)邮编AddressVarchar2(50)地址TelephoneVarchar2(20)电话EmailVarchar2 (30)电子邮件(2)book表:存放图书信息字段名字段类型约束或索引描述IDNumber(Sequence)PK记录流水号NameVarchar2(100)商品名PriceNumber(8,2)价格Authorvarchar2(30)作者Publishvarchar2(50)出版社(3)Orderform存放订单信息字段名字段类型约束或索引描述IDNumber(Sequence)PK记录流水号CostNumber(8,2)订单总额OrderdateDate下单时间CustomeridNumberFK记录流水号statusvarchar2(40)订单处理状态(4)Orderline存放订单明细信息字段名字段类型约束或索引描述IDNumber(Sequence)PK记录流水号NumNumber数量OrderidNumberFK订单的流水记录号BookidNumberFK商品的流水记录号(5)MessageRecord 存放短信信息段名字段类型约束或索引描述IDNumber(Sequence)PK记录流水号SenderVarchar2(20)Not Null发件人登录名ReceiverVarchar2(20)Not Null收件人登录名SendDateDateDefault=当前时间, Not Null发送日期TitleVarchar2(100)Not Null短信标题,页面上最多100字ContentVarchar2(300)Not Null短信内容,页面上最多300字StatusNumberDefault=00-未阅读 1-已阅读SenderStatusNumberDefault=00-表示未删除 1-表示已删除(发送者)ReceiverStatusNumberDefault=00-表示未删除 1-表示已删除(接收者)(6)ForumMessage存放留言板信息 字段名字段类型约束或索引描述IDNumber(Sequence)PK记录流水号sendervarchar2not null记录发送者titlevarchar2not null标题sendDateDatenot null发送日期contentvarchar2not null发送内容基于系统的功能分析,其ER图为:第4章 系统的实现4.1创建项目和数据库在oracle数据库中建立一个数据库,在数据库中利用SQL语句创建客户信息表customer,短信息表:messagerecord,定单表:orderform,定单明细表orderline,留言板表forummessage,图书表:book,在创建表的过程中要弄清楚表实体之间的关系,对于外键的建立要充分理解,注意对相应字段的约束。按照ER图和数据库分析表写出相应的SQL建表语句。4.2系统功能结构设计4.2.1用户自管理模块主页中由列出了系统推荐最新上架的商品和一些特价商品,任何游客都可以浏览主页的信息,但是要想使用本网上购物系统的功能必须登录成功才行。下面是本网上网物系统的主界面,如图所示:当客户登录成功后,用户可以输入要购买的商品数量点击购买即可将商品添加到购物车里,用户也可以查看或修改用户个人信息,也可以根据需要点击相应的链接发送短信息进入留言板,浏览货物信息等。在购物界面可以添加货物到购物车此处设计成一个map集合,存放订购信息,key为、货号,value为货物整个对象,可以循环购买货物,在没有提交确认前可以删除不需要的货物,提交确认后,网站会再一次确认你的地址,电话等,可以修改这些信息,以便,货物可以按时送到。用户登录模块在登录界面上可以实现两种用户的登陆,一是客户登陆,二是管理员的登陆。如果客户输入用户名和密码都正确,进入网上购物系统;管理员如果输入的用户名和密码正确则进入后台管理系统。如果用户名和密码不正确,提示用户失败登录,并重新登录。如果用户名和密码为空,通过Ajax验证提示用户输入用户名和密码。如果用户不存在还可以点击用户注册进入用户注册界面。在登录页面上还有一个checkbox,如果用户登陆的时候选上的话,利用cookie保存用户名和密码,则下次该用户再访问登录页面的时候,就可以实现自动登陆。如下图所示:说明:在登录界面上用户可以输入用户名和密码进行登录,如果用户名和密码正确,将成功跳转到图书系统主页面,如果不正确,提示给用户错误信息,并且还跳转到登录界面继续登录。具体实现思想:首先客户端验证通过JavaScript来完成,比如用户没有输入用户名时提示客户用户名不能为空,密码为空时提示密码不能为空。只有用户名和密码都填写好以后才能进行客户端数据的提交,这样使得操作更加方便并且提高效率。当数据提交以后,程序将数据提交给配置文件struts-config.xml中定义的struts高级特性userDynamicForm,其类型为org.apache.struts.action.DynaActionForm,在userDynameicForm中的form-property属性中接收JSP界面中提交的用户名和密码,其类型为java.lang.String类型。在UserAction中通过login方法传入userDynameicForm的用户名和密码,并且判断输入的用户名和密码是否正确,login方法调用ICustomerService接口中的login(String name ,String password)方法实现登录的合法性验证,在此service方法中首先要调用dao方法中的findCustomerByName (String name) 方法判断数据库customer表中是否存在名字为name的记录,如果不存在提示用户输入的用户名不存在,如果存在,继续判断密码是否于数据库中的密码相同,相同的时候表示登录成功跳转到购书系统的主界面,否则跳转到登录界面继续登录。在登录成功以后在login方法中把用户信息提交到session范围内,以供程序后继使用用户的个人信息。用户注册模块任何第一次登陆的用户必须先注册,与注册界面有关的为register.jsp,在完成注册功能时需要在struts-config.xml中配置一个DynaActionForm,在action包中的UserAction中定义一个register方法,调用相应的Dao和Service方法实现注册。对注册的用户进行合法性的验证,满足所有的条件的用户才能注册成功。用户名作为用户登录的唯一标识。在验证注册新用户的过程中加入新加入了验证码验证的过程,如果在用户名不冲突验证码输入正确的情况下,才能注册成功,否则重新注册。注册界面图如下所示: 具体实现的思想:在注册界面中,对于带有红色星号的项必须填写,其具体的客户端验证通过JavaScript完成,如果没有填写在提交的时候系统会提示用户填写相关的项目。在JavaScript文件的base.js中定义了一个validateRegisterForm函数,专门对注册界面提交的表单进行合法性验证,在jsp页面中通过form表单的onsubmit属性对把数据提交给base.js进行判断,如果验证通过,转回form中执行的action属性,跳转到UserAction的register方法中,在register中接收到userDynamicForm中的jsp页面提交的相关数据,创建customer对象并将提交的数据封装在此customer类中,调用service中的register方法对业务逻辑进行进一步的验证,完全符合条件的情况下才能注册成功,否则继续进行注册。代码实现过程中出现的问题:在对用户注册的合法性验证过程中,从jsp页面中提交的数据信息必须和传入JavaScript代码中属性的名称必须一致,由于我的疏忽,把两个地方的属性名称不一致,导致客户端验证无法实现,通过浏览器工具上的JavaScript调错平台也没有办法找到错误的根源,最后通过在JavaScript程序中连续加入alert弹出框的方式,一步一步的测试错误的所在,发现了问题的所在并改正。 用户部分还有检查是否登录的功能,通过在UserAction中添加checkLogin方法实现,判断在session对象内是否存在customer对象,如果存在可以直接进入购书系统的主界面,如果不存在将跳到login.jsp界面提示用户通过登录的方式进入系统。其主要实现同登录的实现功能。用户退出系统操作当用户退出系统时,用户必须从新登陆才可以进行网上购物等功能。用户单击系统顶部导航栏中退出按钮,会触发相应的ExitAction,用户退出系统,返回到主界面。如果用户想使用网站的其他功能必须重新登陆,成功登陆后进行相应的其他功能操作。该功能主要是让session失效,通过session.invalidate()方法实现。实现代码如下:public class ExitAction extends Actionpublic ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)throws Exceptionrequest.getSession().invalidate();return new ActionForward(“/login.jsp”);找回密码当客户忘记密码的时候,可以访问找回密码页面,输入会员的帐号、密码提示问题、密码提示答案进行提交,系统对这些信息进行判断,如果正确,则产生一个新的密码返回给用户,并在页面上显示,提示用户下次要妥善保管好自己的密码,并将数据库中的密码修改成新密码。如果不正确,则提示用户。实现代码主要如下:public ActionForward getBackPasswd(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)String name=userDynamicForm.getString(“name”);String telephone=userDynamicForm.getString(“telephone”);String email=userDynamicForm.getString(“email”);IcustomerDao dao=(IcustomerDao)BeanFactory.getBean(BeanFactory.CUSTOMERDAO);Customer customer;String password;trycustomer=dao.findCustomerByName(name);if(customer=null)throw new CustomerServiceException(“此用户不存在!”);else if(!telephone.equals(customer.getTelephone()throw new CustomerServiceException(“注册电话不正确!”);else if(!email.equals(customer.getEmail()throw new CustomerServiceException(“注册邮箱不正确!”);password=customer.getPassword();request.setAttribute(“password”,password);return mapping.findForward(“getBackPasswordSuccess”);catch(Exception e)e.printStackTrace();request.getSession().setAttribute(“message”,e.getMessage();retuen mapping.findForward(“getBackPasswordFailure”); 用户信息修改在整个购书系统中还可以对用户的个人信息进行动态的显示和修改,以及在密码丢失的情况下找回密码的功能。下图为个人信息列表:用户的个人信息可以动态的显示在页面上,通过jsp页面向UserAction中传入新的需要修改的用户信息,并从session对象中取出登录成功时存放在session对象中的customer对象信息,如果登录用户的密码输入正确时就可以对用户的个人信息进行修改,调用IOrderService中的updatepassword方法对输入的密码进行合法性的验证。4.2.2. 购物车管理模块跟踪用户选择的商品,用户在购物车中保存浏览商店时所选中的商品。每个用户都有自己临时的一个购物车。可以查看购物车,可以向购物车中添加选中的商品,修改选中的商品的数量,删除已选择的商品或者清空购物车重新选购商品。购物车的代码实现如下:public class CartAction extends DispatchAction public ActionForward addOrderLine(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) DynaActionForm cartDynamicForm = (DynaActionForm) form;HttpSession session = request.getSession();ServletContext stx = session.getServletContext();Map books = (Map)stx.getAttribute(books);ShoppingCart cart = (ShoppingCart)session.getAttribute(cart);String bookid = cartDynamicForm.getString(bookid);String num = cartDynamicForm.getString(num);Book book = (Book)books.get(Long.parseLong(bookid);Orderline line = new Orderline();line.setBook(book);line.setNum(Long.parseLong(num);cart.addLine(line);return mapping.findForward(addSuccess);public ActionForward deleteOrderLine(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) DynaActionForm cartDynamicForm = (DynaActionForm) form;HttpSession session = request.getSession();ShoppingCart cart = (ShoppingCart)session.getAttribute(cart);String lineid = request.getParameter(lineid);cart.dropLine(Long.parseLong(lineid);return mapping.findForward(deleteSuccess);public ActionForward editOrderLine(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) DynaActionForm cartDynamicForm = (DynaActionForm) form;HttpSession session = request.getSession();ShoppingCart cart = (ShoppingCart)session.getAttribute(cart);String lineid =cartDynamicForm.getString(lineid);String num =cartDynamicForm.getString(num);Orderline orderline = cart.getOrderline(Long.parseLong(lineid);orderline.setNum(Long.parseLong(num);return mapping.findForward(editSuccess);public ActionForward clearCart(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) DynaActionForm cartDynamicForm = (DynaActionForm) form;HttpSession session = request.getSession();ShoppingCart cart = (ShoppingCart)session.getAttribute(cart);cart.removeAll();return mapping.findForward(clearSuccess);说明:购物车的实现是本系统的核心技术部分,首先是购物车列表的动态显示,使用jsp中的use Bean标签实现。图书列表的动态显示是在web应用启动的时候完成的,使用了创建事件监听器的方式实现。具体实现:在listener包中创建一个ContextListener类,继承系统提供的ServletContextListener类,定义contextInitialized方法对图书列表信息进行初始化工作,在此方法中调用IOrderService接口中的listAllBook方法,从数据库中取出所有的图书信息,并把图书信息存放在ServletContext范围内的application对象中,存放在ServletContext范围内的对象的生命周期为从web的启动到web服务器的关闭时注销,因此解决了在整个系统运行的过程中都有图书信息的存在,而且不用在每次用到图书信息的时候去数据库中查询调用数据,减少了与数据库的交互性并能提高系统的运行效率。采用contextDestoriyed方法删除存放在ServletContext范围中的图书信息。添加购物车如果用户想购买商品可以直接点击右侧加入到购物车,所选择的商品便通过以下代码加入到用户自己的购物车中,如下图:Action实现代码如下:public ActionForward addOrderLine(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) DynaActionForm cartDynamicForm = (DynaActionForm) form;HttpSession session = request.getSession();ServletContext stx = session.getServletContext();Map books = (Map)stx.getAttribute(books);ShoppingCart cart = (ShoppingCart)session.getAttribute(cart);String bookid = cartDynamicForm.getString(bookid);String num = cartDynamicForm.getString(num);Book book = (Book)books.get(Long.parseLong(bookid);System.out.println(num is+num);System.out.println(bookid is+bookid);Orderline line = new Orderline();line.setBook(book);line.setNum(Long.parseLong(num);System.out.println(orderline is +line);cart.addLine(line);return mapping.findForward(addSuccess);查看购物车用户购买商品后可以点击“查看购物车”查看购物车里的商品系统会跳转到购物车页面。购物车是通过一个监听器在系统启动时就在当前会话中创建一个购物车,当用户打开浏览器时系统自动把创建购物车放到session中。当用户关闭浏览器时系统自动删除购物车。如下图所示:监听器(Listener)代码实现如下:public class SessionListener implements HttpSessionListenerpublic void sessionCreated(HttpSessionEvent arg0) /创建sessionHttpSession session = arg0.getSession();/把购物车放入sessionShoppingCart cart = new ShoppingCart();session.setAttribute(cart, cart);清空购物车如果客户看到自己又购物车里不想买的东西又可以点击“清空购物车”,来清空购物车中的商品,或者也可以点击“清除”按钮来清除某一件商品,如上图所示。Action代码实现如下:public String clearCart() ActionContext context=ActionContext.getContext();ShoppingCart cart =(ShoppingCart)context.getSession().get(cart);cart.removeAll();return success;代码说明:从sesion中获得购物车,直接调用shoppingCart中的removeAll()方法即可。修改购物车如果想修改自己购买商品的数量可以输入具体的商品数量,并单击保存修改,如果想继续购买产品单击继续购物又可以跳转到购买页面,如果不想购买先前购物车里的产品单击清空购物车即可,最后确定购买,便可提交订单,生成定单就这么简单,在单击“提交定单”后进入确认定单页面,如上图所示。当用户在购物车页面中点击“提交定单”按钮时便可以跳转到提交定单页面。其中当单击右侧的取消按钮时调用下面的action修改这条购物清单,具体代码实现类似于清空购物车调用业务逻辑层相应的业务逻辑方法,然后在调用数据访问层的方法,从而作用于数据库中的数据,在业务层通过底层数据访问层利用HQL语句查询实现对数据库中数据的同步和持久化。实现代码如下:ActionContext context=ActionContext.getContext();/修改定单数量Orderline line=cart.getOr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论