zoukankan      html  css  js  c++  java
  • 毕设35 for

    3 总体设计
    该系统的目的是构建基于SSH框架,灵活结构,可重用,可扩展和开发的快速轻量级的电子商务应用平台。

    3.1 系统整体分析
    系统整体结构将采用比较流行的MVC模型,MVC分别指的是:Model层、View层和Controller层。

    三层架构就是将整个项目应用分化为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。通过这样区分层次是为了实现系统开发中所说的高内聚、低耦合的思想。

    表现层:即展示给用户的界面。简单的说就是用户在进入系统时他的所看到的东西,在洋酒销售系统中那些jsp网页中。

    业务逻辑层:就是指对用户的每一个请求,进行一系列的处理,在洋酒销售系统中*.action,*.service包进行处理。

    数据访问层:就是对数据库的操作,包括增加、删除、修改和查询等,在洋酒销售系统中就是*.Dao包。

    图3-1 MVC模型图

    3.2 SSH分析
    SSH是Struts + Spring + Hibernate,是典型的J2EE三层结构,分为表示层,中间层和数据访问层。 三层系统分离数据表示,业务逻辑和数据访问。 中间层的业务逻辑,数据访问,权限截取和合法性验证工作。 客户端不直接与数据库进行交互,而是通过组件和中间层建立连接,然后处理中间层和数据库。

    3.2.1Struts2框架:

    Struts2体系结构

    Struts2是Web MVC框架的非常实用的价值,可以减少直接使用MVC模型来开发Web应用程序循环。重要的是,它是一个开源框架,可以帮助开发人员更深入地了解其机制,越来越广泛地被接受和应用。而且它提供了一个好的控制器和一个自定义标签库Taglib,专注于控制器的应用和查看,完美体现了MVC的设计思路。提供集中统一的权限控制,国际提示和消息,输入校验和记录和其他技术支持。此外,它与其他技术和框架具有良好的集成。如EJB,JDBC和Hibernate等数据库访问技术,使用集成技术来减少数据库的工作量。

    Struts2核心实现:

    Struts2主要用于控制整个系统进程。它由三部分组成,核心控制器FilterDispatcher,业务控制器和用户实现的业务逻辑组件。系统使用2.3.15.3版本的核心控制器,控制器作为在Web应用程序中运行的过滤器,负责拦截所有用户请求,当用户请求到达时,过滤器将过滤用户请求。如果用户在最后请求操作,则该请求将被转移到Struts 2框架。在Struts 2框架获得* .action请求后,它将决定在* .action请求的前一部分中调用哪个业务逻辑组件。例如,对于login.action请求,Struts 2调用名为login的操作来处理请求。

    struts2

    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

    struts2

    /*

    拦截器也用在Struts2系统中的重要组件函数,该组件函数提供了一个事件阻塞方法,所以可以拦截一些动作。 例如,对于所有后台操作的系统都有一个检查是否登录功能,如果没有登录来截取其操作。

    public class PrivilegeInterceptor extends MethodFilterInterceptor{
    ​ @Override

    ​ protected String doIntercept(ActionInvocation actionInvocation) throws Exception {
    ​ // 获得Session中存的后台的用户:

    ​ AdminUser adminExistUser = (AdminUser) ServletActionContext

    ​ .getRequest().getSession().getAttribute(“adminExistUser”);

    ​ if(adminExistUser == null){
    ​ // 没有登录:

    ​ ActionSupport support = (ActionSupport) actionInvocation.getAction();

    ​ support.addActionError(“您还没有登录!请先去登录!”);

    ​ return support.LOGIN;

    ​ }else{
    ​ // 已经登录

    ​ return actionInvocation.invoke();

    ​ }

    ​ }

    }

    3.2.2Hibernate框架:

    ORM(对象/关系数据库映射)

    对象关系映射(ORM)是一种解决对象与关系数据库问题的技术。它完成了面向对象编程语言到关系数据库的映射。 ORM框架可以看作应用程序和数据库之间的桥梁。通过这种方式,我们可以建模,操纵,使用,理解和使用关系数据库系统,以面向对象的方式提供数据库访问操作的一些优势面向对象的方法来操作持久对象,而ORM框架是负责相应的SQL(结构化查询语言)操作。

    Hibernate是用于轻量级Java EE应用程序的持久层解决方案,这是一种流行的ORM框架,它将非常轻量级的对象封装在JDBC中,从而使Java程序员能够以面向对象的方式操作数据库。 Hibernate不仅管理Java类到数据库表映射,而且还提供数据查询和访问数据操作,可以减少手动使用SQL和JDBC处理数据时间。

    Hibernate实际上是一个提供数据库服务的中间件。 Hibernate的持久化解决方案可以让用户从繁琐的JDBC访问,底层数据库连接,数据访问的实现以及无需用户关心的事务控制。该架构将应用层从底层的JDBC / JTA API Abstract转换出来。 Hibernate架构如图所示(注:地图从Hibernate官方参考文档)显示。

    3.2.3Spring框架:

    Spring框架介绍:

    Spring是从实际开发的开源框架,为企业开发提供轻量级的解决方案。该解决方案包括基于Ioc(控制反转)的核心机制,以及AOP(面向方面的编程)思想,与各种持久性技术的集成,以及优秀的Web MVC框架。 Spring致力于Java EE应用层解决方案,而不仅仅是专注于一层程序,它通过表现层,业务层,持久层,减少组件层的耦合来实现软件层的去耦。

    轻量级

    一个应用程序的划分是轻量级或重量级,主要是看看它使用多少服务,使用的服务越多,容器为普通java对象做更多的工作,将不可避免地影响应用程序的释放时间或运行性能。对于Spring容器,它提供了大量的服务,但这些服务默认关闭,所需服务的应用现在可以使用。而且,Spring是一个非侵入性的可扩展框架,Spring对象在应用程序中不依赖于Spring特定的类。

    3.2.4 Struts、Hibernate和Spring的整合

    本章的第一部分,我们已经学到了轻量级的JAVA EE分层设计模式,在Java社区中各种优秀的框架在相应的层面上找到自己的位置。如表示层:Struts,WebWork,Velocity,JSF,Tapestry等。持久层:Hibernate,Entity EJB,iBATIS,TopLink,OJB等;将开源框架的有机集成层作为软件系统的主要结构,使系统具有高度的可扩展性,可维护性。在各种集成程序中,struts + hibernate + spring已成为JAVAEE应用开发系统的主流。

    Spring集成休眠:

    Spring可以与大多数ORM框架集成。这使得使用ORM变得容易。

    Spring提供DAO支持,DA0组件是应用程序持久层访问的重要组成部分,我们专注于数据管理端口。

    此外,Spring还提供了一致的异常抽象,在编码时不需要显示以捕获各种特定的异常。

    Hibernate通过数据持久层操作,Hibernate Session接口提供了一个基本的数据访问方法,访问Hibernate Session对象的方法是实现Hibernate SessionFactory接口,SessionFactory接口是非常重要的,它是单个数据库映射关系编译的内存镜像,负责开设,关闭和管理会话。 Hibernate的访问,你需要手动创建SessionFactory实例,这是繁琐的工作,我们希望以SessionFactory实例的方式来管理。 Spring loc容器提供这种方式,通过配置文件配置SessionFactory的例子,使用Spring管理Session对象,使用Spring来实现事务管理的语句。

    以下是Spring与Hibernate集成的关键步骤。

    1、在Spring的配置文件ApplicationContext.xml中配置Hibernate对SessionFactory的设置。如下面的示例代码。

    ​ org.hibernate.dialect.MySQLDialect

    ​ true

    ​ true

    ​ update

    ​ cn/itbaizhan/shop/user/vo/User.hbm.xml

    当Spring的IoC容器配置了一个SessionFactory bean时,它将加载应用程序的部署启动,并且可以使用Spring依赖注入功能将bean注入到其他bean中。 我们可以从配置文件中看到,以声明式的方式来管理SessionFactory,可以让应用程序在不同数据源之间切换,一旦持久层服务发生变化,程序代码就不需要改变,只需修改配置文件即可 ,从而提高系统的可维护性。

    2,使用Spring HibernateDaosupport和HibernateTemplate类来简化Hibernate DAO类的准备,以完成数据持久化操作。

    3,通过Spring交易机制进行统一交易管理。 Spring可以同时使用编程和声明式事务管理。 声明式事务管理更灵活。 您可以在Spring中使用注释声明式事务管理:

    Spring整合Struts2:

    Spring还提供了MVC模式的支持,但是Struts是一个比较简单的MVC框架,开发更倾向于Spring和Struts集成开发。

    Struts和Spring集成相对简单流畅。集成的关键点是:Struts在Action实例中不再由Struts生成,并且对于Spring容器管理,主要目的是允许控制器和业务逻辑组件实现分离。基于此目的,我们使用工厂模型策略,使Spring容器管理Action,使用IoC依赖注入特性为控制器进入业务逻辑组件。 Struts只起到控制器的作用。

    以下是Spring和Struts集成的关键步骤。

    Struts核心控制器必须能够加载Spring的应用环境。

    Struts2动作到Spring框架来创建。

    这样,Action类由Spring容器管理,可以轻松地为Action类编写AOP,但第二个有一个关键位置:当Struts2框架创建Action类时,默认值为multiple。当容器在管理类中时,默认创建是单个大小写。这是线程安全问题的一个简单示例,因此请确保配置该类的scope属性。

    在Spring的配置文件中:

    Struts2、Hibernate和Spring的整合开发:

    两个团体在一起开展整合发展,可以实现三者结合的发展。在三个综合发展中,一般可以从上到下,从底层到顶层分层发展的原则,大部分实际项目的开发,经常采用后者的发展模式,即:

    (1)从开发底层开始,首先开发一些实体对象,也就是一些实体,这些区域将在层之间传递对象,使用Hibernate域对象和数据库表映射。

    (2)开发DAO层。它特别独立于数据持久化,即数据处理CRUD操作,而且还使用Spring Hibernate DAO来支持HibernateDaoSupport来实现。每个DAO组件对应于数据库表。

    (3)服务层开发。这一层主要是具体的业务组件开发,主要用于处理各种业务逻辑,并可以隔离事务等资源调度。

    (4)行动层发展。主要处理由Spring管理的Web请求。

    3.3 功能结构设计
    根据软件需求分析,将洋酒销售系统分为两大模块:前台销售模块和后台管理模块。前台销售模块包括3部分:(1)注册登录模块:用户在前台可以进行注册、登录;(2)产品分类模块:用户可以选择产品分类,然后进行相应的产品选择。(3)购物车模块。

    后台管理模块,包括如下几个部分:系统管理、商品分类管理、商品信息管理、订单管理、会员用户管理。

    网上洋酒销售系统的系统总体功能结构如图3-2所示:

     

    3.4 功能模块介绍
    3.4.1.前台销售模块:
    1)首页:提供一个网站首页,在上面显示网站的LOGO,用户的登录注册,一级分类显示,最新商品及热门商品显示等。

    2)用户的注册:主要针对未注册的用户,完成注册功能使用,在注册过程中,需要进行数据的前台非空校验,及使用AJAX完成用户名是否存在的异步校验。在校验通过后即可完成注册,在后台同样需要进行数据校验及发送一封激活邮件。

    3)用户的登录:已经注册的用户,输入用户名和密码可进行登录。

    4)用户的退出:针对已经登录的用户,退出该系统使用。

    5)首页商品展示:显示最新商品及热门商品。方便用户了解最新以及最热门商品。

    6)分类页面商品展示:根据某个分类的信息去展示商品。可以方便用户查找相应分类商品。

    7)商品详情展示:点击某个具体商品的时候,可以显示商品的详情。以便用户可以方便的了解商品的具体信息。

    8)购物车:此功能为用户提供购物功能,用户可以根据自己需要,将自己喜欢的物品添加到购物车,也可以从购物车中删除物品,甚至清空购物车中的所有商品。

    9)订单:登录用户可以将自己喜欢商品进行购买,产生订单。可以对自己产生的订单进行提交。以及可以根据用户信息,查询自己的订单。

    3.4.2.后台管理模块:
    1)管理员登录:管理员根据用户名和密码完成登录功能。

    2)一级分类管理:对前台一级分类进行管理包括添加,修改,删除,查询的功能操作。

    3)二级分类管理:对前台二级分类进行管理包括添加,修改,删除,查询的功能操作。

    4)商品管理:管理员可以对前台上显示的商品进行管理包括添加,修改,删除,查询的功能操作同时要可以上传商品的图片。

    5)订单管理:管理员可以对所有的用户产生的订单进行管理包括未付款的,已经付款的,已经发货的,交易完成的订单。可以修改订单状态及异步加载订单项。

    6)用户管理:管理员可以对注册过的用户进行管理。

    4 数据库设计
    本系统采用的数据库为Mysql5.0,本系统数据库开发定义名词如下:

    \1. ‘*’:主关键字符号;

    \2. ‘PK’:主关键字缩写;

    \3. ‘+’:外关键字符号;

    \4. ‘FK’:外关键字缩写;

    \5. ‘&’:复合关键字符号;

    \6. ‘CPK’:复合关键字缩写;

    \7. ‘UNIQUE’:唯一索引;

    各数据表描述:

    数据表 描述
    adminuser 后台管理员表
    category 一级分类表
    categorysecond 二级分类表
    orderitem 订单项表
    orders 订单表
    product 商品表
    user 前台用户表
    表间关系如图4-1:

    图4-1 表间关系分析

    如图4-1所示:

    1. 一级分类:主键一级分类ID

    2. 二级分类:主键二级分类ID,外键一级分类ID(外键指向一级分类主键一级分类ID)

    3. 商品:主键商品ID,外键二级分类ID(外键指向二级分类主键二级分类ID)

    4. 订单项:主键订单项ID,外键商品ID(外键指向商品主键商品ID),外键订单ID(外键指向订单表主键订单ID)

    5. 订单表:主键订单表ID,外键用户ID(外键指向用户表主键用户ID)

    6. 用户表:主键用户ID

    4.1 数据库表设计字典
    ​ ****表名:*adminuser*解释:****后台管理员表

    *ADMINUSER(adminuser)*
    *是否主键* *字段名* *字段描述* *数据类型* *长度* *可空* *约束* *缺省值* *备注*
    是 uid 管理员编号 INT(11) 11
    username 管理员名 VARCHAR(50) 50 是
    password 管理员密码 VARCHAR(30) 20 是
    ****表名:*category*解释:****一级分类表

    *CATEGORY(*category*)*
    *是否主键* *字段名* *字段描述* *数据类型* *长度* *可空* *约束* *缺省值* *备注*
    是 cid 一级分类编号 INT(11) 11
    cname 一级分类名 VARCHAR(50) 50 是
    ****表名:*categorysecond*解释:****二级分类表

    *CATEGORYSECOND(*categorysecond*)*
    *是否主键* *字段名* *字段描述* *数据类型* *长度* *可空* *约束* *缺省值* *备注*
    是 csid 二级分类编号 INT(11) 11
    csname 二级分类名 VARCHAR(50) 50 是
    cid 一级分类编号 INT(11) 11 外键
    ****表名:*orders*解释:****订单表

    *ORDERS(*orders*)*
    *是否主键* *字段名* *字段描述* *数据类型* *长度* *可空* *约束* *缺省值* *备注*
    是 oid 订单编号 INT(11) 11
    total 订单总金额 DOUBLE 0 是
    ordertime 订单时间 datetime 20 是
    state 订单状态 INT(11) 11 是
    name 收货人名 VARCHAR(20) 20 是
    phone 收货人电话 VARCHAR(20) 20 是
    addr 收货人地址 VARCHAR(50) 50 是
    uid 用户编号 INT(11) 11 外键
    ****表名:*orderitem*解释:****订单项表

    *ORDERITEM(orderitem)*
    *是否主键* *字段名* *字段描述* *数据类型* *长度* *可空* *约束* *缺省值* *备注*
    是 itemid 订单项编号 INT(11) 11
    count 数量 INT(11) 11 是
    subtotal 小计 DOUBLE 0 是
    pid 商品编号 INT(11) 11 外键
    oid 订单编号 INT(11) 11 外键
    ****表名:*product*解释:****商品表

    *ADMIN(admin)*
    *是否主键* *字段名* *字段描述* *数据类型* *长度* *可空* *约束* *缺省值* *备注*
    是 pid 商品编号 INT(11) 11
    pname 商品名 VARCHAR(50) 50 是
    market_price 商品市场价 DOUBLE 0 是
    shop_price 商品商城价 DOUBLE 0 是
    image 商品图片路径 VARCHAR(255) 255 是
    pdesc 商品描述 VARCHAR(255) 255 是
    is_hot 是否热门商品 INT(11) 11 是
    pdate 商品上传日期 datetime 0 是
    csid 二级分类编号 INT(11) 11 外键
    ****表名:********user********解释:****用户表

    *USER(user)*
    *是否主键* *字段名* *字段描述* *数据类型* *长度* *可空* *约束* *缺省值* *备注*
    是 uid 用户编号 INT(11) 11
    username 用户名 VARCHAR(20) 20 是
    password 用户密码 VARCHAR(20) 20 是
    name 用户真实姓名 VARCHAR(20) 20 是
    email 用户邮箱 VARCHAR(20) 20 是
    phone 用户电话 VARCHAR(20) 20 是
    addr 用户住址 VARCHAR(50) 50 是
    state 用户状态 INT(11) 11 是
    code 激活码 VARCHAR(64) 64 是
    5 功能模块的设计与实现
    5.1 主页面
    主页面是网上洋酒销售系统的门户,所以主页面设计的好坏直接影响到整个销售系统的形象。首页所载的内容有:销售系统工具栏,包括我的订单,购物车,新用户注册,会员用户登录等一些列选项;导航列包括首页以及一级分类属性,还包括新品推荐,热卖推荐。效果如图5-1所示。

    图5-1 系统主界面

    5.2 用户登录注册及前台模块设计
    5.2.1 用户登录
    用户进入主页面,若想点击浏览最上方的销售系统工具栏或者进行购买必须先登录。点击右上角登录进入登录界面。在会员登陆模块输入正确的用户名与密码后,点击“登陆”按钮即可进入登录页面,如图5-2所示。该模块在用户登录要进行用户名和密码的有效性检验,查询用户表。如果该用户存在则跳转到系统首页,同时可以选择用户退出,如图5-3所示。如果不能登录成功则给予提示,用户名不存在或者密码有误,以提示用户再次输入正确的用户名及密码登陆。

    图5-2 用户登录界面

    图5-3 登录成功后界面

    5.2.2 用户注册
    如果用户是首次访问系统,还未注册过,可以单击顶端工具栏的【新用户注册】按钮或左侧的会员登录模块里的【新用户注册】按钮进入新用户注册界面,进行用户注册。这是用户全面能够使用系统功能的通道,是必不可少的部分。效果如图5-4所示。

    图5-4用户注册界面

    5.2.3 产品分类
    ​ 这里是系统人性化的一个体现,显示的是商城里洋酒的具体分类。如图5-5所示,是一级分类,这里已经添加了三个分类,分别是白兰地,威士忌,金酒,伏特加,朗姆酒,特吉拉酒。具体分类的增删改可以在后台管理模块实现。如图5-6所示,是二级分类,根据一级分类分出的二级分类。

    图5-5产品一级分类界面

     

    图5-6产品二级分类界面

    5.2.4 热门商品
    这里是为客户专门定制的一个模块,为用户主动推荐热门产品,让用户可以在首页就能看到商场为顾客推荐的热门产品。具体推荐的增删改可以在后台管理模块实现。如图5-7所示:

     

    图5-7特别推荐界面

    5.2.5 最新商品
    ​ 这里显示的是商城里最新上架的商品。可以让顾客及时了解到新品的情况。具体新品的增删改可以在后台管理模块实现。如图5-8所示:

    图5-8最新上架界

    5.3 后台管理模块的设计与实现
    后台的设计完全是为了前台服务的,前台主要是展现,所以后台必须有支持前台的功能。后台的维护功能主要包括如下:系统管理、商品分类管理、商品管理、订单管理、注册用户管理。

    5.3.1 后台管理系统
    5.3.1.1 系统管理员登陆模块
    管理员的登陆入口在另一个页面,管理员的账号和密码是数据库里默认已预先存入数据库的,用户名cjh,密码1231。输入完毕无错误提示,点击“登陆”按钮进入后台管理系统。界面如图5-9所示。

     

    图 5-9 后台管理系统登陆界面

    后台系统管理员登陆模块主要代码:

    5.3.2 系统后台管理
    管理员登陆进入后系统台管理模块,如图5-10所示是管理员首先看到的页面:

    图5-10 后台管理页面

    系统后台管理分类为以下模块:注册用户管理,一级分类管理,二级分类管理,商品管理,订单管理。

    5.3.2.1 注册用户管理
    注册用户管理包括序号,用户名,真实姓名,编辑以及删除。

    点击编辑后如图5-11所示:

     

    图 5-11编辑用户

    5.3.2.2 一级分类管理
    这个模块的功能是管理首页上的导航模块上的一级分类部分,可添加新分类,具有编辑,删除,添加三个操作按钮。如图5-12所示:


    图 5-12 一级分类管理

    5.3.2.3 二级商品管理
    这个模块的功能是管理点导航模块上的一级分类部分时出现的二级分类部分,二级分类是依据一级分类为前提的。可添加新分类,具有编辑,删除,添加三个操作按钮。如图5-13所示:


    图 5-13 二级分类管理

    5.3.2.4 商品管理
    ​ 这个模块的功能是对商品进行管理的,可以查看商品的图片,名称价格,是否热门和进行编辑。如图5-14所示:

     

    图 5-14 商品管理

    5.3.2.5 订单管理
    ​ 这个模块的功能是管理用户订单信息。包括订单的编号,收货人以及订单详情等。如图5-15所示:

     

    图 5-15订单管理
    ————————————————

  • 相关阅读:
    如何将DataTable转换成List<T>
    关于SqlDataAdapter的使用
    VS 2010中JS代码折叠插件
    ASP.net中的几种分页方法
    学习jquery基础教程的一些笔记
    js中innerHTML与innerText的用法与区别
    SpringBoot 中使用shiro注解使之生效
    redis分布式锁
    使用ZSetOperations(有序)操作redis
    使用SetOperations(无序)操作redis
  • 原文地址:https://www.cnblogs.com/kdmvp/p/15556379.html
Copyright © 2011-2022 走看看