当前位置:文档之家› 毕业论文

毕业论文

摘要

时代在进步,科学也在飞速发展,网络购物成为很多人优先选择的购物方式,网络购物帮助管理人员很好的管理了交易数据,也为数据安全提供了保障,同时为购物者提供了很好的购物方式。

本论文主要阐述了如何在J2EE上利用Struts和Hibernate框架开发一个性能优越、可扩展性强和安全可靠稳定的网上商城系统。本文先从理论的角度介绍三层架构、Struts2、Hibernate等相关技术以及采取三层架构模式开发项目的工作原理,然后利用这些技术开发的一个网上商城项目的部分功能模块来说明Struts2、Hibernatel和三层架构框架在实际Web项目中的可行性和优越性。同时还论述了该网上商城管理系统具体功能的实现过程,主要包括数据库的设计,商品管理功能,用户管理,角色管理,留言管理,新闻管理,购物管理等等。本网上商城管理系统界面美观,简洁大方,容易操作,比较实用。

关键词:Struts;Hibernate;J2EE;Java

目录

第一章绪论 (1)

1.1 论文的主要内容 (1)

1.2 论文的结构 (1)

第二章相关技术简介 (2)

2.1 Struts2技术简介 (2)

2.2 Hibernate技术简介 (4)

第三章需求分析 (8)

3.1 系统功能需求 (8)

3.2可行性研究 (9)

3.3系统环境要求 (9)

第四章概要设计 (10)

4.1 架构设计 (10)

4.2 功能模块设计 (11)

4.3 数据表设计................................................................... 错误!未定义书签。第五章详细设计 . (15)

5.1 系统配置 (15)

5.1.1 应用层配置 (15)

5.1.2 数据库连接配置 (16)

5.2网上购物管理模块的实现............................................ 错误!未定义书签。

5.2.1 热卖商品模块 (17)

5.2.1.1视图层设计............................................... 错误!未定义书签。

5.2.1.2 业务层处理.............................................. 错误!未定义书签。

5.2.1.3 数据层处理.............................................. 错误!未定义书签。

5.2.2 订单管理模块 (17)

5.2.2.1视图层设计............................................... 错误!未定义书签。

5.2.2.2 业务层处理.............................................. 错误!未定义书签。

5.2.2.3 数据层处理............................................... 错误!未定义书签。

第六章总结与展望 ............................................. 错误!未定义书签。

参考文献 (27)

第一章绪论

1.1 论文的主要内容

本文将阐述一个基于J2EE技术的网上商城管理系统的设计与实现,主要实现网上购物管理(搜索商品,查看商品列表,查看商品信息,购物车功能,用户下订单,查看新闻,留言等等),后台管理(商品的增删改查,留言回复,订单状态的修改,商品分类管理,新闻增删改查,用户的增删改查功能等等)文章将首先阐述网上商城管理系统分析部分,包括需求分析、业务流程分析等;系统概要设计部分将主要介绍该系统的总体设计、功能设计、架构设计以及数据结构设计;系统详细设计部分将说明整个系统的数据库设计,接口设计以及几个主要功能模块的流程图以及其部分模块的实现代码,并对实现该系统的一些关键技术和组件进行简单的介绍;最后论文将对整个系统的设计过程与结果进行总结,总结该系统的不足之处,并对这些不足之处提出修改意见;其次就是对该系统的未来进行展望,看还有哪些技术值得改进可以使得运行效率更高。

1.2 论文的结构

第二章为相关技术的介绍,首先介绍本网上商城管理系统中所用的到Stuts2技术,然后在介绍Hibernate技术。

第三章为整个系统需求分析,将包括系统的系统的功能需求分析、系统的可行性分析、系统开发环境等方面进行简要介绍。

第四章为概要设计,将包括系统架构设计,系统功能模块设计与数据结构设计三个大的方面。

