电子商务系统购物车 学士论文.doc
中文摘要现今网络技术日趋成熟,网上购物正悄然兴起并正在被广大消费者迅速接受。网上购物系统在此期间应运而生,它通过网络服务器为分布在全国各城市的顾客提供购买商品的服务。从销售商来看,由于在价格上省去了实体店铺的租金、水电、人工等成本,网上购物的商品价格更低,提高了销售商的竞争力。从顾客购买过程来看,网上购物能够降低搜寻成本,便于消费者对产品的挑选和价格比较。网上购物系统的主要内容是,一方面让销售商把商品发布于网络,一方面让消费者通过网络来完成商品的交易。系统总体分成前台和后台两大模块,前台是用户模块,后台是管理员模块。实现的功能,首先系统向用户列出网站的商品信息。其次当顾客登录网上购物系统后,为每个用户分配一个购物车,用户选择商品后,商品会被放入购物车。再次,用户确认购物车信息,点击提交生成订单。最后,管理员对订单进行处理,即完成一次商品交易。系统实现按照MVC设计模式。采用JSP技术作视图层,Struts技术作控制层,Hibernate,JDBC技术作模型层。采用MVC设计模型,增加了系统的可拓展性与可维护性,便于开发的补充,维护。关键词 JSP;Struts;Hibernate;MVCOnline Shopping Author: LiangJianjun Tutor: BaiShangwangABSTRACTNowadays the network technology has a gradual maturity, online shopping is quietly emerging and is being quickly accepted by a lot of people. Online shopping system came into being during this period. It provides service for the customers through a web server. For the vendors, the entities shops rent, utilities, wages will save a lot of money, so the products have a lower price, and make it more competitive. For the customers, online shopping can reduce search costs on selecting product and comparing price of products.To be done by the system one is that the products are published on the Internet by vendors, other is that customers buy goods to complete the transaction through the network. So the system is divided into two modules. One is the foreground and other is the background .The foreground is user module, the background is the administrator modules. System firstly lists products information to customers by administrator. Secondly when customers log in to the system, the system distributes a shopping cart for each customer and goods will be put into the shopping cart after customer selecting products. Thirdly, the customers click to generate order when they checked carts information. Finally, the administrator to deal with goods according to order.System is designed according to the MVC mode. JSP technology used for the view layer, Struts technology for the control layer, Hibernate, JDBC technology for the model layer. MVC make the system easily expand and maintainability, convenient to supplement and maintain the development. 关键词 JSP;Struts;Hibernate;MVC目录第一章 系统概述11.1 开发背景11.2 系统的主要内容21.3 系统的主要业务31.4 开发与运行环境3第二章 设计原理42.1 系统描述42.2 相关术语42.3 主要技术52.3.1开发基本模式52.3.2 DAO数据存取7第三章 需求分析83.1系统的用例分析83.2可行性研究93.2.1 可行性研究的前提93.2.2 技术可行性分析93.2.3 法律可行性分析103.2.4 操作可行性分析103.3 系统的数据描述103.3.1 数据流图113.3.2 数据字典12第四章 系统的概要设计134.1系统功能模块134.2 数据库设计144.2.1 概念设计144.2.2 逻辑设计154.2.3 物理设计16第五章 系统的详细设计185.1 包结构185.2 详细类图185.3 Action组件映射图195.4 页面设计225.5 MVC模式应用25第六章 系统测试296.1 测试计划296.1.1 测试项目名称及测试内容296.1.2 测试用列296.1.3 步骤及操作316.2 测试结果326.2.1软件需求测试结论32结束语33致谢34参考文献35附录36第一章 系统概述1.1 开发背景本节简述了网上购物信息化建设的现状及其发展方向,分析了网络用户对网络购物系统的需求。1. 电子商务信息化建设世界上第一笔网络交易在1994年完成 ,而中国在1998年才迎来了第一笔网络交易,迄今电子商务在中国已经走过了10年多的风雨历程。在这10年的时间里,中国的电子商务发展经历了三个发展阶段:圈钱、烧钱,只重视销售额不考虑盈利的不健康、非理性经营方式;一些投资者被 淘汰出局,留下的投资者在不断思索如何盈利问题中慢慢趋于理性;电子商务经营者不仅重视自身的发展,更重视整个行业的发展。这三个发展阶段充分说明我国电子商务从不成熟到逐渐成熟的发展过程。在电子商务初期,网络购物几乎就是电子商务的全部,但随着网络的快速发展,电子商务的日渐完善,网络购物变成为只是电子商务的一部分。与此同时,网络交易也拥有了适合自身发展的商业模式。目前国内很多网络购物的商家都是从传统企业转型过来,有些则是通过风险投资的方式进入到互联网行业,经过几年的考验后,有些被淘汰出局,有些勉强活着,有些却越做越好,究其根本还是各自在经营模式、经营理念上的差别。而在网络购物日渐规范的今天,很多做得很成功的购物网站又开始注重网络与传统的结合。根据中国互联网络信息中心(CNNIC)的统计,截至2008年1月,中国网民数量已经达到18700万,约占全国人口的16%。巨大的网民规模也为网络购物提供了广阔的发展空间。但网络购物的客户群体只能是网民,而网民占我国人口比例还比较低,相对传统购物群体来说,有一定的局限性。为了解决这个问题,很多网络购物的商家在通过网络进行商品买卖的同时,也会通过传统方式,比如电话订购、邮购等方式进行销售活动。从另一角度来看,网络购物也成为一个让更多消费者了解企业及产品的窗口,传统商业模式成为网络购物的一个有效的补充,两者相辅相成,共同促进。从传统到网络,再从网络到网络与传统相结合的演变将会是网络购物发展的一个必经之路。网上购物发展至今,网上商品越来越丰富,从最初的家庭日用品、图书、音像制品,到现在的通讯产品,电子产品。业内专家认为,由于网络的特殊性,规格、标准统一的商品更适宜作为网络商品进行销售。比如,国外的名牌服装在世界各地的尺码都是统一的,只要购买者知道商品尺码,在哪里购买、通过什么方式购买都是一样的。另外,就名牌商品而言,因为网络购物的进货渠道与传统形式的进货渠道是一样的,名牌商品对于商家和购买者都是一种保障,同时也可以减少用户的投诉。2. 网上购物信息化需求 现在有很多网上购物形式的网站,著名的当当网,卓越网,很有代表性。这方面的技术也已经日趋成熟。不过并不意味着做这么一个系统就要把最新的技术都用上。做任何系统,首先都要看需要达到一个什么样的目的,本系统的目标首先要实现作为一个购物网站应有的最基本功能,其次考虑如何使网站的维护更加容易,再者,尽量提高系统的安全性和可靠性。1.2 系统的主要内容一方面让销售商把商品发布于网络,一方面让消费者通过网络来完成商品的交易。为了完成这样的需要,网上购物系统总体分成前台和后台两大模块,前台是用户模块,后台是管理员模块。该系统分为前台操作和后台处理,前台是用户模块。消费者通过网络来完成商品的交易。后台是管理员模块,让销售商把商品发布于网络,并处理消费者的订单。整个系统围绕商品交易流程设计。总体上,其功能贯穿两条线:一条线贯穿着客户注册、查询、购买、更改、取消、下订单等操作;另一条线,管理员具有对商品信息更新、注册用户管理、订单管理、结算等操作,并进行监视分析。目前本系统,前台实现了用户注册,用户登录,用户查询商品,购买商品,修改购物车,生成订单。后台管理员模块实现了管理员登录,商品管理,用户管理,订单管理。另外,网上购物涉及金钱的交易,安全在系统中显得尤为重要。但由于时间与技术有限,未能完全实现,需进一步改进。1.3 系统的主要业务主要包括以下的业务活动:提供给客户的周到的商品信息服务、客户对商品信息的查询、客户的在线注册、商品的选择、订单的更改、订单的取消等。整个网上购物作业务流程分别为:获悉网上购物系统,管理员发布商品相关信息,用户上网浏览商品信息,用户查询相关商品信息,用户注册, 用户登陆,用户选择欲购买商品,用户更新购买商品信息(数量,取消购买等),管理员处理订单,管理员更新相关信息,产生相关的单据,送货、收款等;1.4 开发与运行环境服务器端硬件配置:PIII800以上/512MB内存/36G硬盘操作系统:Windows 2000/XP/2003或者Linux 9.0WEB服务器:JDK5.0 + Tomcat 5.x数据库:My SQL 5.x浏览器端硬件配置:PIII600以上/128MB内存操作系统:Windows 2000/XP/2003第二章 设计原理2.1 系统描述该网上购物系统,要求能通过网络服务器为分布在全国各城市的顾客提供商品查询,购买以及下订单的服务。该系统的工作流程如下:当顾客登录网上购物系统的网站后,系统向用户提供网站商品的具体信息。顾客根据商品信息及网站提供的相关功能,做相应的操作,然后根据顾客的订单信息,执行相应的服务。该系统在网络站点内能够完成顾客注册,登录,查询,下订单等功能;在系统管理员模块能够完成添加、删除或修改商品信息,添加、删除或修改用户信息,确认、删除或修改订单等功能。除此之外,该系统还要求能统计每个月的业务量,以及每各种商品的销售情况,并将这些信息保存在服务器端,以便在服务器端随时查询,给相关人员提供决策支持。2.2 相关术语商品信息(product):用来描述商品信息资料的,网站首页会自动显示部分商品信息。用户可以通过搜索方式查看商品信息,搜索的方式为:输入商品名称,网站会列出商品详细信息,包括商品ID为P001,商品名称,商品类别,商品描述,商品价格等。例如:网站提供的某个商品:名称为奇强,商品类别日用品,商品描述为洗衣粉。商品单价为5.0元。定单项(item):用来描述顾客购买某个商品后,商品信息封装为一个订单项,包含商品信息以及商品的数量。一个商品可以对应多个订单项。例如:顾客选购了商品001,购买数量为5袋,费用为15.0元,订单项ID为I001这就是一个具体的订单项。购物车(cart):用来封装订单项与订项价格。一个购物车可以包含多个定单项。例如:顾客买了两种不同到商品,购物车ID为C001,订单项为I001和I002,订单价格为这两个订单项的和。订单(order):管理员获得顾客购买商品信息后,根据用户选择的支付方式,支付情况,邮寄地址,凭汇款上的定单号,处理此定单的有关信息,并可作某些修改操作;若本网站已寄商品给用户,管理员将凭定单号,修改订单,状态改为已处理;管理员还可以根据日期查询并删除在此日期中的还未付款的用户信息。例如:用户确认提交购物车C001,则系统会生成一个订单如O001。用户(user):用来描述顾客资料,在登录与生成订单时要用到用户个人信息。一个用户可以拥有多个订单。管理员(admin):系统管理员对整个网站后台数据库进行维护,是此网站最重要的大门。在进入本栏目时系统会提示输入系统管理员的用户名和密码,对于其他用户此界面是不可见的。它包括商品管理、用户管理、订单管理。使用帮助(help):通过菜单“使用帮助”,用户可以了解如何使用该网站提供的相关功能,方便用户操作。2.3 主要技术2.3.1开发基本模式J2EE是目前开发Web应用系统的主流平台之一。从整体结构上看,本系统平台采用了MVC模式。MVC模式把整个系统分成3层:模型层(Model Layer)、视图层(View Layer)、控制层(Controller Layer)。其中,Model层表示企业数据及业务逻辑,View层是用户与系统交互的界面,Controller层是在他们两者之间起到沟通的作用,处理用户在View层的输入,并控制View层与Model层的数据流及View层内的页面流。这个模式的好处在于通过分离数据和其表示、分离控制逻辑和表现界面,提高了系统中各模块之间的松散性,增加了代码的可重用性和可维护性。典型的基于J2EE的Web应用系统中,这三层的关系如图2.1所示。图 2.1 MVC模式JSP规范提出了JSP Model1和JSP Model2两种建立应用程序的方式,它们的区别在于处理批量请求的位置不同。如图2.2所示,在Model1体系中,JSP页面独自响应请求并将处理结果返回客户,所有的数据存取都是在由JavaBeans来完成。图 2.2 JSP Model1体系结构Model2体系结构如图2.3所示,它是JSP与Servlet联合起来实现动态内容服务的方法。它吸取了两种技术的优点,用JSP生成表示层的内容,让Servlet完成深层次的处理任务。这是一种有代表性的方法,它清晰地分离了表示和内容,明确了角色的定义以及开发应用程序的实现。图 2.3 JSP Model2体系结构由于本系统业务繁重,开发相对复杂,所以我们选择采用Model2方式来进行开发。在开发JSP页面的时候,我们还引入了Struts1.2这个框架来简化开发的时间。这样,我们的系统在一定程度上有了较为完善的可扩展性和适应性。下面是用Struts实现的本系统的MVC框架。如图2.4。图 2.4 网上购物系统的MVC框架2.3.2 DAO数据存取DAO组件的主要功能是提供数据库存取服务。通过这一组件,我们可以不去考虑底层与数据库连接的具体实现,只要专心于我们的业务设计就好。同时在改变底层数据存取方式时,我们的系统也不用做大规模的调整。本系统采用Hibernate3来实现具体的DAO组件接口。Hibernate是对象/关系映射(Object/Relation Mapping)的解决方案,是一个可以自动的根据xml配置文件来完成对象关系映射,并持久化到数据库的开源组件。采用Hibernate的优点是:1.不需要依赖容器,降低了开发的难度,减少了代码量,开发周期加快;2.封装了JDBC,自动生成效率较高的SQL代码;3.提供状态管理;4.提供了一种面向对象的查询语言HQL。经过了我们的分层,我们的系统可以初步分为以下几个层次。如图2.5。图 2.5 网上购物系统的层次结构第三章 需求分析3.1系统的用例分析根据我们在第1.2节所作的初始化阶段的分析结果,我们在这里创建细化阶段的用例图。如图3.1。图 3.1 机票预订系统用例分析图下面通过系统的实际需求,进行用例分析。register,用户的注册,用户根据自己的实际信息进行系统登录前的注册。login,用户或管理员的登录。view all products,顾客浏览网站提供的商品信息。manage cart,用户对购物车订单项目可进行增加,修改,删除等操作。add cart item to cart,用户向自己购物车中增加一个订单项。modify cart item number, 用户修改自己购物车中订单项的数量。clear cart, 用户清空自己购物车的所有订单项。delete cart items, 用户清空自己购物车的所选中的订单项。managerProduct:管理员对商品信息可进行添加,修改,删除等操作。managerUser:管理员对用户信息可进行添加,修改,删除等操作。managerOder:管理员对用户订单信息可进行添加,修改,删除等操作。3.2可行性研究3.2.1 可行性研究的前提1.要求主要功能:为用户提供网上购物服务,方便用户选购商品,提高其服务质量和服务效率。性能要求:网上购物提供的信息必须及时的反映到系统的网站页面上。网上购物的定单必须无差错的存储在服务器上。对服务器上的数据必须进行及时正确的刷新。输入要求数据完整,详实,输出要求:简捷,快速,实时。安全与保密要求:服务器的管理员享有对网上购物信息库及用户信息库和订单信息库的管理与修改。用户只享有对订单信息的部分修改(写入与读出)。2.目标本系统实现后,大大提高网上购物的服务效率。降低网上购物服务中的错误发生率,减少信息交流的烦琐过程及其带来的开销。3.决定可行性的主要因素成本/效益分析结果,效益 > 成本。技术可行,现有技术可完全承担开发任务。操作可行,软件能被原有工作人员快速接受。3.2.2 技术可行性分析1. 系统简要描述启动网上购物的服务器端后,当用户登录网站浏览商品信息时,点击添加到购物车,向服务器发出添加请求,服务器根据网站信息库的实时数据,向浏览器端发送数据,显示在客户端的屏幕上。当用户确定生成订单时,浏览器端向服务器发出详尽的一份定单,服务器核对后,存入订单信息库,并修改订单信息库。管理员获得顾客购买商品订单信息后,根据用户选择的支付方式,支付情况,邮寄地址,凭汇款上的定单号,处理此定单的有关信息,并可作某些修改操作;若本网站已寄商品给用户,管理员将凭定单号,修改订单,状态改为已处理;管理员还可以根据日期查询并删除在此日期中的还未付款的用户信息。2. 处理数据和数据流程网上购物运转业务流程图如下图 3.2 所示。图 3.2 网上购物业务流程图3.2.3 法律可行性分析所有软件都选用正版。所有技术都由开源代码框架实现。3.2.4 操作可行性分析使用本系统管理人员要求有一定计算机基础的人员,系统管理员要求由计算机的专业知识,网站维护都要经过相关的培训。管理人员也需经一般培训。3.3 系统的数据描述经过详细的调查,我们已经清楚了解了现行的业务流程,接下来给出系统的逻辑模型。构造系统逻辑模型的工具是数据流图和数据字典。3.3.1 数据流图根据业务流程,可以得到本系统的基本系统模型,如图3.3所示。图3.3 网上购物系统顶层DFD图具体到商品管理和订单管理部分我们可以进一步细化得到细化后的数据流图。如图3.4,图3.5。图3.4 商品管理细化的DFD图图3.5 订单管理细化的DFD图3.3.2 数据字典有了系统的数据流图后,还有相当多的数据信息如商品、购物车、订单项、订单、用户、管理员等信息需要进一步描述,这就是需要定义数据字典,才能把现有的系统描述清楚。下面列出了系统的主要数据字典。名称:用户信息:别名:描述:记录用户信息定义:用户信息=用户编号+用户名+密码+性别+地址+出生年月+联系电话+证件号码位置:USER表名称:管理员信息:别名:描述:记录管理员信息定义:管理员信息=管理员编号+管理员姓名+管理员密码位置:ADMIN表名称:订单项信息:别名:描述:记录订单项信息定义:订单项信息=订单项编号+商品信息+商品数量+费用位置:ITEM表名称:商品信息:别名:描述:记录商品信息定义:商品信息=商品编号+商品名+商品描述+商品价格位置:PRODUCT表名称:订单信息:别名:描述:记录订单信息定义:订单信息=订单编号+订单项+用户+状态+费用位置:ORDER表名称:购物车信息:别名:描述:记录购物车信息定义:购物车信息=购物车编号+订单项+费用位置:CART表第四章 系统的概要设计本阶段已在系统的需求分析的基础上,对网上购物系统做概要设计。主要解决了实现该系统需求的程序模块设计问题。包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等。在以下的概要设计报告中将对在本阶段中对系统所做的所有概要设计进行详细的说明。4.1系统功能模块系统功能模块在设计时应该遵循模块独立原理,也就是说,软件应该由一组完成相对独立的子功能的模块组成,这些模块之间的接口关系彼此之间应该尽量简单。对机票预订系统进行分析后,确定本系统应该实现以下功能:在前台模块中实现用户注册、用户登录、用户选购商品、用户修改购物车信息、生成订单功能。在后台管理模块中实现管理员登陆、商品管理、用户管理和订单管理。前台,系统向用户提供网站商品的具体信息。顾客根据商品信息及网站提供的相关功能,做相应的操作,如注册,登录,添加商品,修改购物车信息,确定购买点击生成订单,购买的商品会以订单的形式提交给系统。后台,管理员根据顾客的订单信息,执行相应的服务,如根据订单信息,给顾客送货,订单状态可以标识订单是否被处理,管理员根据订单状态决定哪些需要处理。此外,系统管理员模块还能够完成添加、删除或修改商品信息,添加、删除或修改用户信息,确认、删除等功能。根据功能划分,设计网上购物系统结构如图4.1所示。图4.1 网上购物系统功能模块图4.2 数据库设计本系统使用的关系数据库系统为MySQL 5.0。 数据库生成:在 MySQL 中创立数据库,在数据库中新建所须要的表格,添加资料信息,运行时只须把软件和数据库进行连接。数据库测试:由于本系统所建的数据库相对简单,在测试数据库时只须进行一些添加、删除工作,测试其完整性。数据库维护:数据库的维护应在测试的基础上,对测试的漏洞进行修补。4.2.1 概念设计根据需求分析,可得出概念设计模型为下图4.2所示。图4.2 CDM图4.2.2 逻辑设计根据概念设计模型,PowerDesigner可自动生成物理设计模型。如图4.3所示。图4.3 PDM图4.2.3 物理设计依据PDM图,选择具体的数据库,PowerDesigner可自动生成sql脚本文件。该系统的数据库采用MySQL 5.0。在MySQL 5.0中执行sql脚本文件,即可创建得到对应的表。数据库在其下创建7个数据表,其结构分别如下:表3-1用户表(t_ user)字段名描述类型约束备注userId用户编号INTPRIMARY KEYname姓名VARCHAR(255)NOT NULLpassword密码VARCHAR(255)address地址VARCHAR(255)email邮箱VARCHAR(255)postCode邮编VARCHAR(255)Phone电话VARCHAR(255)表3-2 商品表(t_product)字段名描述类型约束备注productId商品编号INTPRIMARY KEYproductName商品名VARCHAR(255)NOT NULLdescription商品描述VARCHAR(255)productPrice单价DOUBLE表3-3订单项表(t_item)字段名描述类型约束备注Iid订单项编号INTPRIMARY KEYItemNumber数量INTItemCost费用DOUBLEproductId商品INTreferences t_hc_product (productId)OrderId订单INTreferences t_hc_order (userId)表3-4订单表(t_order)字段名描述类型约束备注orderId订单编号INTPRIMARY KEYOrderStatus订单状态BOOLEANOrderCost费用DOUBLEuserId用户INTreferences t_hc_user (id)表 3-5 管理员表(t_admin)字段名描述类型约束备注aid管理员编号INT PRIMARY KEYaname管理员名VARCHAR(255)NOT NULLpassword管理员密码VARCHAR(255)NOT NULL第五章 系统的详细设计在前一阶段,也就是概要设计阶段中,已经将系统用户对本系统的子模块功能做了详细的阐述,这些模块功能具体设计将在本报告中详尽得以叙述及阐明。本阶段已在系统的概要设计的基础上,对网上购物系统做详细设计。主要解决了实现该系统程序模块具体设计问题。包括确定算法,数据结构,模块接口的使用,数据库的动态操作以及界面设计等。在以下的概要设计报告中将对在本阶段中对系统所做的所有详细设计进行详细的说明。5.1 包结构根据前面的分析,我们将系统程序模块进行了划分。在部署系统时,要用到“包”的概念,把繁杂的程序进一步细化,归类。如图5.1所示。图5.1各包情况图5.2 详细类图在entity下面是实体类。里边包括了系统中的实体Bean。如图5.2所示。图5.2 系统中的实体类5.3 Action组件映射图根据前面的描述,下面把本系统中最为关键的用户登录、添加商品、修改订单项、删除/确认订单等的详细的流程用Action组件映射图加以描述。如图所示。1.用户登录流程: 负责判断数据库中该用户是否存在,如果该用户不存在则返回到登录界面并提示用户,若存在则把该用户信息放在session中。图5.3用户登录流程2.商品列表流程: 获取数据库中的商品信息并保存在请求中。图5.4商品列表流程3.添加商品条目到购物车流程: 从请求中获取要添加的产品id,然后向保存在session中的购物车添加该商品条目。这里需先判断cart中是否已有该商品所对应的条目图5.5商品列表流程4.转到购物车信息页面流程:图5.6商品列表流程 5.修改购物车商品数量流程: 根据请求中页面表单中的显示商品数量所对应的参数值,来修改购物车中商品条目的数量值。图5.7修改购物车商品数量流程6.操作定单(转到定单页面)流程: 用户已经登录则转到定单显示页面,若用户尚未登录则转到登录页面。图5.8操作定单流程7.生成定单流程:生成订单用户购买的商品才会提交给系统。图5.9生成定单流程5.4 页面设计主要的几个系统页面有登陆页面,主页面,已经其他子系统页面。页面如下:图5.10 前台首页图5.11 用户登陆图5.12用户购物车信息图5.13生成订单信息图5.14 后台管理员登陆图5.15 后台登录成功图5.16 用户管理模块图5.17订单管理模块图5.18 商品管理模块5.5 MVC模式应用下面以用户的登录为例,用本系统开发时用到的Struts技术把详细的开发步骤简单介绍一下。先给出登录的时序图,如图5.13所示。图5.19 用户登录时序图当用户在浏览器登录,会向系统发出一个request(login.do),在MVC框架下,就是在View层得到login.do请求,传给在Struts-config.xml文件下定义的ActionServlet,之后它会把请求按照Action中定义的跳转对象,交给UserAction这个类去执行login方法,当检查通过,是合法的用户信息时,login方法去调用UserService类(存在于Model层),执行用户登录的响应,系统返回一个User对象,放到Session(会话)里(表示登录成功,会话中保存相应的用户信息)。执行跳转,在View层会返回登录成功的页面。整个的流程都是在ActionServlet(Controller层)的控制之下进行的。下面给出与用户登录操作有关的代码。Struts-config.xml文件中,配置<!- user&login form begin -><form-beans><form-bean name="loginForm" type="com.tarena.webshop.form.ActionLoginForm"/></form-beans><action-mappings><action path="/system/login/login" type="com.tarena.webshop.struts.action.LoginAction"parameter="login" name="loginForm" input="/view/user/login/loginfail.jsp" validate="true"><forward name="loginFail" path="/view/user/login/loginfail.jsp" redirect="true"/> <forward name="loginSuccess" path="/view/user/login/loginsuccess.jsp" redirect="true"/></action><action path="/system/login/loginout" type="com.tarena.webshop.struts.action.LoginAction"parameter="loginOut"><forward name="loginout" path="/view/user/login/loginout.jsp" redirect="true"/></action></action-mappings>LoginAction类import com.tarena.webshop.Model.entity.*;import com.tarena.webshop.exception.*;import com.tarena.webshop.form.ActionLoginForm;public class LoginAction extends MappingDispatchAction/登录用户,判断用户名,密码是否正确.public ActionForward login(ActionMapping mapping,ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception ActionForward forward=null;ActionLoginForm nForm=(ActionLoginForm)form;if(!isTokenValid(request,true)throw new NoTokenException();String username=nForm.getUsername();String password=nForm.getPassword();tryIShoppingCartDao dao=new ShoppingCartDao();User user=dao.Login(username,password);System.out.println(username);/返回的user为null,则用户名密码错误,转到"loginError"页面.if(user=null)forward=mapping.findForward("loginFail");elseHttpSession session=request.getSession(true);session.setAttribute("user",user);forward=mapping.findForward("loginSuccess");catch(ConnectDBException e)e.printStackTrace();