山东轻工业学院2012届本科毕业生设计(论文)
3.2.3系统结构图
网络商店系统界面表现层WebFlowSpring/StructsService 接口业务层Service工具支付安全交互实体DAO接口持久层Hibernate支付安全Dao实现交互数据库
图3-3 系统结构图
3.3系统运行环境
硬件平台:
? CPU:P4 1.8GHz;
? 内存:256MB以上。 软件平台:
? 操作系统:Windows xp;
? 数据库:Oracle; ? 开发工具包:JDK 7
? 分辨率:最佳效果1024×768像素。
3.4开发技术和方法 3.4.1 Java起源和背景
Java是一个由Sun公司开发而成的新一代编程语言。使用它可在各式各样不同机器、不用操作平台的网络环境中开发软件。不论使用的是哪一种WWW浏览器,哪一种计算机,哪一种操作系统,只要WWW浏览器上面注明了“支持Java”就可以看到生动的主页。Java正在逐步成为Internet应用的主要开发语言。它彻底改变了应用软件的开发模式,带来了自PC机以来又一次技术革命,为迅速发展的信息世界增添了新的活力。
Sun的Java语言开发小组成立于1991年,其目的是开拓消费类电子产品市场,例如交
6
山东轻工业学院2012届本科毕业生设计(论文)
互式电视、烤面包箱等。Sun内部人员把这个项目称为Green,那时World Wide Web还仅仅在纸上。该小组的领导人James Gosling,是一位非常杰出的程序员。他出生于1957年,于1984年加盟Sun Microsystems公司,之前在一家IBM研究机构工作。他是Sun NeWs窗口系统的总设计师,也是第一个用C实现EMACS的文本编辑器COSMACS的开发者。
在开发过程中,Gosling深刻体会到消费类电子产品和工作站产品在开发哲学上的差异:消费类电子产品要求可靠性高、费用低、标准化、使用简单,用户并不关心CPU的型号,也不欣赏专用且昂贵的RISC处理器,他们需要建立在一个标准基础之上的具有一系列可选的方案,从8086到期80586都可以选取。
它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景。于是改造了Oak,以“Java”的名称正式发布。 JAVA
Java 编程语言的风格十分接近C、C++语言。Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在 J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。 与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。“Java 语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。 Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。 Java 平台是基于 Java 语言的平台。这样的平台目前非常流行。因此微软公司推出了与之竞争的.NET平台以及模仿 Java 的 C#语言。
3.4.2 Java语言的特点
1.平台无关性
Java是平台无关的语言,它指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。平台无关有两种:源代码级和目标代码级。C和C++具有一定程度的源代码级平台
7
山东轻工业学院2012届本科毕业生设计(论文)
无关,表明用C或C++写的应用程序不用修改只需重新编译就可以在不同平台上运行。
2.分布式
分布式包括数据分布和操作分布。数据分布是指数据可以分散在网络的不同主机上;操作分布是指把一个计算分散在不同的主机上处理。
Java支持WWW客户机/服务器计算模式,因此,它支持这两种分布性。对前者,Java提供了一个称作URL的对象,利用这个对象,可以打开并访问具有相同URL地址上的对象,访问方式与访问本地文件系统相同。对于后者,Java的Applet小程序可以从服务器下载到客户端,即部分计算在客户端进行,提高系统执行效率。
3.可靠性和安全性
Java最初设计目的是应用于电子类消费产品,因此要求较高的可靠性。Java虽然源于C++,但它消除了许多C++不可靠的因素,可以防止许多编程错误。首先,Java是强类型的语言,要求显示的方法声明,这保证了编译器可以发现方法调用错误,保证程序更加可靠;其次,Java不支持指针,这杜绝了内存的非法访问; Java自动单元收集防止了内存丢失等动态内存分配导致的问题; Java解释器运行时实施检查,可以发现数组和字符串访问的越界;最后,Java提供了异常处理机制,程序员可以把一组错误代码放在一个地方,这样可以简化错误处理任务,便于恢复。
4.多线程
线程是操作系统的一种新概念,又被称作轻量进程,是比传统进程更小的可并发执行的单位。C和C++语言采用单线程体系结构,而Java却提供了多线程支持。
Java在两方面支持多线程。一方面,Java环境本身就是多线程的,若干个系统线程运行,负责必要的无用单元回收、系统维护等系统级操作;另一方面,Java语言内置多线程控制,可以大大简化多线程应用程序开发。Java提供了一个类Thread,由它负责启动运行,终止线程,并可检查线程状态。Java的线程还包括一组同步原语。这些原语负责对线程实行并发控制。利用Java的多线程编程接口,开发人员可以方便地写出支持多线程的就用程序,提高程序执行效率。必须注意的是,Java的多线程支持在一定程度上受运行时支持平台的限制。
5.Java是静态类型的
在一个Java程序中,必须定义所用对象(数字、字符、数组等)的类型。这有助于编程人员很快发现问题,因为当程序编译时可以检测类型错误。
不过,Java系统中的对象也有动态类型。要求一个对象为动态类型往往是可能的,所以编程人员写的程序可以对不同类型的对象做不同的事。
6.Java是编译型的
当运行Java程序时,它首先被编译成字代码。字节代码非常类似于机器指令,所以Java程序运行时比较高效。而且,字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可在众多不同的计算机上执行。
8
山东轻工业学院2012届本科毕业生设计(论文)
Java源程序被编译成类文件,相当于程序的字节代码表现。在一个Java类文件中,所有对方法及实例变量的参照均按名进行,并在第一次执行代码时加以分辨。这使得代码更通用,更不易受修改的影响,而仍具高效。
3.4.3 Oracle 数据库简介
Oracle 公司是全球最大的信息管理软件及服务供应商,也是全球第二大独立软件公司,成立于1997年,总部位于美国加州Redwood shore,Oracle是世界上第一个商品化的关系型数据库管理系统,也是第一个在其权限产品中开发并部署100%基于互联网企业软件的公司,为世界上150个以上的国家提供数据库、服务器、开发工具和企业应用产品,还有相关的咨询、教育和支持服务。
根据META集团最新公布的市场研究报告,在高达130亿美元的全球关系型数据库软件市场上,Oracle 9i数据库名列第一。
3.4.4 Struts 2 简介
Struts 2是Struts的下一代产品,是在 struts 和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2只有很小的变化。
Struts2 是为Java Web开发所产生的一个开源框架,自推出以来,不断受到开发者的追捧,得到了广泛的应用。
经过不断的发展,Struts又升级到了Struts2,现在基本上都是用的Struts2,它解决了很多前一版本的问题,比如,代码太多时,会引起“类爆炸”、单元测试困难等。
Struts 2是Struts的下一代产品。是在 Struts 和WebWork的技术基础上进行了合并,全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。因为Struts 2和Struts 1有着太大的变化,但是相对于WebWork,Struts 2只有很小的变化。
由于Struts2很多优秀特性,所以基本上现在的企业级的JSP Web开发都用到了Struts2,它可以使你的页面框架的搭建更便捷,更实用,也更规范。用Struts2可以为我们节省很多细节上的精力,使我们在编程时,能从更广的角度去考虑整个工程,便于我们搭建出更稳定优秀的网站。
9
山东轻工业学院2012届本科毕业生设计(论文)
3.4.5 Hibernate简介
Hibernate框架是用于封装Web工程与数据库的细节的,现在Hibernate的最新是Hibernate3.
Hibernate框架也是开源的,它用于封装与数据库连接的细节,使我们只需创建一些与数据库的表相对应的POJO(Plain Old Java Object)类,然后配置好xml文件,当我们与数据库打交道时,比如保存一个表的内容,只需用save这一个方法即可,至于底层的sql语句是如何写,数据是如何保存到数据库的,这些都不用我们再去操心。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是 Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate框架可以说是底层数据库与顶层数据之间的一个中间件,它将底层的细节进行封装,留出相应的借口供我们使用。况且Hibernate框架的使用也是很开放的,伸缩性很好,虽然你使用了Hibernate框架,但是你仍然可以绕过它使用最原始的自己写sql语句直接对数据库进行访问。这是为了解决有些特殊或是复杂的数据访问时由于Hibernate框架的封装而导致不方便操作的情况。
10