第五章为整个网上商城管理系统的详细设计,在这一章论文将列出2到3个模块进行详细讲解,其它的功能模块则进行简单说明。另外论文将详细阐述本网上商城管理系统的关键技术是如何实现的。

第六章为最后一章,论文将在这一章对整个系统的开发过程中所学到的知识与经验进行总结,总结还有那些不足之处以及仍然可以进行改进的地方。

第二章相关技术简介

2.1 Struts2技术简介

Struts2 是一种JSP Model2模式的框架。JSP Model2 模式示意图如图2.1

所示,是由sun公司又推出了一种架构模式。这个模式是结合了servlet,JSP,javabean的优点推出的一种模式。这个模式分为三部分servlet,JSP,javabean。servlet做的事情是控制到底最后显示哪个JSP页面给用户、JSP做的就是响应

用户请求,把结果数据展现给用户、而javabean做的就不单单是对数据库的数

据的存取了,这里复杂的业务功能和逻辑处理都交给了它处理。从它的设计结

构就可以看出JSP Model2的优点。由于它在设计上很好的分工,也就是做显

示的是JSP,做逻辑处理的是javabean,做控制的是servlet。这样分工以后,

对我们开发人员来说,就可以很好的做自己的开发工作了,而美工人员也不必

了解和看懂业务逻辑处理代码,在很大的层次上提高开发的效率。

图2.1 JSP Model2 模式示意图

事实上Struts2就是一个大的Servlet,所有的请求都会通过这个Servlet就行转发到相应的action 中就行处理。它是一个典型的MVC模式框架。虽然Struts2号称是一个全新的框架,但这仅仅是相对Struts 1而言。Struts 2 与Struts1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。从某种程度上来讲,Struts2没有继承Struts1的血统,而是继承WebWork的血统。或者说,WebWork衍生出了Struts2,而不是Struts1衍生了Struts2.因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证:而且吸收了Struts 1和WebWork两者的优势,因此,是一个非常值得期待的框架。

Apache Struts2是一个优雅的,可扩展的JAVA EE web框架。框架设计的目标贯穿整个开发周期,从开发到发布,包括维护的整个过程。Apache Struts 2即是之前大家所熟知的WebWork 2.在经历了几年的各自发展后,WebWork和Struts 社区决定合二为一,也即是Struts 2。Struts2的工作流程示意图如图2.2所示。

它的整个工作过程:

1、当Servlet容器接收到一个Httprequest请求之后,将请求交给在web.xml 中配置的过滤器StrutsPrepareAndExecuteFilter,调用它的dofilter方法。

2、StrutsPrepareAndExecuteFilter询问ActionMapper,以便确定这个请求是否有对应的Action调用。

3、ActionMaper返回一个描述Action调用的ActionMapping对象。

4、StrutsPrepareAndExecuteFilter调用Dispatcher类的serviceAction()方法。

5、Dispatcher调用ActionProxy的execute()方法。

6、ActionProxy设置ActionProxy对象的执行上下文,然后调用其invoke()方法。

