1 绪 论
网上购物起源于七十年代,当时一些大公司通过建立自己的计算机网络实现各个机构之间、商业伙伴之间的信息共享,这个过程被称为EDI(电子数据交换)。EDIton通过传递标准的数据流可以避免人为的失误、降低成本、提高效率,估计在世界1---个最大的企业中95%以上的在使用这一技术。它过去是、现在也是网上购物的基础。 
近年来,随着信息的全球化和国际互联网的普及化,越来越多的人想使用其无国界、无时间、无地域限制的便利环境来经营拓展商务。因此,网上购物成为互联网应用的最大热点,越来越多的企业通过使用网上购物技术进行商业上的交易以减少成本。当然,还有更多的公司想使用网络技术来架构一个虚拟的店面进行营业交易,企业与消费者通过网络完成交易,非但能使企业降低成本也可以让消费者在一个舒适的地点享受逛街与购物的乐趣。随着网上购物风潮的扩大,将会有更多的公司连上网络进行各项业务,而不只是将公司的产品介绍的网页放在网站上供人浏览而已。
随着因特网的不断发展和信息高速公路的逐步延伸,人类社会现今已昂首步入信息社会时代,而商品交易模式在不断的发生着变化。在社会化大生产以及社会分工日趋专业化的今天,
网上购物无形的占据着主要地位。网上购物系统一般有商品管理、购物车管理、系统同管理和会员管理等要素组成,是一个网上交易的过程。其主要任务是交易各方以电子交易方式而不是通过当面交换或者之间面谈方式进行的任何形式的商业交易。显然,这与“网上购物”的概念和内容既有联系,又有明显的区别。他们设计的信息范围,服务功能以及社会意义等都不相同。网上购物系统搜集和管理的是特定的信息,其范围较窄,功能和目标比较明确、具体,主要是为特定的领域和机构的决策和管理服务;而信息管理则要对各类信息及其相关要素进行全方位管理,而对全社会开展信息服务,以便有效的满足社会的信息需求。
今天,大多数企业已经建立自己的网站介绍和销售他们的产品。您只要拥有一个计算机、浏览器、Internet连接和信用卡,今天就可以从网络上购买到书本、CD、鲜花、飞机票、电视、甚至是汽车。如今网上购物已经成为企业增加市场竞争力的一种重要的手段,同时使人民购物更加方便快捷。
 

