基于ssm框架
随着互联网技术的迅速发展,Internet的普及,以及IT技术的迅猛发展,我们的社会已经进入了一个信息化时代。随着信息化时代的到来,商城以及商城的服务随之产生。商城以及商城的服务指利用简单、快捷、低成本的电子网络通讯方式,买卖双方通过互联网进行各种服务、产品等有形或无形商品交换的的一种商业交易模式。随着信息时代的到来,以及互联网的迅速发展和普及,人们消费观念和生活方式也逐渐发生了改变,商城以及商城的服务这种新型的商业模式逐渐融入了人们的生活中。
本网站的设计和开发是基于SSM的一个商城后台管理交易系统。系统主要以作为开发基础,使用了多种协议或技术,用My Eclipse作为开发工具,以SSM和CSS技术进行页面的布局和美化。基本实现了商城后台系统应有的基本功能和主要模块,该系统界面简单、操作方便,容易维护。
关键字:商城后台 SSM
Abstract
With the rapid development of Internet technology, the popularity of Internet, as well as the rapid development of IT technology, our society has entered an era of information technology. With the advent of the information age, electronic commerce will be produced. Electronic commerce refers to the use of simple, fast, low-cost electronic network communication, the seller and the buyer through the Internet to carry out a variety of services, products, such as tangible or intangible commodity exchange of a business model. With the advent of the information age, and the rapid development and popularization of the Internet, people’s consumption concept and way of life also gradually changed, electronic commerce as a new business model gradually integrated into the people’s lives.
The design and development of this website is an online shopping mall system based on Web. System mainly to J2EE 5 as the basis for development, using a variety of protocols such as struts2+spring+hibernate or technology, using Eclipse My as a development tool to SSM and CSS technology for the layout and beautification of the page. Basically realized the basic functions and main modules of the online shopping mall transaction system, the system interface is simple, easy to operate, easy to maintain.
Key words: E-commerce ,J2EE ,struts2 + spring + hibernate ,Mall website
目 录
前 言 1
1 课题研究综述 2
1.1 论文框架 2
1.2 课题背景 2
1.3 课题目的和意义 2
2 系统应用的关键技术 3
2.1 SSM技术介绍 3
2.1.1 SSM的概述 3
2.1.2 SSM技术的特点 3
2.2 JAVA组件JavaBeans 4
2.2.1 什么是JavaBeans 4
2.2.2 JavaBeans与SSM的关系 4
2.3 J2EE概述 4
2.4 Struts2概述 5
2.4.1 Struts2简介 5
2.4.2 Sturus2的主要功能 5
2.4.3 Sturus2的工作原理 5
2.5 Spring概述 7
2.5.1 Spring简介 7
2.5.2 Spring的工作机制、优点及功能 7
2.6 Hibernate概述 8
2.6.1 Hibernate简介 8
2.6.2 Hibernate的优点 8
2.6.3 Hibernate的工作原理 9
2.7 MySql概述 9
2.7.1 MySql简介 9
2.7.2 MySql的特点 10
2.8 Tomcat服务器概述 10
2.8.1 Tomcat简介 10
2.8.2 Tomcat的优势 10
3 系统的需求分析和总体设计 11
3.1 系统的功能需求分析 11
3.1.1 系统前台功能需求分析 11
3.1.2 系统后台功能需求分析 11
3.2 系统的角色及其功能分析 11
3.2.1 系统的三种角色 11
3.2.2 系统的角色功能分析 11
3.3 网站总体设计 12
3.3.1 项目规划 12
3.3.2 系统功能结构图 12
3.3.3 设计目标 13
3.3.4 开发及运行环境 13
3.4 系统的数据库设计 14
3.5 系统的类设计 18
3.5.1 POJO类的设计 18
3.5.2 DAO类的设计 19
3.5.3 过滤器的设计 19
3.5.4 Action类的设计 20
3.5.5 监听器的设计 20
4 系统的实现 21
4.1 数据库与POJO映射的实现 21
4.2 主要模块的实现与界面展示 21
4.2.1 商城前台功能实现 21
4.2.2 前台会员管理模块 23
4.2.3 购物车管理模块 23
4.2.4 后台管理模块 23
结 论 25
致 谢 26
参考文献 27
前 言
随着我国互联网的普及以及IT技术的迅速发展,商城以及商城的服务应运而生,出现在人们的视线中。随着社会的发展,人们的享受欲望也在逐渐增加,传统的购物方式已经不再能够满足人们对购物的欲望,而商城以及商城的服务的产生给人们带来了新的曙光。商城以及商城的服务的经典模式就是商城。
商城它向顾客展现了一种新的消费理念。网络的特性也在电子商城上充分的体现出来。在网络商城的出现打破了商品在空间,时间上的限定。商城24小时对客户开放。如果用户需要,只要登录商城系统,世界各地的数以千计商品就可以通过网络展现在用户眼前,用户就可以根据自己的需求进行选购。这种购物方式。节省时间,节约成本。消费者不用舟车劳顿赶往各地选购商品,在商城选购之后,只需坐等家中,商品就可以到达消费者手中。商家负责将商品送达消费者手中,大大节省了时间成本和费用。网络商城还大大加强了用户与用户间、用户与商家间的交流,用户可以通过网络了解商品的各中信息,商家可以通过网络了解消费者的需求。商家可以根据获得的信息及时调整商业策略,获得更大的利益。消费者则可以货比三家,买到更实惠的商品,一定程度上避免了商业欺骗的行为。这种信息的交流提高了交易的透明度,也加强了商业竞争。
网络商城不仅拥有信息交互的作用,他还需要简介漂亮的页面。本商城系统使用SSM技术编写页面。SSM技术可以解决了商城需要向用户提供静态消息和动态消息的需求。本系统分为前台和后台两个小系统,共用一个数据库,后台是商城管理人员的天地,实现了对商城商品、顾客和公开消息的管理。前台是针对消费者开发的空间,消费者可以在这个电子构筑的空间里购买商品,获取信息。商城还应用了struts2 + spring + hibernate整合框架技术,使得编码更加简单方便,大大提高了代码的复用,简化了编码的过程。将hibernate整合进spring中,进行分层编码,提高了编码的效率,简化了对数据库的操作。本商城系统实现了用户对商城系统的基本需求的实现,但还存在许多的不足之处。在对商城的设计和开发过程中,让我加深了对电子商城的了解,对项目开发过程的了解,更发现了自身在技术层面的欠缺并进行补漏,还对以前所学的技术进行了巩固和提高。
1 课题研究综述
1.1 论文框架
本文共分四个章节,系统的阐述了网站系统开发和设计的全过程。
第一章,主要介绍了系统开发的背景、目的和意义。
第二章,主要介绍了商城网站系统开发用到的开发工具和关键技术。
第三章,主要对网站系统的需求和功能进行分析以及设计。分析了网站系统需要提供的角色,以及角色的各种功能。还对各功能进行模块划分,对各功能模块进行分析设计。对数据库、过滤器、监听器和实体类的设计,并进行解析描述。
第四章,主要对各个功能模块的实现及实现的方法进行解析描述。并给出关键源代码和最终效果图。
1.2 课题背景
随着当今社会进入互联网信息时代,互联网的飞速发展和普及给人类生活带来巨大的改变。Internet将传统意义的社会空间转变成了一个用电子构造的虚拟空间,把人们带入了一个网络虚拟社会中。网络时代的到来,带给人们的不只是快捷、方便,它带来的是划时代的进步。在网络大家族中,商城以及商城的服务则是一个热点,它的发展速度之快远远超过我们的想象,普及速度之快令人难以置信。我们完全有理由相信,全球性的商城以及商城的服务热潮必将一浪高于一浪。
商城以及商城的服务将信息、网络、生物工程和其他高科技产业联系起来,孕育了巨大的市场和无限的商机。互联网的迅速发展使市场突破了空间的限制,使企业或商家可以用网络将遥遥相隔的人们聚集在同一个商业营销网中,获得全球性的无界限的商务空间。企业利用商城以及商城的服务,实施全球性的商务经营战略,加强全球范围内商家的合作,增强全球性的商业竞争能力,特别是对于刚刚起步的小企业,通过商城以及商城的服务了解世界市场的需求,促进与全球经济的接轨,可以使企业更具有竞争力。
1.3 课题目的和意义
商城以及商城的服务是现代化产业的重要产业,自从出现在人们的生活中就备受关注和欢迎,并且在近年来得到了迅速的发展。商城以及商城的服务产业就有“三高”、“三新”的特点。商城以及商城的服务还具有人流、物流、资金流和信息流“四流合一”的核心价值链。商城以及商城的服务产业具有市场全球化、交易连续化、成本低廉化、资源集约化等优势。随着商城以及商城的服务发展环境的不断完善,商城以及商城的服务将被广泛应用于生产、流通、消费等各领域和社会生活的各个层面。商城以及商城的服务将覆盖我们生活的每个方面,影响着我们的生活,给我们的生活带来了很多方便。
商城后台管理作为B to C(Business to Customer,企业对消费者)、C to C(Customer to Customer,消费者对消费者)商城以及商城的服务的前端商务平台,在其商务活动全过程中起着举足轻重的作用。
本商城网站系统的目的和意义是旨在建立一个操作简单,界面简洁,用户关系简单,商品统一管理的一个B to C 的商城以及商城的服务商城后台管理。它包括后台和前台两个系统,两个部分操作完全分开,公用一个数据库。实现后台对商品和各种信息的管理和前台用户对商品查看,购买等功能。
2 系统应用的关键技术
2.1 SSM技术介绍
2.1.1 SSM的概述
SSM(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。SSM技术是在传统的网页HTML文件中插入Java程序段(Scriptlet)和SSM标记(tag),从而形成SSM文件(*.SSM)。用SSM开发的Web应用是跨平台的,可以在不同的系统平台下运行。SSM技术使用Java编程语言编写类XML的SSM标记和Java程序代码,来封装产生动态网页的代码。网页还能通过SSM标记和Java程序代码访问服务端的资源的应用逻辑。SSM将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。
2.1.2 SSM技术的特点
SSM技术所开发基于java的web应用程序具有跨平台、业务代码分离、组件重用和预编译的特点。
(1)跨平台
SSM是基于Java语言的,所以它可以使用Java API,所以SSM也具有了Java的跨平台特性。正因为他的跨平台特性,使得用SSM技术开发的项目可以不加修改的应用到不同的平台上。另外,SSM还可以用于不同的数据库,SSM使用JDBC技术操作数据库,可以避免代码移植导致更换数据库时的代码修改问题。
(2)业务代码分离
用SSM技术开发的项目,通常用HTML语言和CSS来进行页面的布局和美化,使用EL标签和js片段来动态加载数据。程序开发人员可以将业务处理代码全部放到JavaBean中,或者把业务处理代码交给Servlet、Struts等其他业务控制层来处理,这样SSM页面只负责显示数据即可从而实现业务代和页面显示代码的分离。当需要修改业务代码时,只需修改业务控制层的Java代码即可,不会影响SSM页面的代码。
(3)组件重用
SSM中可以使用Java文件编写业务逻辑,也就是使用一个Java类封装处理业务逻辑代码或者一个bean实体类,在SSM页面甚至整个项目中都可以重复使用这个java程序。JavaBean也可以应用到其他Java应用程序中,包括桌面应用程序。
(4)预编译
预编译就是在用户第一次通过浏览器访问SSM页面时,服务器将对SSM页面代码进行编译,并且仅执行一次编译。编译好的代码将被保存,在用户下一次访问时,直接执行编译好的代码。这样不仅节约了服务器的CPU资源,还大大提升了客户端的访问速度。
2.2 JAVA组件JavaBeans
2.2.1 什么是JavaBeans
JavaBeans事实上有三层含义。首先,JavaBeans是一种规范,一种在Java(包括SSM)中使用可重复使用的Java组件的技术规范,也可以说成我们常说的接口。其次,JavaBeans是一个Java的类,一般来说,这样的Java类将对应于一个独立的 .java文件 ,在绝大多数情况下,这应该是一个public类型的类。最后,当JavaBeans这样的一个Java类在我们的具体的Java程序中被实例之后,这就是我们面向对象的对象,我们有时也会将这样的一个JavaBeans的实例称之为JavaBeans。总之,就是Java中的接口、类和对象。
2.2.2 JavaBeans与SSM的关系
使用SSM技术,Web页面开发人员可以使用HTML和XML的进行页面的设计和控制页面的格式。页面上的动态内容利用SSM标识或小脚本语言动态加载。被在SSM和JavaBeans组件中封装生成内容的逻辑,并且捆绑在小脚本中,所有的脚本在服务器上运行。在标识和JavaBeans中封装的核心逻辑,可以方便的网页设计师编辑和使用SSM页面。
在服务器端,SSM引擎编译SSM标识生成所请求的内容,并结果以HTML页面的形式发送回浏览器。
绝大多数SSM页面依赖于可重用并且可跨平台的组件(如JavaBeans)来执行程序所要求的复杂的处理。有利于开发人员共享或交换实现普通操作的组件,从而加速团队开发过程。因此,对于较为复杂的应用程序,SSM的复杂架构就只有由JavaBeans达成,才可有效的执行操作。
2.3 J2EE概述
J2EE是一套技术架构,它不同于传统应用框架,它包含多个组件,可简化应用系统的开发与部署,提高程序的可移植性、实现程序的复用。J2EE由一组技术规范和指南,其中所包括的各类组件、服务结构及技术层次,为其提供标准及规格,让其适用于J2EE架构的不同平台之间,存在较好的兼容性,解决之前企业后台使用的信息产品之间没法兼容,解决企业内部或外部沟通问题。
J2EE各种组件和“一般” Java类的不同点在于:它被使用在一个J2EE程序中,具有规定的格式并遵循J2EE规范,由J2EE的服务器对它们进行约束。J2EE规范:客户端应用程序和applet是属于客户端的组件;Servlet和SSM 属于服务器端的组件;Enterprise Java Bean (EJB )属于服务器端的业务组件。
2.4 Struts2概述
2.4.1 Struts2简介
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器 (Controller)来建立模型与视图的数据交互。Struts 2是Struts的二代产品,是在 struts 1和WebWork的基础上进行了合并优化的全新的框架。Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2是以WebWork为核心,通过拦截器来处理用户请求,这样的设计有效的分离了业务层与ServletAPI,所以Struts 2是WebWork后更好的框架。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。
2.4.2 Sturus2的主要功能
(1)包含一个controllerServlet,它处理用户的请求并发送到被请求的action对象。
(2)controller servlet 还可以为SSM tag库提供关联支持,从而有效的协助开发人员创建使用交互式表单。
(3)提供了一些实用对象:处理 XML、JavaBeans属性、国际化的实现等技术。Struts项目的目标是为创建Java web应用提供一个开放源代framework。Struts framework的内核是基于控制层。(例如JavaBeans,Java Servlets,XML, ResourceBundles,和各种Jakarta Commons包等)。Struts2由于提供自身的控制器组件和整合了其他技术,所以以能提供模型和视图。Struts2运用于各种商业软件或操作系统,是一个非常优秀servlet框架。
2.4.3 Sturus2的工作原理
在web应用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象当ActionServlet接收到一个客户请求时,将执行如下流程.
(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;
(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;
(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;
(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;
(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;
(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给ActionForward对象指向的SSM组件;
(7)ActionForward对象指向SSM组件生成动态网页,返回给客户;
如图2-1所示:
图2-1:Struts2原理图
2.5 Spring概述
2.5.1 Spring简介
Spring是分层的JavaSE/EE full-stack(一站式) 轻量级开源框架
(1)分层:
①SUN提供的EE的三层结构:web层、业务层、数据访问层(持久层,集成层)
② Struts2是web层基于MVC设计模式框架.
③ Hibernate是持久的一个ORM的框架.
(2)一站式:
①Spring框架有对三层的每层解决方案:
②web层:Spring MVC.
③ 持久层:JDBC Template
④ 业务层:Spring的Bean管理.
(3)Spring的核心:
①IOC:(Inverse of Control 反转控制)
控制反转:将对象的创建权,交由Spring完成。
② AOP:Aspect Oriented Programming 是 面向对象的功能延伸.不是替换面向对象,是用来解决OO中一些问题。
③IOC:控制反转。
2.5.2 Spring的工作机制、优点及功能
(1)spring的工作机制
① spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。
② DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller。
③ DispatcherServlet请请求提交到目标Controller。
④ Controller进行业务逻辑处理后,会返回一个ModelAndView。
⑤ Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象。
⑥ 视图对象负责渲染返回给客户端。
(2)Spring的优点如下:
① Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理AOP编程的支持。
② Spring是POJO编程,POJO编程使得可持续构建和可测试能力提高依赖注入和IoC使得JDBC操作简单化。
③ Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能声明式事务的支持。
④ Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持降低JavaEE API的使用难度。
(3)spring的功能
Spring即使一个AOP框架,也是一IOC容器。 Spring 最好的地方是它有助于您替换对象。有了 Spring,只要用 JavaBean 属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。
IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词 倒置 所表明的,IOC 就像反过来的 JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)。
2.6 Hibernate概述
2.6.1 Hibernate简介
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/SSM的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate是轻量级JavaEE应用的持久层解决方案,是一个关系数据库ORM框架.
- ORM:Object Relational Mapping;
- 传统方式开发;
- 持久层;
- 编写SQL.执行SQL. String sql = “insert into 表 values (?,?,?..)”;
- 开发语言Java:面向对象;
- 数据库:MySQL(关系型的数据库);
- 将Java中的实体类与数据库的关系表建立一个映射.就可以操作Java中对象,从而操作数据库。
2.6.2 Hibernate的优点
(1) 对象/关系数据库映射(ORM)
它使用时只需要操纵对象,使开发更对象化,抛弃了数据库中心的思想,完全的面向对象思想。hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
(2) 透明持久化(persistent)
hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。实现对实体类的持久化,持久化的类会与session相关联, 当session关闭,持久化对象将处于游离状态,被别的程序使用。而session打开和关闭的过程很短,所以持久化类的生命周期也很短暂。
(3) 事务Transaction(org.hibernate.Transaction)
Hibernate对事务进行管理。事务是单线程的,它油hibernate将具体的JDBC、JTA抽象出来进行事务隔离,存在一个session中,每次使用事务都必须开启事务和提交事务。
(4) 它没有侵入性,即所谓的轻量级框架
(5) 移植性会很好
(6) 缓存机制,提供一级缓存和二级缓存
(7) 简洁的HQL编程
2.6.3 Hibernate的工作原理
Hibernate得工作原理:首先配置好hibernate的配置文件和与类对应的配置文件后,启动服务器。服务器启动后通过实例化Configeration对象,读取hibernate.cfg.xml文件的配置内容,并根据相关的需求建好表或者和表建立好映射关系;hibernate通过实例化的Configeration对象就可以建立sessionFactory实例,进一步,通过sessionFactory实例可以创建session对象;hibernate打开session之后,便可以创建事务Transation,进行持久化类操作,然后提交事务关闭session,关闭SesstionFactory。这是hibernate的工作原理及过程。除此外,hibernate还可以通过事物管理,表的关联来实现较为复杂的数据库设计。
2.7 MySql概述
2.7.1 MySql简介
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。
由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
MySQL,虽然功能未必很强大,但因为它的开源、广泛传播,导致很多人都了解到这个数据库。它的历史也富有传奇性。
2.7.2 MySql的特点
(1)完全开源
MySQL的数据库管理系统(DBMS,Database Management System)是一个开源系统这是他的最大优势之一。开源意味着用户可以免费下载,当然,并不是完全免费免费,它还是有许多付费功能。但是开源的特点使用户可以根据自己的需求修改DBMS。 MySQL采用了GPL(General Public License),这意味着授权给用户可以阅读,修改和优化源代码,这样即使是免费版的MySQL的功能也足够强大。
(2)快速更新和用户友好
MySQL的更新很快,MySQL的新版本不断增加新功能,新特性。每当新的版本出来之后,MySQL都会成为大多数服务器的主要数据库。Linux web服务器已经成为现在web服务器的主流,MySQL在linux服务器上面也得到了广泛的应用。
(3)WebsitePanel,phpMyAdmin 和MySQl的黄金组合
对于初学者来说,通过虚拟主机商提供的websitePanel控制面板学习MySQL是一个很不错的方法。用户不仅可以观看很多视频教程来学习使用 MySQL,还可以使用PhpMyAdmin通过web方式管理数据库。
2.8 Tomcat服务器概述
2.8.1 Tomcat简介
Tomcat服务器是开源的免费的web应用服务器。Tomcat是一个由Apache软件基金会(Apache Software Foundation)开发的Jakarta项目中的核心项目之一,由Apache软件基金会、Sun公司和其他一些公司及个人合作开发而成。由于有了Sun公司的参与和支持,Tomcat中总能体现出最新的Servlet技术 和SSM技术规范,Tomcat 5支持最新的Servlet 2.4和SSM 2.0规范。由于Tomcat先进的技术、稳定的性能,还有免费使用,所以深受广大编程人员的喜爱,成为目前比较流行的Web应用服务器。
2.8.2 Tomcat的优势
(1)Tomcat是Apache的核心项目之一,也被 SUN 视作 Servlet/SSM 容器的一个重要参考实现而加以支持。因此 SUN 最新的Servlet/SSM规范,往往能够很快地在Tomcat的新版本中得到体现。
(2)Tomcat是一个小巧精致的web应用服务器,配置、安装、运行、部署web应用都很简单,这让用户能够很快地上手使用。
(3)开源软件的生命力,往往与其社区的状况有紧密的联系。Tomcat所拥有的优秀社区,对开发者而言,疑问和反馈能够及时解决和有效的处理。这样会吸引更多的人加入这个社区。不断扩大的用户群,也会促进社区的发展,使得社区更加充满活力。
(4)编写良好的文档,是开发者在开发中最好的帮手之一。Apache在开源社区中,无疑是撰写文档方面的佼佼者。
(5)由于Tomact开源和免费的特性,使用户无障碍自由地下载、安装、使用Tomcat。这也是 Tomcat 能够被广泛使用的重要原因之一。
3 系统的需求分析和总体设计
3.1 系统的功能需求分析
3.1.1 系统前台功能需求分析
(1)简洁美观的界面,保证操作的简易性。
(2)严格、规范的会员信息注册。
(3)会员的注册,登陆,退出,修改。
(4)严格分类商品,按类别查询商品。
(5)商品的分类查询和按名称查询。
(6)会员可以进行网上商品的选购。
(7)查看新上架商品和特价商品。
(8)按照商品的销售数量进行排行。
3.1.2 系统后台功能需求分析
(1)简单明了的界面,能保证系统的易用性
(2)管理员的登录。
(3)对商品信息的添加、查看、修改。
(4)对网站前台公告、信息的发布,删除等管理。
(5)对网站会员的管理。
3.2 系统的角色及其功能分析
3.2.1 系统的三种角色
根据对系统前台和后台的分析,系统的使用者总共有三种角色:
(6)前台普通网站浏览者,即游客
(7)前台网站会员用户
(8)后台网站管理者
3.2.2 系统的角色功能分析
(1)普通用户
网站的普通浏览者(即游客)只能浏览商品。
(2)会员用户
普通浏览者只要注册为网站会员用户后,获得自己的帐号,设置自己的密码就具有以下功能:登录,退出,向购物车中添加商品,清空购物车,删除购物车内商品,生成并提交订单,查看个人订单,添加或修改个人资料等。
(3)管理员
后台管理员必须登录后才能浏览网页和查看后台信息。后台管理员具有对商品、商品分类、订单、公告、会员用户的查看,修改,删除,添加功能和退出系统的功能。
3.3 网站总体设计
3.3.1 项目规划
商城以及商城的服务系统是一个典型的SSM数据库开发应用程序,由前台的商品展示、搜索及购买和后台管理2部分组成。
(1)前台商品展示、搜索及购买
该部分主要包括新品上架、销售排行、特价商品、购物车管理、会员管理、商品公告及订单查询、商品查询等。
(2)后台管理
该部分主要对商城内的一些基础数据进行有效管理,包括商品管理、会员管理、订单管理、公告管理等。
3.3.2 系统功能结构图
商城以及商城的服务系统前台功能结构如图3-1所示:
图3-1 系统前台功能结构图
商城以及商城的服务系统后台功能结构如图3-2所示:
图3-2 系统后台功能结构图
3.3.3 设计目标
本系统在设计时应该满足以下几个目标:
①友好的界面,良好的用户体验,与用户进行良好的沟通
②全面展示商城内所有商品,并可展示最新商品及特价商品
③为顾客提供一个方便、快捷的商品信息查询功能。采用模糊查询查询数据。
④会员可以随时修改自己的会员资料。
⑤ 实现网上购物。
⑥商品销售排行,帮助顾客了解商城商品的销售热点,和方便公司管理者制定销售策略。
⑦方便用户查看商城的公告信息。
⑧用户登录网站可以查看所有的订单。
⑨会员注册,进行数据验证,保证数据的准确性。
⑩系统最大限度地实现了易维护性和易操作性,系统运行稳定、安全可靠。
3.3.4 开发及运行环境
(1)硬件平台:
- CPU:Intel® Celeron®;
- 内存:1G以上。
(2)软件平台: - 操作系统:Windows XP;
- 数据库:MySQL;
- 开发工具包:JDK Version 1.6;
- SSM服务器:Tomcat 7.0;
- 浏览器:IE6.0 以上;
- 分辨率:最佳效果1024×768。
3.4 系统的数据库设计
(1)users(会员信息表)
会员信息表主要用来存储所注册的会员的信息。表users的结构如表3-1所示:
表3-1:会员信息表
字段名 数据类型 长度 是否主键 描述
uid bigint 11 是 会员ID
uname varchar 100 会员名
upassword varchar 100 会员密码
uemail varchar 100 会员Email
amoney double 8 消费额
arank char 10 会员等级
utruename varchar 100 会员真实姓名
ustate char 1 会员状态
createtime varchar 100 创建时间
updatetime timestamp 0 修改时间
(2)usersbook(会员地址簿表)
会员地址簿表主要存储会员的收货地址和通讯等信息,usersbook表结构如表3-2所示:
表3-2:会员地址簿表
字段名 数据类型 长度 是否主键 描述
ubid bigint 4 是 地址薄ID
uid bigint 4 外键 会员ID
uaddress varchar 80 收货地址
uname varchar 20 收货人姓名
upostcode varchar 6 邮政编码
utelephone varchar 20 联系电话
createtime timestamp 8 创建时间
updatetime timestamp 8 修改时间
(3)goods(商品信息表)
商品信息表主要用来保存商品信息,goods表结构如表3-3所示:
表3-3:商品信息表
字段名 数据类型 长度 是否主键 描述
gid bigint 8 是 商品ID
supid bigint 8 大分类ID
subid bigint 8 外键 小分类ID
gname varchar 30 商品名称
goutprice double 8 市场价格
ginprice double 8 商城价格
gisspecial char 1 是否特价
gnumstore int 4 商品数量
gnumsold int 4 已出售商品数量
gcontent varchar 100 商品简介
gpicture varchar 100 商品图片
ncreatename varchar 100 创建人
ncreatetime varchar 100 创建时间
nupdatename varchar 100 修改人
nupdatename timestamp 0 修改时间
(4)suptl(大分类表)
大分类表主要存放商品的大分类,suptl表结构如表3-4所示:
表3-4:大分类表
字段名 数据类型 长度 是否主键 描述
supid bigint 4 是 大分类ID
supname varchar 20 大分类名称
supdescribe varchar 200 大分类描述
(5)subtl(小分类表)
小分类表主要存储商品的小分类,subtl表结构如表3-5所示:
表3-5:小分类表
字段名 数据类型 长度 是否主键 描述
subid bigint 4 是 小分类ID
subname varchar 20 小分类名称
supid bigint 4 外键 大分类ID
subdescribe varchar 200 小分类描述
(6)favourite(商品收藏表)
商品收藏表用来保存用户收藏的商品,表favourite的表结构如表3-6所示:
表3-6:商品收藏表
字段名 数据类型 长度 是否主键 描述
ID bigint 11 是 收藏ID
uid bigint 8 外键 会员ID
gid bigint 11 外键 商品ID
(7)orderl(订单信息主表)
订单信息主表用来保存订单的概要信息。表orderL的结构如表3-7所示:
表3-7:订单信息主表
字段名 数据类型 长度 是否主键 描述
oid bigint 11 是 订单ID
onumber varchar 100 订单编号
uid bigint 11 外键 会员ID
ubid int 11 外键 地址薄id
ocaccount double 8 订单总金额
pid bigint 11 外键 付款方式
ocid bigint 100 外键 开具发票
obill char 1 是否开具发票
ocontent varchar 15 发票抬头
did int 11 外键 送货方式
ortid int 11 外键 送货时间ID
oremark varchar 200 订单备注
ostate char 1 订单状态
ocreatetime varchar 100 创建时间
oupdatetime datetime 11 修改时间
(8)orderDetail(订单明细表)
订单明细表用来保存订单的详细信息。表orderDetail的结构如表3-8所示:
表3-8:订单明细表
字段名 数据类型 长度 是否主键 描述
odid bigint 是 订单明细ID
oid bigint 8 外键 订单ID
gid bigint 8 外键 商品ID
gname varchar 4 商品名称
gprice double 8 商品单价
gnumber int 11 商品数量
ocreatetime varchar 100 创建时间
oupdatetime timestamp 0 修改时间
(9)paytype(订单付款方式表)
订单付款方式表存储订单的付款方式,paytype表的表结构如表3-9所示:
字段名 数据类型 长度 是否主键 描述
pid int 4 是 支付方式ID
pcontent varchar 50 支付方式内容
pdescribe varchar 150 描述
表3-9:订单付款方式表
(10)delivertype(送货方式表)
送货方式表存储的是订单商品的送货方式,delivertype表结构如表3-10所示:
表3-10:送货方式表
字段名 数据类型 长度 是否主键 描述
did int 4 是 送货方式ID
dcontent varchar 50 送货方式内容
ddays int 4 送货天数
ddescribe varchar 150 描述
(11)ordercarrytime(送货时间表)
送货时间表存放订单的送货时间,ordercarrytime表的表结构如表3-11所示:
表3-11:送货时间表
字段名 数据类型 长度 是否主键 描述
ortid int 4 是 送货时间ID
ortcontent varchar 100 送货时间内容
(12)Ordercheck(订单发票表)
订单发票表存储每一笔订单的发票信息,ordercheck表结构如表3-12所示:
表3-12:订单发票表
字段名 数据类型 长度 是否主键 描述
ocid int 4 是 发票ID
octitle varchar 100 发票标题
occontent varchar 100 发票内容
(13)admin(后台管理人员表)
管理员信息表用来保存管理员信息。表admin的结构如表3-13所示:
表3-13:后台管理人员表
字段名 数据类型 长度 是否主键 描述
aid bigint 4 是 管理员ID
aname varchar 20 管理员名
atruename varchar 10 真实姓名
apassword varchar 16 密码
aisvalid char 1 是否有效
createtime varchar 100 创建时间
updatetime datetime 0 修改时间
(14)notice(公告信息表)
公告信息表主要用来保存商城的公告信息。表notice的结构如表3-14所示:
表3-14:公告信息表
字段名 数据类型 长度 是否主键 描述
nid int 4 是 公告ID
ntitle varchar 40 公告标题
ncontent varchar 450 公告内容
nstarttime varchar 100 发布时间
nendtime varchar 100 失效时间
ncreatename varchar 20 创建人
ncreatetime varchar 8 创建时间
nupdatename varchar 20 修改人
nupdatetime datetime 8 修改时间
(15)comment(商品评论表)
商品评论表用来保存用户对商品的评论,表comment的表结构如表3-15所示:
表3-15:商品评论表
字段名 数据类型 长度 是否主键 描述
cid int 11 是 评论的id
gid int 11 外键 商品id
content varchar 100 评论内容
uid int 11 外键 用户id
time timestamp 0 评论时间
3.5 系统的类设计
3.5.1 POJO类的设计
数据库中的每张表都设一个实体类,实体类与表的关系是一一对应关系,所有与表相对应的类都集中放在pojo包下,如图3-3:
图3-3:实体类设计图
3.5.2 DAO类的设计
每个实体类都对应一个DAO,只要是对本实体类对应的表的所有操作都在相对的DAO类中进行实现。每个DAO都继承同一个BaseDao,BaseDao是利用反射机制编写的对数据库的操作,提高了代码的复用。BaseDao.Java的代码见附录BaseDao.Java程序清单。
3.5.3 过滤器的设计
本网站系统中由于应用了SSH整合框架技术,所以过滤器主要是在使用框架封装的过滤器就可以,只要在web.xml文件中配置就好了。主要有Struts过滤器,spring编码过滤器,一下是配置编码:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
另外为了保障商城网站的安全性,在网站的后台系统添加了一个页面过滤器,只要管理员没有登录,不能访问后台的任何页面,后台必须有登录页面进入。
3.5.4 Action类的设计
Action类的主要功能是实现对逻辑层的控制。每个页面请求都对应一个action,action类接受页面请求,和页面传到后台的参数,进行封装,在与数据库service层进行数据传输,然后接受数据,对数据进行处理,传输给页面,并控制页面的转发。Action类是通过对数据库中表的操作进行设计的,对同一个数据表的操作方法,放在同一个action中,但是前台和后台的登录类外,另建一个LoginAction.java文件。所有Action类皆放在action包下。
3.5.5 监听器的设计
在本系统中应用的是Struts2、Spring和Hibernate的整合框架技术,监听器的添加都是在web.xml配置文件中配置的,添加的监听器spring监听器ContextLoaderListener,在web.xml文件中配置了Spring监听,就实现了接口 ServletContextListene。当程序启动时,程序自动加载org.springframework.web.context.ContextLoaderListener这个类,然后由它负责创建Spring容器即WebApplicationContext,将bean类放入容器中,实现类的初始化。spring监听器可以实现对事件的监听。以下是配置spring监听的编码:
图4-1:前台首页界面
(2)前台的功能实现
前台的功能主要有会员登录,会员注册,会员资料修改,商品的搜索查询,购买商品,购物车管理,订单管理、商城信息展示等功能。
①会员登录:发送页面请求到action,然后根据用户名查询数据库,是否存在此用户。若存在,获得User对象,对比密码,判断是否登录成功,并给出提示。
②会员注册:点击会员注册按钮,请求action,showpage内容改变,返回页面,进入会员注册页面。
③会员资料修改:点击会员资料修改页面,请求action,showpage内容改变,返回页面,进入会员资料修改页面。
④商品的搜索查询,在加载页面前,首先请求action,获得全部大分类,然后根据搜索框中的内容进行模糊查询,获得Goods集合,然后返回页面,便利集合,显示商品。
⑤购买商品:每件商品的都有一个购买按钮,点击购买按钮,会请求一个action,检查session,判断用户是否登录商城,若没用登录,提示用户“您还没有登录,请登录后再购买!”若是用户已经登录,就将商品的ID传参给action,最后传给DAO层,会根据商品的ID获得商品的信息,封装成一个Goods对象,将这个对象放入一个集合中,即购物车。
⑥购物车管理:是会员选择购买的商品的管理,具有购物车商品查看,删除购物车内的商品,清空购物车等功能。
⑦订单管理:会员可以查看本人的所有订单,显示订单状态,可以取消所有未配送的订单。
⑧商城信息展示:商城信息展示主要有两部分,商城公告和商品销售排行。这两部分在页面加载时,利用ajax异步请求action,获得数据库数据。
4.2.2 前台会员管理模块
前台会员管理模块主要是会员注册、会员资料修改等功能。
(1)会员注册
用户注册主要是向数据库中添加信息,在注册用户时,要添加用户名检测,要求用户名不能重复,用户名检测按钮用异步请求action,判断是否重名。注册信息填完后,提交表单,请求一个action,调用DAO层方法,将用户信息分别添加到Users表和Usersbook表中。然后根据用户名查询用户的用户信息和地址信息,给showpage重新赋值,返回页面,将页面跳到首页,提示用户“会员注册成功!可以登录商城进行购物。”
(2)会员资料修改
会员资料修改分为两部分,密码修改和地址薄修改。对数据库信息进行修改时,要先查询出要修改的内容,然后进行修改。但是,在修改密码成功后要清空session,提示用户“密码修改成功,请重新登录!”。
4.2.3 购物车管理模块
购物车模块用到了hibernate的锁机制,这里用到的是乐观锁,当用户点击购物车的支付按钮时,会形成订单,但是在订单形成之前,系统要根据商品的ID查询商品的数量,当库存的数量小于购买的数量时不能形成订单,提示用户商品库存不足。若是库存大于购买数量,就可以对数据库进行修改,修改商品的库存数量,这时对数据库的这条记录上锁,要求别人不能对这条记录进行修改操作。当购物车中的所有商品都形成订单后才清空购物车。
4.2.4 后台管理模块
后台管理分为商品管理,会员管理,公告管理,订单管理和参数管理。后台页面如图4-2所示:
图4-2:后台界面
(1)商品管理
商品管理主要是添加商品,分类查看商品,修改商品信息,查看商品详情,删除商品等操作。
(2)会员管理
会员管理模块主要功能有根据会员名或会员编号查询会员,并未会员账号进行冻结或解冻。
(3)公告管理
公告管理模块主要功能是查看公告列表,添加公告,修改公告,删除公告,查看公告详情等。
(4)订单管理
订单管理模块主要功能是根据订单编号或订单类型查看订单信息
(5)参数管理
参数管理模块的主要功能是查看商品的大小分类,对分类进行修改、删除和添加。
结 论
在商城网站系统的设计与实现过程中,主要应用了SSM技术,Struts2、Spring、Hibernate框架。本系统的总体分为三个层次:页面展示层(SSM页面),逻辑处理层(action层和service层),数据访问层(Dao层)。通过对商城网站系统的实现,加深了对SSM技术,SSH三大框架的理解。更让我深刻的了解了开发的一般过程:分析-设计-实现-测试。其实测试是伴随着整个开发全过程的一项工作。
我所设计是现实的商城网站由于时间和技术的种种问题,仅仅是实现了一个商城的基本主要功能,但是对于一个完善的商城网站来说这远远是不够的,这使我认识到开发是一件繁琐的事情,必须需要足够的耐心。在系统的开发和实现过程中发现了自身在技术方面的许多问题和漏洞,也出现了很多的问题,但是有专业知识很大的提高和帮助。
致 谢
本论文是在指导老师老师的耐心指导和修改下完成的,从论文的的基本框架、到最后的论文定稿,都离不开老师的帮助,对于论文的修改,老师在百忙之中,对我进行面对面的指导,指出论文中的不足之处以及需要修改的地方。在老师的悉心指导下,最终完成了论文,感谢老师。
参考文献
1 景玉建.商城以及商城的服务的发展与前景[J].《职业时空》.2005,13:P10-11
2 秦文.某商城以及商城的服务平台系统的设计与实现[D].武汉:华中科技大学,2013
3 白兆庆.浅析ASP与SSM技术[J].科技信息,2009,27(8):90-93.
4 曲大海.浅谈动态网页开发中SSM技术[J].科技创新导报,2008,5(32):39-93.
[5] 张飞,姜进磊.利用MySQL构建分布式应用[J].计算机工程与应用,2001,37(18):102-104.
[6] 冯艳奎.MYSQL动态网站编程[M].北京:清华大学出版社,2002.
[7] 葛华丽.基于轻量级J2EE的客户管理系统的研究与设计[D].济南:山东大学,2010.
[8] 吴娇.基于WEB的奖助学金管理系统设计[D].昆明:云南大学,2012.
[9] 李刚.Strut2 权威指南[M].北京:电子工业出版社,2008.
[10] 曾陈萍,李怀杰.“Analysis of Framework Based on J2EE of Realizing E - Commerce”〔J〕.西昌学院学报(自然科学版).2006,no.3:pp03-10.
[11] 闫斐, 王亚弟, 韩继红. 基于Struts架构的J2EE应用软件的设计与开发[J].微计算机信息, 2006,22(10X):227-229.
[12] 孙卫琴.精通hibernate[M].北京:电子工业出版社,2005.
[13] 傅鹏,殷旻昊.基于Struts+Spring+Hibernate+Ajax技术的科研管理系统设计.软件导报,2009,(1):134-136.
[14] Michael kofler. MySQL 5权威指南. 北京:人民邮电出版社,2006.
[15] 刘晨亮.商业银行服务器用户运维管理系统的设计与实现[D].天津:南开大学,2011.
)
欢迎使用Markdown编辑器
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 全新的界面设计 ,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
功能快捷键
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
合理的创建标题,有助于目录的生成
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
插入链接与图片
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
设定内容居中、居左、居右
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' | ‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" | “Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash | – is en-dash, — is em-dash |
创建一个自定义列表
-
Markdown
- Text-to- HTML conversion tool Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。2
注释也是必不可少的
Markdown将文本转换为 HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
- 关于 甘特图 语法,参考 这儿,
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::
这将产生一个流程图。:
- 关于 Mermaid 语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