7、ActionInvocation的invoke()方法从拦截器中查找尚未执行的拦截器,然后调用它的intercept(invocation()方法。并将自身的引用对象的引用最为参数传递给拦截器。

8、拦截器完成某系预处理工作之后,反过来调用ActionInvocation的invoke()方法。ActionInvocation维护自己的状态,所以它知道哪些拦截器已经被执行了,如果还没有别执行的拦截器,就继续执行它的intercept(invocation()方法。

9、如果所以的拦截器都已经执行过了,就调用Action实例的execute()方法(如果没有在struts.xml文件中设置其他方法,否则执行其他方法)。

10、ActionInvocation根据Action执行返还的结果码,查找对应的Result,调用Result的execute(invocation),将结果呈现给用户。

11、ActionInvocation的invoke()方法将控制权返还给拦截器映射中的最后一个拦截器,该拦截器完成所有的后期处理工作,如此反复,知道所有的拦截器都成返回。

12、ActionInvocation的invoke()方法执行完毕之后,向ActionProxy返回一个String类型的结果码,最后,ActionProxy清理状态并返回。

2.2 Hibernate技术简介

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。

①、Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD 的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意

的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应

用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。

②、SessionFactory接口:SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

③、Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。

④、Transaction接口:Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。

⑤、Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或原生的SQL语句两种表达方式。HQL语言是一种面向对象的查询语句,它更容易让程序员所接受,同时HQL语言还屏蔽了不同SQL语言之间的差异。

Hibernate的工作原理。

Hibernate 首先进行初始化.读取Hibernate 的配置信息然后再创建Session Factory。步骤如下:

1)创建Configeration类的实例。它的构造方法:将配置信息(Hibernate config.xml)读入到内存。一个Configeration 实例代表Hibernate 所有Java类到Sql数据库映射的集合。

2)创建SessionFactory实例,把Configeration 对象中的所有配置信息拷贝到SessionFactory的缓存中。SessionFactory的实例代表一个数据库存储员源,创建后不再与Configeration 对象关联。缓存(cache):指Java对象的属性(通常是一些集合类型的属性--占用内存空间。SessionFactory的缓存中:Hibernate 配置信息。OR映射元数据。缓存-大:重量级对象小:轻量级对象

3)调用SessionFactory创建Session的方法。1、用户自行提供JDBC连接。Connection con=dataSource.getConnection();Session s=sessionFactory.openSession(con);2、让SessionFactory提供连接Session s=sessionFactory.openSession();

4)通过Session 接口提供的各种方法来操纵数据库访问。

Hibernate 的缓存体系。

一级缓存:Session 有一个内置的缓存,其中存放了被当前工作单元加载

的对象。每个Session 都有自己独立的缓存,且只能被当前工作单元访问。

二级缓存:SessionFactory的外置的可插拔的缓存插件。其中的数据可被多个Session共享访问。SessionFactory的内置缓存:存放了映射元数据,预定义的Sql语句。

Hibernate 中Java对象的状态

临时状态(transient)。特征:(1)不处于Session 缓存中、(2)数据库中没有对象记录。Java如何进入临时状态:(1)通过new语句刚创建一个对象时、(2)当调用Session 的delete()方法,从Session 缓存中删除一个对象时。

持久化状态(persisted)。特征:(1)处于Session 缓存中、(2)持久化对象数据库中设有对象记录、(3)Session 在特定时刻会保持二者同步。Java如何进入持久化状态:(1)Session 的save()把临时->持久化状态、(2)Session 的load()、get()方法返回的对象、(3)Session 的find()返回的list集合中存放的对象、(4)Session 的update(),saveOrupdate()使游离->持久化

游离状态(detached)。特征:(1)不再位于Session 缓存中、(2)游离对象由持久化状态转变而来,数据库中可能还有对应记录。Java如何进入持久化状态-》游离状态:(1)Session 的close()方法、(2)Session 的evict()方法,从缓存中删除一个对象,提高性能。

所谓Hibernate的基本工作原理,换言之,也就是Hibernate大体的工作流程。其基本工作流程示意图如2-3:

图2.3 Hibernate工作流程示意图

其工作流程如下:

1.实例化Configeration对象,读取hibernate.cfg.xml文件的配置内容,并根据相关的需求建好表或者和表建立好映射关系

2.通过实例化的Configeration对象就可以建立sessionFactory实例

3.通过sessionFactory实例,创建或者打开session对象。.

4.得到session之后,创建事务Transation对象。

5. 进行相关的持久化操作,调用save、saveOrUpdate、delete、get等方法对数据库进行增删改查操作。除了比较复杂的全文搜索外,简单的操作都可以通过hibernate封装好的session内置方法来实现。

6.提交事务,对数据库数据进行更新,同步hibernate缓存和数据库的记录。

7. 关闭Session对象。一旦一个事物执行结束,则关闭Session对象。释放内存服务器资源。