2 相关知识和开发工具简介
2.1  Java的面向对象特性
Java包含了一种计算机编程语言和一个平台。Java编程语言是一种高级语言。由Sun微系统公司(Sun Macrosystem)发布,并作为一种开放的标准进行提供。Java平台包括了Java虚拟机和Java应用程序接口(API)。Java将原程序编译成字节码(bytecode),并通过Java虚拟机(JVM)解释字节码的方式来执行。因为这种运行方式,只要针对不同的计算机平台准备相应的Java虚拟机,就可以很方便的实现Java语言的跨平台性。因此,Java非常适合于企业网络和Internet环境,现在已成为Internet中最受欢迎、最有影响的编程语言之一。 Java有许多值得称道的优点,如简单、面向对象、分布式、解释性、可靠、安全、结构中立性、可移植性、高性能、多线程、动态性等。Java来自于Sun公司的一个叫Green的项目,其原先的目的是为家用消费电子产品开发一个分布式代码系统,这样我们可以把E-mail发给电冰箱、电视机等家用电器,对它们进行控制,和它们进行信息交流。开始,准备采用C++,但C++太复杂,安全性差,最后基于C++开发一种新的语言Oak(Java的前身),Oak是一种用于网络的精巧而安全的语言,Sun公司曾依此投标一个交互式电视项目,但结果是被SGI打败。可怜的Oak几乎无家可归,恰巧这时MarkArdreesen开发的Mosaic和Netscape启发了Oak项目组成员,他们用Java编制了HotJava浏览器,得到了Sun公司首席执行官ScottMcNealy的支持,
触发了Java进军Internet。面向对象的程序设计很接近于我们人类自然的思维,相对于面向过程的程序设计,它具有更好的可扩展性和可维护性,使我们编写的代码更健壮。
面向对象主要有四大特性:封装、抽象、继承和多态。
封装:在面向对象语言中,封装特性是由类来体现的,我们将现实生活中的一类实体定义成类,其中包括属性和行为(在Java中就是方法),就好像人类,可以具有name,sex,age等属性,同时也具有eat(),sleep()等行为,我们在行为中实现一定的功能,也可操作属性,这是面向对象的封装特性;
抽象:抽象就是将一类实体的共同特性抽象出来,封装在一个抽象类中,所以抽象在面向对象语言是由抽象类来体现的。比如鸟就是一个抽象实体,因为抽象实体并不是一个真正的对象,它的属性还不能完全描述一个对象,所以在语言中体现为抽象类不能实例化;
继承:继承就像是我们现实生活中的父子关系,儿子可以遗传父亲的一些特性,在面向对象语言中,就是一个类可以继承另一个类的一些特性,从而可以代码重用,其实继承体现的是is-a关系,父类同子类在本质上还是一类实体。
多态:多态就是通过传递给父类对象引用不同的子类对象从而表现出不同的行为,多态可为程序提供更好的可扩展性,同样也可以代码重用。
2.2  Hibernate技术介绍
Hibernate是一种Java语言下的对象关系映射解决方案。 它是一种自由、开源的软件。它用来把对象模型表示的对象映射到基于SQL 的关系模型结构中去,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。Hibernate 不仅管理Java 类到数据库表的映射(包括从Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL 和JDBC 处理数据的时间。它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来它的优点是:
    Hibernate 使用 Java 反射机制 而不是字节码增强程序来实现透明性。
    Hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出。
    它支持各种关系数据库,从一对一到多对多的各种复杂关系
2.3  Struts2技术介绍
网上购物的网站
Struts是在JSP Model2的基础实现了MVC设计模式的WEB Framework。基于Struts构架的WEB应用程序基本上符合JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型。它的目的是为了减少在运用MVC设计模型来开发Web应用的时间,它将可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。Struts由一组相互协作的类、Serlvet以及丰富的标记库(jsp tag lib)和独立于该框架工作的实用程序类(Validator)组成
        Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和Object Relation Bridge。在视图层,Struts能够与JSP, Velocity Templates,XSL等等这些表示层组件想结合。
2.4  Spring简介
Spring作为实现J2EE的一个全方位应用程序框架,为我们开发企业级应用提供了一个健壮、高效的解决方案。主要有以下几个特点:
1 非侵入式:对于写代码从来不考虑复用和移植的程序员来说,这一点根本就没有吸引力,
那么请跳过。所谓非侵入式是指Spring框架的API不会在业务逻辑上出现,也就是说我们的业务逻辑应该是纯净的,不能出现与业务逻辑无关的代码。首先针对应用而言,这样我们才能将业务逻辑从当前应用中剥离出来,从而在其他的应用中实现复用;其次针对框架而言,由于业务逻辑中没有Spring的API,所以业务逻辑也可以从Spring框架快速的移植到其他框架。
2 容器:Spring提供容器功能,容器可以管理对象的生命周期,对象与对象之间的依赖关系。你可以写一个配置文件(通常是xml文件),在上面定义对象的名字,是否是单例,以及设置与其他对象的依赖关系。那么在容器启动之后,这些对象就被实例化好了,你直接去用就好了,而且依赖关系也建立好了。
3 IOC:控制反转,谓之依赖关系的转移,如果以前都是依赖于实现,那么现在反转为依赖于抽象吧,其实它的核心思想就是要面向接口编程
4 依赖注入:建立对象与对象之间依赖关系的实现,包括接口注入、构造注入、set注入,在Spring中只支持后两种
5 AOP:面向方面编程,我们可以把日志、安全、事务管理等服务(或功能)理解成一个方面,那么以前这些服务一直是直接写在业务逻辑的代码当中的,这有两点不好;首先业务逻辑不纯净,其次这些服务被很多业务逻辑反复使用,完全可以剥离出来做到复用。那么AOP就是这些问题的解决方案,我们可以把这些服务剥离出来形成一个方面,以期做到复用;然后将方面动态的插入到业务逻辑中让业务逻辑能够享受到此方面的服务
其他还有一些特点不是Spring的核心,这里只做简单陈述,如:对JDBC的封装与简化,提供事务管理功能,对O/R mapping工具(hibernate、iBATIS)的整合;提供MVC解决方案,也可以与其他web框架(Struts、JSF)进行整合;还有对JNDI、mail等服务进行封装。