洋酒销售系统的设计与实现
随着洋酒与中国市场的相互适应以及电子商务和网上商店的普及,洋酒类商品的网上展示与订购逐渐成为主流,如今洋酒不仅仅是贵族身份的象征,也渐渐进入了寻常百姓家。网上商店的技术实现同时也成为了一个比较常见的课题。本文就网上商店的实现做了一些研究。
此设计主要采用JSP开发技术和mysql数据库技术来开发,根据实际需求构建了基于SSH(Struts+Spring+Hibernate)整合框架的电子商务系统,深入了解了轻量级Java EE应用体系结构。最后实现了一个网上购物系统,该系统分为前台和后台,前台主要功能包括普通会员用户的注册和登录、商品浏览、个人信息管理、购物车、查看订单,后台主要功能包括系统管理员信息管理、用户信息管理、商品管理、商品一级二级分类管理、订单管理。本文详细阐述了整个销售系统的设计思路,并对各部分设计进行了详尽的分析,最终形成了一个完整的设计方案。
洋酒销售 ; SSH;Java EE;框架;JSP
目录
1.2.1.1模型(Model).................................................................................. 2
1.2.1.3控制器(Controller)...................................................................... 3
5.2 用户登录注册及前台模块设计......................................................................... 19
5.3 后台管理模块的设计与实现.............................................................................. 23
5.3.1.1 系统管理员登陆模块.................................................................. 24
5.3.2.1 注册用户管理............................................................................ 25
5.3.2.2 一级分类管理............................................................................ 25
5.3.2.3 二级商品管理............................................................................ 26
5.3.2.4 商品管理................................................................................... 26
5.3.2.5 订单管理................................................................................... 26
AJAX技术和SSH框架在电子商务系统开发中的应用........................................................ 38
1. 概述
随着信息技术的不断发展,人们的生活发生了巨大的变化,特别是在因特网出现之后将世界变得越来越小。电子商务的出现使传统商务模式遭受到巨大的冲击。一种基于浏览器/服务器结构模式,实现了网上购物,在线交易的崭新的运营模式。电子商务在中国发展了一段时间,目前我国国内也有许多电商的平台,经过分析,国内的电子商务网站做的都是综合型,一个平台中几乎各个方面的商务领域都有涉及到。像一些比较流行的网购平台,如:京东商城,淘宝网,拍拍网,涉及的类型很多,分类只是模糊分类而已,并不是特别细致,就洋酒而言,种类特别多,所以更需要单独创建一个平台,可以给消费者提供更多更好的选择。
随着中国经济的不断发展,人民生活水平有所提高,中产阶级和白领继续扩大,中国奢侈品消费形成了较大的市场,特别是沿海经济发达地区的奢侈消费甚至超过有欧美国家的势头。 然而洋酒的消费是商品中最多的奢侈品消费。
本系统采用SSH(Struts+Spring+Hibernate)框架来进行开发。SSH框架是当前J2EE领域里最流行而且较为成熟的开源框架,它是以MVC设计模式为基础,降低了程序的耦合性,提高了应用程序的复用性、移植性、灵活性、扩展性和应用性能。SSH轻量级开发框架相对于EJB开发框架,同时继承了其优势,而且在开发和实现中的效率已经有相当程度的提高。
1.1 系统开发工具
本小节主要介绍了编写代码过程中所使用到的开发工具。
1.1.1 MyEclipse 10
MyEclipse Enterprise Workbench(MyEclipse)是Eclipse IDE的扩展,我们可以在数据库和J2EE开发中使用它。它是一个功能丰富的J2EE集成开发环境,包括编码,调试,测试和发布等功能,完全支持SSH,JSP等。
1.1.2 Tomcat 7.0
Tomcat并不是一个真正的应用服务器,它仅仅是一个可以支持运行 JSP/Servlet的Web容器,只不过它扩展了一些应用服务器的功能。由于Tomcat技术先进,性能稳定,而且免费,所以受到Java开发者的欢迎,并获得了多项软件开发人员的认可,成为目前较为主流的应用服务器,被广泛应用于中小型Web项目。
1.1.3 Mysql 5.5
MySQL是开源的中小型数据库。
1.2 系统技术介绍
1.2.1 MVC模型分析
MVC是分离应用程序的逻辑层和表示层的一种方式。 MVC的出现不仅实现了功能模块和显示模块的分离,而且提高了应用程序的可维护性,可扩展性,可移植性和可重用性。
1.2.1.1模型(Model)
模型是应用程序的主要部分。 该模型代表业务数据。 通常,您的模型类将包括删除,插入,更新和删除数据库信息的功能。
1.2.1.2视图(View)
视图是应用程序中用户界面的一部分,用户界面是用户查看和交互的界面。 视图通常是一个网页。
1.2.1.3控制器(Controller)
控制器工作基于用户的输入,控制用户界面数据显示和更新模型对象状态。是模型,视图和处理HTTP请求所需的任何其他资源之间的中介者,并生成一个网页。由于使用MVC的应用程序的三个组件彼此相对,因此更改其中一个组件不会影响其他两个组件,因此您可以基于此设计思想构建良好的松耦合组件。该系统是基于MVC模式进行分层的,因为系统开发工具是MyEclipse,在建立工程开发工具时已经初步将系统分为MVC三层结构。模型层由“模型”层执行,主要用于存储实体Beans和Hibernate映射文件。通过开发人员层很容易管理整个项目下的Bean,也很容易映射Hibernate配置文件,大大提高了开发效率,同时系统的未来维护也非常方便。
MVC模型是显而易见的,但在实际开发过程中存在局限性。 MVC将业务逻辑层和表示层分开,在一定程度上是非常好的松散耦合,但这种方式会带来开发和运行的开销。首先,MVC采用多层次的结构,这就给开发难度增加了开发时间,而设计时的设计不好,而且会降低程序的运行效率。另一个多级结构在运行时没有单级结构的程序运行得很快,使用MVC模式如果分层太多,会降低程序速度。所以不要说所有的系统都要用MVC模型来开发。 MVC模式这是提出大型软件设计的初衷,它往往需要重用,扩展大型软件是非常好的,但对于那些可重用的,非常少的小型可扩展性软件,特别是对于开发时间要求情况比较紧张,使用MVC模式,其实不是一个明智的选择。。
2 系统需求分析
需求分析的主要的任务是准确的了解客户的的需求,对系统提出完整清晰的要求。系统的开发是基于系统需求,无论是彻底,完整,正确是软件项目成功的关键。 一般来说,需求分析需要合作,讨论和共同定义。
2.1 系统开发背景
随着科学技术和电子商务的发展,对于高效率、低成本销售方式越来越受到人们的重视,特别是管理者的重视。电商极具有发展前景。电子商务具有双向沟通、在线交易方式和快速交货的特点,给社会带来巨大的经济利益,促进了我国社会的商务交流,更加有利于降低成本,提高竞争力。电子商务给消费者带来了更多选择可能性和大大方便了消费者的生活
就对洋酒而言,已经不仅仅是只属于高端社会的贵族人群,它现在已经属于整个世界,随着社会的进步,经济的发展,洋酒出现在了各式各样的家庭之中。电子商务使消费者可以在家在公司或者在手机上可以直观的对所需要购买红酒的品牌,产地,色泽,种类有所了解。电商使所有信息一目了然,还可以相互对比做出自己满意的抉择。
2.2 功能需求
网站前台功能
- 首页:提供一个网站首页,在上面显示网站企业LOGO,用户的登录,用户的注册,一级分类显示,最新商品及热门商品显示等。
- 用户的注册:主要针对未注册的用户,完成注册功能使用,在注册过程中,需要进行数据的前台非空校验,及使用AJAX完成用户名是否存在的异步校验。在校验通过后即可完成注册,在后台同样需要进行数据校验及发送一封激活邮件。
- 用户的登录:已经注册的用户,可输入正确的用户名和密码进行登录。
- 用户的退出:针对已经登录的用户,退出该系统使用。
- 首页商品展示:显示最新商品及热门商品。方便用户了解最新以及最热门商品。
- 分类页面商品展示:根据某个分类的信息去展示商品。可以方便用户查找相应分类商品。
- 商品详情展示:点击某个具体商品的时候,可以显示商品的详情。以便用户可以方便的了解商品的具体信息。
- 购物车:此功能为用户提供购物功能,用户可以根据自己需要,将自己需要购买的商品添加到购物车,也可以移除购物车中的商品,甚至清空购物车中的所有东西。
- 订单:登录用户可以将自己喜欢商品进行购买,产生订单。可以对自己产生的订单进行提交。以及可以根据用户信息,查询自己的订单。
网站后台功能
- 管理员登录:管理员根据用户名和密码完成登录功能。
- 一级分类管理:对前台的一级分类进行管理。
- 二级分类管理:对前台的二级分类进行管理。
- 商品管理:管理员可以对前台上显示的商品进行管理包括添加,修改,删除,查询的功能操作同时要可以上传商品的图片。
- 订单管理:管理员可以对所有的用户产生的订单进行管理包括未付款的,已经付款的,已经发货的,交易完成的订单。可以修改订单状态及异步加载订单项。
- 用户管理:管理员可以对注册过的用户进行管理。
2.3 设计需求
本系统的设计是为了帮助洋酒商城进行管理、统计、查询等操作,便于提高商城管理的工作效率、管理透明度以及节省人力物力。
1. 商城现代化
网上洋酒销售系统将以计算机为基础,将其各功能联系成一个整体,使商城信息收集和处理更快捷更准确,从而减少因手工整理,加工的不便而造成的损失。
2. 建立集中统一的基础数据
建立客户与商城之间的数据库,为平时的查询,分析提供可靠的数据来源。
3. 利用先进的计算机技术保证数据的一致性与完整性
利用先进的计算机技术与数据库管理技术,提高数据处理的及时性和数据使用的准确性,实现灵活录入,多次使用,保持数据的一致性。
2.4 性能需求
考虑到网上销售系统使用的特殊性需满足以下要求:
(1)时间特性
由于销售系统的数据库较小,所以程序在响应时间,数据更新处理时间上性能是比较突出的。特别是搜索和查询操作。由于数据量相对较少,故在数据传输时间和系统运行时间上表现的较让人满意。
(2)通用性
由于用户的操作系统不尽相同,这就要求考虑各平台之间的差异,而网上洋酒销售系统所采用的基于B/S的结构就很好的解决了这个问题,用户端只需要有浏览器就可以使用该系统。
(3)保密性
大部分网站都会注意会员信息的保密性,因此为了保护注册会员的隐私,本系统对此也采取了相应的措施,只有登陆之后才能看到他的个人相关购物信息。
-
- 开发环境
2.5.1 硬件环境
- CPU:Inter(R) Core(TM) i5-2430M @ 2.40GHz 2.40GHz
- 内存:4GB
- 硬盘空间:500GB
2.5.2 软件环境
- 操作系统:Windows 7 旗舰版
- 浏览器: Internet Explorer 7、Google Chorme、FireFox
- 开发工具:MyEclipse 10
- 数据库:Mysql 5.5
- 服务器:Tomcat 7.0
- 总体设计
该系统的目的是构建基于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的核心过滤器 -->
<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>
拦截器也用在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的设置。如下面的示例代码。
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- 配置hibernate的其他的属性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<!-- 配置Hibernate的映射文件 -->
<property name="mappingResources">
<list>
<value>cn/itbaizhan/shop/user/vo/User.hbm.xml</value>
</list>
</property>
</bean>
当Spring的IoC容器配置了一个SessionFactory bean时,它将加载应用程序的部署启动,并且可以使用Spring依赖注入功能将bean注入到其他bean中。 我们可以从配置文件中看到,以声明式的方式来管理SessionFactory,可以让应用程序在不同数据源之间切换,一旦持久层服务发生变化,程序代码就不需要改变,只需修改配置文件即可 ,从而提高系统的可维护性。
2,使用Spring HibernateDaosupport和HibernateTemplate类来简化Hibernate DAO类的准备,以完成数据持久化操作。
3,通过Spring交易机制进行统一交易管理。 Spring可以同时使用编程和声明式事务管理。 声明式事务管理更灵活。 您可以在Spring中使用注释声明式事务管理: <!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 注解事务驱动 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
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的配置文件中:
<bean id="userAction" class="cn.itcast.shop.user.action.UserAction" scope="prototype">
</bean>
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-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)用户管理:管理员可以对注册过的用户进行管理。
- 数据库设计
本系统采用的数据库为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所示:
- 一级分类:主键一级分类ID
- 二级分类:主键二级分类ID,外键一级分类ID(外键指向一级分类主键一级分类ID)
- 商品:主键商品ID,外键二级分类ID(外键指向二级分类主键二级分类ID)
- 订单项:主键订单项ID,外键商品ID(外键指向商品主键商品ID),外键订单ID(外键指向订单表主键订单ID)
- 订单表:主键订单表ID,外键用户ID(外键指向用户表主键用户ID)
- 用户表:主键用户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 | 是 | ||||
| 用户邮箱 | 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订单管理
6 系统调试与测试
6.1 说明
一个系统设计完成之后,为了检验它是否合格,都要进行系统测试。软件测试跨越整个生命周期的两个阶段。通常,每个模块写入后,都需要进行测试,模块的作者和测试人员是同一个人。编码和单元测试属于软件生命周期中的同一阶段。在这个阶段之后,软件系统也应该是各种综合测试,这是软件生命周期的另一个独立阶段,通常由专门的测试人员承担这项工作。软件测试包括以下步骤:
1.模块测试:在模块的设计中,每个模块完成一个清晰定义的子功能,而这个子功能等模块之间在同一时期没有相互依存的关系。因此,可以将每个模块测试为一个单独的实体,并且设计一个验证模块正确性的测试方案通常很容易。模块测试的目的是确保每个模块作为单元进行测试,所以称为单元测试。本测试中发现的错误通常是编码和详细的设计错误。
2.系统测试:系统测试是将子系统测试成一个完整的系统,测试应用系统软件由多个子系统组成,每个子系统由多个模块组成。所以我们将调试工作放在模块(程序)调试,子调试(子系统调试),联合(网络调试)3级,在实际操作中识别软件缺陷并予以纠正。
6.2 系统测试方法
有两种方法可以测试:
(1)黑盒测试:如果知道软件的功能,可以测试其每个功能是否达到所需的要求,这种方法称为黑盒测试方法。黑盒测试是指基于测试的软件,既可以看到它是否符合功能要求,是否可以正确接收输入,并输出正确,以及是否保持外部信息的完整性。
(2)白盒测试:如果知道产品的内部活动,可以测试是否符合设计要求。这种方法称为白盒测试方法。白盒测试检查软件内的逻辑结构。它是基于仔细的检查过程。通过软件的逻辑路径通过一组指定的条件和循环测试用例进行测试。可以在不同点检查程序的状态,以确定实际状态是否与预期状态一致。
6.3 系统测试类型
开发“网上洋酒销售系统”时,为了使系统能够稳定运行,系统进行了全面的测试,方法是:
1. 页面测试:为了保证每个JSP页面都可以正常显示与跳转并正确的实现系统功能,我尝试了所有可能的路径组合并对每一个输入项都作了添加,删除,修改,保存等操作,保证了各页面功能正确实现。
2. 数据跟踪:通过该项测试,对系统查询,运算功能跟踪,从而测试正确性,该项主要是针对后台管理模块。我根据原来输入的数据,按要求进行统计,与手工计算的数据进行比较。依次检验数据的正确性。测试结果良好,无出错现象。
3. 综合测试:在上述测试中,在整体系统测试的基础上,为了测试系统功能符合基本系统设计要求。
由于我自己的能力有限,即使经过反复检查,代码也是不可避免的错误,所以这个阶段试图利用有限的时间找到尽可能多的错误,尝试尽可能准确的系统。
统,在前台销售模块,包含了用户登录、用户注册、产品分类、热门推荐、最新上架一系列功能的处理。在模拟使用的过程中,系统中的各个模块都能按照预期的目标实现,系统中的按钮也能够实现其功能,总的来说,可以满足用户的使用,没有出现什么问题。至于该系统的体系结构,也是非常的简单明了,成功或是错误时,都有详尽的提示信息。在系统功能实现的编码过程中,也选择了用时最少,效率最好的办法,在调试的过程中,数据库中的数据录入有限,在对数据编辑的时候,运行较快,特别是在数据查询的时候,也很迅速。
设计该软件的时候,是以简单实用为出发点,因此该系统的操作界面十分朴素,以一个主界面,带动所用的功能模块,各功能模块的操作界面简单明了,没有过多的不必要的成分出现,而且按钮功能说明通俗易懂,即使是不会计算机的人员来说也可以轻松上手。
对于数据库中的数据,已经严格的限制其数据的类型与长度,减少在对数据库操作时所产生出错,冗余等一切不良的后果,对于添加到数据库中的数据,在系统的使用界面就明确指出数据类型的数据,有些数据类型需要转换的,也在数据输入后,通过代码转换的过程进行修改。数据的备份和还原是数据库正常运行必不可少的操作,由于该系统数据使用不是非常频繁,部门又比较少,对于并发控制做的还不是很充分。
结束语
随着计算机技术的发展,使得网络的应用更加广泛。加大信息网络的建设,开展网络交易平台,进行网络交易服务等将成为未来网络建设的具体内容,而网上销售系统平台的出现,能极大的提升大众对于购物的体验。
JSP技术的设计目的是使得构造基于Web的应用程序更加容易和快捷,而这些应用程序能够与各种Web服务器,应用服务器,浏览器和开发工具共同工作。因此本论坛采用JSP技术开放能满足这种需求。
论文中详细讨论了网上洋酒销售系统的设计思想,包括系统体系结构的设计、系统功能模块设计、数据库设计、系统的实现等。根据软件设计和实现的情况,重点阐述了系统实现过程中功能模块设计、数据库设计、组件的设计、前台显示部分设计、后台维护部分设计等关键设计。
到论文截稿时,网上洋酒销售系统已通过运行测试,基本完成预期目标的实现。能够达到在线浏览,购买商品,基本满足了大众电脑购买的需求。
网上电脑销售系统在设计和实现过程中,系统从不可用,到可用运行,从字符乱码,到正常的中文显示。一次次的改进,这使本人认识到设计、算法在系统开发中的重要性和理论与实践相结合的重要性。
但由于系统开发的经验不足,水平有限,所以目前此系统的实现上还有许多地方可以进一步改善和提高。
网上洋酒销售系统只是实现了网上销售系统的基本功,同能时由于是第一次编写此类系统,还有很多比较流行的功能,如:用户数据分析,相关产品推荐,模糊查询等都尚未实现,在算法的采用和数据库逻辑的设计上还存在一些不完善的地方。
在经过几个月的努力,我最终顺利完成了网上电脑销售系统的软件开发。在整个开发过程中,我不仅学会了使用MyEclipse,Mysql等一系列开发工具,体验了开发过程中的苦与乐,而且也达到了锻炼自己的目的,同时进一步加深对软件开发工作的理解和认识。可谓是收获颇丰。
参考文献
- 孙卫琴,李洪成.tomcat与jsp web开发技术详解。电子工业出版社,2003年6月:1-205.
- 清宏计算机工作室,jsp编程技巧,机械工业出版社,2004年5月:1-410
- 耿祥义,张跃平,jsp实用教程,清华大学出版社,2003年4月:1-354
- 孙涌,现在软件工程,北京希望电子出版社,2003年8月:1-246
- 萨师煊,王珊,数据库系统概论,高等教育出版社,2002年2月:3-460
- 李刚,轻量级javaee企业应用实战,电子工业出版社,2011年12月:1-809
- 吴建,张旭东,jsp网络开发入门与实践,人民邮电出版社,2006年:1-360
- Budi kurniawan.struts 2design and programming:a tutorial brainysoftware,second edition edition,2008.1.25
- Roger s-pressman,software engineering[m].new delhi:tata mcgraw-hill publishingcompary ltd,2006
- On the integration of smalltalk and java:Marcel hlopko,Jan kurs,jan vrany,claus gittinger science of computer programming,2013-爱思唯尔期刊
中文翻译
AJAX技术和SSH框架在电子商务系统开发中的应用
1.介绍
电子商务交易双方的特点,形成良好的界面,在网络上简单易用,使供需双方通过网络快速千层万里的交流即可完成交易,使之各种在线交易,支付结算和账户通过电子账单,业务时间不再跟随旅行时间计算,而是开始按“进入”时刻。网络购物系统作为B2B,B2C,C2C电子商务前端业务平台,可以在其业务活动的整个过程中发挥决定性作用。
AJAX的主要功能将改变浏览器客户端和服务器异步交互之间的传统同步交互通信,从而丰富浏览器客户端功能,解决浏览器频繁刷新等待数据传输问题,通过程序用户改进Web体验。
在SSH的框架下,Struts提供MVC模型,接口,业务逻辑和数据分离,并提供高度可扩展的架构。 Struts是表现层MVC框架的实现,目前最常用于创建Web应用程序,是一个开源项目雅加达Apache。使用Model2控制器和自定义标签库的Struts框架将在模型中使用,视图分离基于层之间的松散耦合,达到效果,并增强了系统的灵活性,可重用性和可维护性。
电子商务网站需要显示商品交易的所有信息,一般通过文字,图片,视频,表演。 AJAX技术在其领域有很多应用。在SSH集成框架中,Hibernate提供了数据服务的抽象视图,用户对数据库的访问是非常抽象的。本文介绍了AJAX技术和SSH框架在电子商务系统开发中的应用。
2. AJAX和SSH框架的技术
几个AJAX技术中的XMLHttpRequest是核心技术,它不需要刷新页面到服务器传输或可以读写数据(无刷新页面)的关键。在使用XMLHttpRequest对象发送请求和响应以处理之前,必须首先使用JavaScript [1]创建一个XMLHttpRequest对象。由于XMLHttpRequest不是W3C标准,因此可以使用各种方法来使用JavaScript来创建XMLHttpRequest。
这可以通过使用AJAX技术来解决。用户填写登录名后,一旦输入文本框失去重点,处理功能将通过AJAX进行事件登录,以检查用户是否填写存在重复,而这个调用是异步的,用户可以继续填写其他的注册项目,在此过程中,传输网络不是整个页面,而是少量的文本片段,如用户填写登录名和服务器返回的消息,所以响应速度非常快。
AJAX的最大特点之一是无需刷新页面到服务器或者可以读写数据(无页面刷新),这个特性可以从XMLHTTP XMLHttpRequest组件对象中受益。所以你可以只用服务器数据级别来交换桌面应用程序,而不是总是更新用户界面,也没有时间在服务器上进行数据处理,以减轻服务器的负担和速度加快响应速度,缩短客户的等待时间。
基于标准化和广泛支持的技术,不需要下载插件或小程序。所有流行的浏览器现在支持Ajax技术,使其传播非常顺利。进一步推进页面书数据分离。 AJAX访问服务器可以使用单独的模块进行操作,使技术人员和艺术家可以更好地分工和合作。
浏览器不需要刷新整个页面即可更新页面,整个过程不需要中断用户与应用程序的交互,减少网络延迟给用户体验并不方便。用户Web操作更像桌面应用程序操作敏感和快速的感觉反应。传统Web应用和AJAX应用模式如图1所示。
AJAX引擎被提出并应用于分离网页,浏览器和服务器的异步交互。一方面,通过JavaScript脚本语言灵活处理数据验证,数据编辑用户请求,动态用户界面,依靠DOM和CSS显示和格式化呈现;另一方面,通过JavaScript不需要刷新和重新加载浏览器页面(页面提供的交互完全独立于服务器)条件通过使用XMLHttpRequest,异步服务器对象和数据交换引擎模型。
作为一个开源项目,Struts有很多实践,越来越强大,系统日益完善,其他技术和框架显示出良好的融合。在以SSH为框架的基础上,以Spring为核心,对于集成MVC框架,ORM框架集成下来,IOC使用Spring容器来管理Spring语句之间的各个组件之间的依赖关系,事务管理事务将负责逻辑层组件。
应用程序可能有不同的视图,MVC设计模式来处理数据采集和处理的有限视图的视图,以及用户的请求,处理不包括在业务流程视图中。处理业务流程来模拟治疗。例如,Advanced Materials Research Vol。 952 339视图只接受来自模型数据的订单并显示给用户,并传输输入数据并请求用户界面进行控制和建模。
SSH框架是Struts,Spring和Hibernate三种技术的有机整合,是目前应用最广泛的Java EE架构。在SSH的框架下,Struts提供了MVC模型,接口,业务逻辑和数据分离,并提供了高度可扩展的架构[2]。以Spring为核心,对于集成MVC框架,ORM框架集成下来,IOC使用spring容器来管理Spring语句之间的各个组件之间的依赖关系,事务管理事务将负责逻辑层组件。
Hibernate是一个对象关系映射框架是一个开放源码,它是非常轻量级的对象封装在JDBC上,使用面向对象的编程思想使Java程序员可以操纵数据库。 Hibernate可以在任何情况下使用JDBC,可以在Java客户端中使用,也可以在Web应用程序中使用Servlet / JSP。
3. AJAX和SSH框架在电子商务系统开发中的应用
基于AJAX和SSH技术的电子商务系统的研究与实现,讨论了电子商务系统可用性,可扩展性和可维护性和改进方案的非功能需求。通过分析传统缺乏业务系统请求/响应模式的用户交互,可用性,介绍了AJAX异步请求接入技术的应用,提高了系统的可用性;使用MVC模型的层次设计方法优化客户端代码;结合用户访问控制策略和XML技术,快速实现用户需求变化,带来系统可扩展性,允许代码在最小范围内修改控制程度;强大的异常处理机制采用Java语言和日志功能完善,进一步保证了系统的可靠性和安全性。
在B / S结构系统中,用户通过浏览器向网络分布的许多服务器发送请求,浏览器请求服务器进行处理,用户需要返回浏览器的信息。 B / S结构简化了客户工作;客户端只需要少量的客户端配置软件。服务器将承担更多的工作,访问数据库,应用程序将在服务器上执行,如图2所示。
电子商务网站现在主张个性化,注重满足用户的需求,因此也非常关心与用户的互动。针对购物车系统,AJAX购物车可以获得比传统服务器更快的速度,如客户订单号超过错误消息库存,不要等到用户提交页面知道。第二个是用户反馈,通常通过书或讨论区,可以使用AJAX技术设计出特别敏感的客户留言板或论坛。对于传统的书,刷新在整个留言页面更新,而AJAX留言本,本课程将带来良好的用户体验.404材料科学与设计与制造技术
表现层使用Struts框架,Struts框架是MVC设计模式,明确区分模型,视图和控制器,简化了应用程序开发过程。 Struts核心控制器是由ActionServlet实现的,Struts核心控制器通过JSP页面为客户端请求一个Action控制器基于接收到的ActionServlet使用业务流程模型进行请求。
网上购物中心分为两部分,一部分是以用户为导向的部分,包括:客户在线注册,购物,提交订单,付款等操作;另一部分是商场管理部分,这部分内容包括:添加,删除,查询产品,订单管理,运营商管理,注册用户管理等[3]。
传统上是自动刷新当前的页面定时器技术,为了获取最新的数据,但是当网页需要更改的数据不是很多时,重复的超载会大大降低系统页面的效率。部分刷新功能所以我们介绍AJAX,当然这里的重点在于本地刷新,如果是整个页面的数据几乎都要改变它,建议或定时器刷新,因为如果仍然盲目使用AJAX,会大大增加复杂度系统,有可能违背自己的愿望。这里也是异步的XMLHTTP调用,向服务器发送请求并获取数据,客户端重新组织和显示数据,动态数据采集页面不刷新,如图3所示。
对于商品分类显示可以使用AJAX基于动态树结构,这种结构在显示,扩展,添加,修改和删除操作时,不会导致页面加载,并且只有在必要时才要求数据库,数据加载,不仅速度很快。这个层使用Spring框架,来管理业务组件。
本文介绍了AJAX技术和SSH框架在电子商务系统开发中的应用。 JavaEE是企业信息化发展的平台,非常好,本文将开源框架Struts,Hibernate和Spring作为主体结构体系的业务开发最为流行。实现Struts框架着重于MVC模型。
参考资料:
基于jsp的洋酒销售系统毕业设计(项目报告+答辩PPT+源代码+数据库+截图+部署视频)https://download.csdn.net/download/dwf1354046363/87813623Java毕业设计174例,包含部署视频_易小侠的博客-CSDN博客https://cv2022.blog.csdn.net/article/details/124463185?spm=1001.2014.3001.5502