8. 关闭SesstionFactory。SessionFactory的启动过程是非常耗时间的,所以一般不会在进行每一次数据库操作都把SessionFactory关闭,这样会严重的影响系统的性能的。系统一般在服务器第一次启动的时候实例化一个SessionFactory实例对象并存储到内存中,以后要用到得时候直接从内存中去取就行了。加快系统访问数据库的性能。所以当关闭Session对象的时候也就意味着一个数据库操作流程的结束了。

第三章需求分析3.1 系统功能需求

3.1.1前台需求

1.用户注册

2.用户登录

3.用户浏览所有商品(分页浏览)

4.根据商品类别浏览商品

5.浏览特价商品

6.浏览热卖商品

7.用户留言

8.浏览新闻标题信息

9.浏览详细新闻信息

10.用户购买商品

11.浏览最近浏览的商品

3.1.2 后台需求

1.管理员登录

2.用户管理(新增,修改,删除用户)

3.分类管理(新增,修改,删除分类)

4.商品管理(新增,修改,删除商品)

5.订单管理(查询,修改,删除订单)

6.留言管理(查询,修改,删除留言)

7.新闻管理(查询,修改,删除,新增新闻)

3.2可行性研究

技术可行性分析:

Struts2、Hibernate、JSTL、OGNL、AJAX等这些技术都是经过前人无数次试验通过的,就技术层面上来讲,用它们实现一个小型的内容管理系统是搓搓有余的;而类似这种管理系统系统在互联网上已经有过相当多的成功的案例了,所以不论是就技术而言还是就系统本身而言都是具有可行性的。

3.3系统环境要求

本系统在Win7 系统上开发。需jdk1.6以上版本,Oracle数据库tomcat 或者jboss 等jsp服务器。开发工具:MyEclipse 10 。系统GUI/LOGO辅助设计工具:photoshop CS5,dreamweaver CS5。

第四章概要设计

4.1 架构设计

本机械工艺图纸管理系统采用B/S模式架构。B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如FireFox或Internet Explorer,服务器安装Oracle、SQL Server或MySQL等数据库。浏览器通过Web Server 同数据库进行数据交互。

我们采用基于B/S结构的三层应用模型来实现网上商城管理系统。目前,在Internet应用体系结构中,事物处理被划分为3层,即Web Browser—Internet Server—Database Server。在这种体系结构中,业务的表达通过简单的Web Browser来实现,用户通过Web Browser提交表单,把信息传递给Internet Server,Internet Server根据用户的请求,分析出要求数据库服务器进行的查询,交给数据库服务器去执行,Database Server把查询的结果反馈给Internet Server,在由Internet Server用标准的HTML语言反馈给Web Browser。

三层应用模型同传统的C/S(Client/Server)模型相比,提高了系统的可扩展性、安全性和可重用性。它将应用逻辑与用户界面和数据访问相隔离,这样便使系统的维护变得简单,同时可以通过采用组件技术,降低数据库服务器的负担,从而提高性能。

B/S技术成本较低,一般只需安装、配备在服务器上。在客户机上的工作较少,故降低了开发及管理成本。而C/S的应用不论是安装、配备还是升级,都需要在所有的客户机上实施。

B/S技术维护工作主要集中在服务器端,客户端的维护工作量十分少。而C/S结构中客户机和服务器的维护工作量都较大。Web Browser技术简明易用,一旦用户掌握了Web Browser的用法,也就掌握了使用系统上各种信息资源的钥匙。

网上商城管理系统前台功能模块示意图

网上商城管理系统后台功能模块示意图

网上商城前台管理

显示商品分类模块

显示新闻模块

用户留言模块

购物车模块

最近浏览模块

下订单模块

热卖、特价商品模块

注册登录模块

网上商城后台管理

用户管理模块

商品管理模块

商品分类管理模块

新闻管理模块

留言管理模块

订单管理模块

登录模块

表一:EasyBuy_Comment(评论表)

字段名称说明

ec_id编号自动编号(标识列),从1开始,主键

ec_reply回复

ec_content内容

ec_create_time 创建时间

ec_reply_time 回复时间

ec_nick_name 留言用户昵称

表二:EasyBuy_News(新闻表)

字段名称说明

en_id编号自动编号(标识列),从1开始,主键

en_title标题

en_content 内容

en_create_time录入日期

表三:EasyBuy_Order(订单表)

eo_id编号自动编号(标识列),从1开始,主键

eo_user_id用户ID

eo_user_name 用户名

eo_user_address 用户地址

eo_create_time 创建时间

eo_cost 金额

eo_status 状态 1 下单 2 审核通过 3 配货 4 送货中5收获

并确认

eo_type 付款方式 1 货到付款2 网上支付

表四:订单明细表easybuy_order_detail

字段名称说明

eod_id编号自动编号(标识列),从1开始,主键 number(10) eo_id订单ID number(10)

ep_id 商品ID number(10)

eod_quantity 数量number(6)

eod_cost 金额number(10,2)

表五:商品分类表easybuy_product_category

字段名称说明

epc_id编号自动编号(标识列),从1开始,主键 number(10) epc_name名字varchar2(20)

epc_parent_id 父分类number(10)

表六:商品信息表easybuy_product

字段名称说明

ep_id编号自动编号(标识列),从1开始,主键 number(10) ep_name名字varchar2(20)

ep_description描述varchar2(100)

ep_price 价格number(10,2)

ep_stock 库存number(10)

epc_id 分类ID number(10)

epc_child_id 二级分类ID number(10)

ep_file_name 文件名varchar2(200)

表七:用户信息表easybuy_user

字段名称说明

eu_user_id用户ID varchar2(10)

eu_user_name用户名varchar2(20)

eu_password密码varchar2(20)

eu_sex 性别varchar2(1)

eu_birthday 出生日期date

eu_identity_code 身份证号varchar2(60)

eu_email email varchar2(80)

eu_mobile 手机varchar2(11)

eu_address 地址varchar2(200)

eu_status 类型 1 普通用户2 管理员 number(6)

第五章详细设计

5.1 系统配置

5.1.1 应用层配置

本网上商城管理系统采用目前流行的Struts2框架进行开发。先来看看Struts2框架是如何配置到应用程序中的。

在WEB-INF/web.xml文件的配置如下:

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFi lter

struts2

/*

当加入这个配置到web.xml文件之后,在浏览器中敲入的访系统的所有请求路径都会经过org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter这个filter进行过滤。由这个过滤器进行转发相应的请求,进入Struts2的工作流程中。这就是算是把Struts2框架配置到程序中了。

在WebRoot\WEB-INF\classes\struts.xml文件中的配置如下:

/page/search_list.jsp

其中在这个文件中配置了主页面加载时需要的一些操作所对应的请求处理方法。class属性表示请求所对应的处理类,method属性表示请求所对应的处理方法,result表示请求的跳转页面。

5.1.2 数据库连接配置

服务器端程序采用Hibernate框架来访问数据库:以下是hibernate连接数据库的配置文件,该配置是针对session-factory配置的,SessionFactory是Hibernate中的一个类,这个类主要负责保存HIbernate的配置信息,以及对Session的操作。

name="dialect">org.hibernate.dialect.Oracle9Dialect

name="connection.url">jdbc:oracle:thin:@localhost:1521/orcl

system

EPET

name="connection.driver_class">oracle.jdbc.driver.OracleDriver

true

jta

name="hibernate.current_session_context_class">thread

5.2 网上购物管理模块的实现

5.2.1 热卖商品模块

5.2.1.1视图层设计

下图为热卖商品模块显示页面,页面显示了所有商品中销售量排在前12位的所有商品信息,此模块根据商品的销售量动态加载热卖商品。相应JSP页面显示代码如下:

  • src="" />

    value="#hotproduct.description"/>

    ">

    ">

    已售:

  • 相关主题
    文本预览
    相关文档 最新文档