基于JAVA的购物网站毕业论文.docx
- 文档编号:14109992
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:30
- 大小:999.57KB
基于JAVA的购物网站毕业论文.docx
《基于JAVA的购物网站毕业论文.docx》由会员分享,可在线阅读,更多相关《基于JAVA的购物网站毕业论文.docx(30页珍藏版)》请在冰点文库上搜索。
基于JAVA的购物网站毕业论文
1 引言
自从B2C购物出现在人们的视野中,电子商务就在全世界围受到了格外的关注,并且得到了快速的开展。
从现实角度来看,目前购物的普遍用户是购置者难以自己想要购置的商品甚至用户在消耗很大的精力和时间后即使找到了自己想要的产品,最后却由于其他原因而放弃购置。
很多报道指出,推销商们普遍对目前的网络行销感到失望,尽管如此,电子商务无疑是目前最好的在线商品展示的媒体和工具。
然而,网上产品展示的目的不仅仅是展示产品,而更重要的是通过让客户更多地了解产品而提高产品的购置率。
因此,购物目前所面临的最大挑战之一就是的设计,如何使得网页能够有效地展示自己的产品,同时方便用户的使用,使用户以愉悦的心情选购满意如意的商品。
本系统的目的和意义就是应上述挑战而尝试为用户提供一个操作简单方便的网上交易系统。
利用本系统,用户可以自由地浏览商品,注册成为会员,选择商品参加自己的购物车,而后生成订单,实现网上购物。
2 系统应用的关键技术
2.1 EXTJSMVC的介绍
fields:
[{name:
"id",type:
"int",srotable:
true},
{name:
"text",type:
"string",srotable:
true}]
其中name代表字段名称,type为字段类型,类型只有string、float、int、boolean、date、auto(默认值,意味着无convert方法)6种对应后台pojo,形成一条数据,而stroe层那么是数据集合,也就是model的集合。
开发时我们经常是用代理的方式从后台获取一条json数据,形成stroe,如
proxy:
{
type:
"ajax",
url:
"./category/combo_category.do",
reader:
{
type:
"json",
root:
"rows"
},
writer:
{
type:
"json"
}
}
是用ajax的代理方式从后台获取一个数据集,stroe还得指定你使用的model是那个,model配置项就可以指定你要指定的Model类,用字符串的形式写上类名即可配置好stroe.这时候搭建主面板视图,主面板是一个border布局,上方是login信息以与系统名称,左边属性图,中部是数据表格以与一些表单。
完成的mvc架构还需要controller层,这时候我们要先建立一个app.js,容如下:
Ext.onReady(function(){
//开启提示功能
//动态加载js文件
enabled:
true
});
Ext.application({
name:
"core",//名称
appFolder:
"./core",//所在的目录
launch:
function(){
layout:
"fit",
border:
0,
items:
[{
xtype:
"mainviewlayout"
}]
});
},
});
});
我们用一个Viewport搭建系统主界面,其中items中放入的mainviewlayout就是系统主视图的别名,通过这种方式可以直接加载mianviewlayout类到页面,
C
this.addFunItem=function(funInfo){
if(funInfo){
varmainView=funInfo.mainView;
varfunPanel=mainView.down(funInfo.funViewXtype);
if(!
funPanel){
funPanel=Ext.create(funInfo.funViewName);
mainView.add(funPanel);
mainView.setActiveTab(funPanel);
}else{
mainView.setActiveTab(funPanel);
}}},
传入funInfo是一个js对象,用来加载不同views,models,stores,实现点击左侧树形图,加载不同的数据表格表单树形等不同的数据展示效果.
2.2数据表格的形成
ExtJS中的数据表格中的每一条数据对应的都是Model,所有记录那么是一个数据集合,所以数据表格中我们肯定要配置的有stroe对象,为了形成数据表格中可以形成复选框多项选择的效果我们需要参加的配置项有
selModel:
{
selType:
"checkboxmodel"
},
multiSelect:
true,
使用的是复选形式的选择模式,数据表格必不可少有colums,也就是列模式,规我们接收store数据形成表格的展现形式如:
columns:
[
{text:
"商品名称",dataIndex:
"name",width:
100},],
text表示的每列展示的名字,dataIndex那么是需要展示的字段,一般我们在生成一个数据表格的时候我们都会在表格头上加几个按钮,用来管理数据表格的增删改,这个功能实现只要用tbr里面放几个按钮,分别给上他们响应的rel属性,方便我们在控制器中查找,实现控制功能,常见的数据表格还会有分页展示,以与搜索框,
bbar:
{
xtype:
'pagingtoolbar',
dock:
'bottom',
displayInfo:
true
}
bbar中放入的就是一个分页的组件,他也需要一个数据集合stroe,dock表示地定位的位置,而搜索框我们一般用一个触发器组件来形成,做一个前台的过滤效果即可。
如
"->",
'按名称查询:
',
{
xtype:
'triggerfield',
triggerCls:
Ext.baseCSSPrefix+'form-search-trigger',
listeners:
{
"change":
function(_this,_new,_old,_opt){
var
_store.clearFilter(false);
_store.filter("name",_new);}},
onTriggerClick:
function(){
var_store=this
_store.clearFilter(false);
_store.filter("name",this.getValue());
}
},
这样简单的搜索功能我们就可以实现了。
2.3树的形成
定义一个类继承于.本系统的主界面的树形使用的是本地树,不同过后台生成,直接前台固定数据,生成的固定的树结构,树同样需要数据就有store的配置以与树的items配置主要配置的就是树的各个节点,本系统每一个小菜单就是一颗树,通过前面定义的参加新的视图和控制器的方法来加载不同的页面都需要传入树的节点信息。
2.4数据库的连接
本系统数据库的连接使用的MyBatis框架的数据连接,用配置文件配置数据库连接属性,本次我没有使用外部属性文件,而是直接使用配置的固定参数,先配置一个数据源dataSource,让他直接指向类
url为jdbc:
mysqlL..localhost:
3306/lzl?
characterEcoding=utf-8&useUnicode=true
在配置数据库访问账号密码,这样我们就和数据库连接上了。
2.5系统的运行环境
本系统前端使用mvc模式的ExtJS4.1后台使用springmvc,spring,mybatis整合,使用的效劳器是tomcat7.0,在eclipse编译器下运行即可,操做系统 Windows 7,
在火狐浏览器下进展测试.
2.6springmvc工作流程
1.用户向效劳器发送请求,请求被Spring前端控制ServeltDispatcherServlet捕获;
2. DispatcherServlet对请求URL进展解析,得到请求资源标识符〔URI〕。
然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象〔包括Handler对象以与Handler对象对应的拦截器〕,最后以HandlerExecutionChain对象的形式返回;
3. DispatcherServlet根据获得的Handler,选择一个适宜的HandlerAdapter。
〔附注:
如果成功获得HandlerAdapter后,此时将开场执行拦截器的preHandler(...)方法〕
4. 提取Request中的模型数据,填充Handler入参,开场执行Handler〔Controller)。
在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:
HttpMessageConveter:
将请求消息〔如Json、xml等数据〕转换成一个对象,将对象转换为指定的响应信息
数据转换:
对请求消息进展数据转换。
如String转换成Integer、Double等
数据根式化:
对请求消息进展数据格式化。
如将字符串转换成格式化数字或格式化日期等
数据验证:
验证数据的有效性〔长度、格式等〕,验证结果存储到BindingResult或Error中
5. Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象;
6. 根据返回的ModelAndView,选择一个适合的ViewResolver〔必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet ;
7. ViewResolver结合Model和View,来渲染视图
8.将渲染结果返回给客户端。
2.7spring依赖注入,控制反转
IoC,即控制反转。
他使程序组件或类之间尽量形成一种松耦合结构,开发者在使用类的实例之前,需要先创立对象的实例。
但是IoC将创立实例的任务交给IoC容器,这样开发应用代码时只需要直接使用类的实例,这就是IoC。
通常用一个好莱坞原那么〔请不要打给我,我会打给你。
〕来比喻这种控制反转的关系。
依赖注入有3种类型注入,spring支持2种,setter注入和构造器注入,在项目中我使用的是注解方式的注入,在配置文件中配置了com.lzl包下的类自动注入到容器中,在我们需要用到这些类的时候,我们只需声明该类,然后使用一个autowired注入想要使用的类,其中控制器我们使用的Controller注解标识为控制器,业务逻辑层我们使用的service注解。
这样spring容器就能管理好我们的类。
2.8springAOP
3系统需求分析和总体设计
3.1 系统功能需求
在本系统中用户管理、购物车管理、订单管理、产品展示,商品管理,广告管理六个模块。
分为前台展示项目和后台管理项目。
〔1〕购物车管理:
实现添加商品、取消一个商品、数量修改、清空购物车功能。
〔2〕订单管理:
实现提交订单、删除订单、查询订单、订单审核功能。
〔3〕前台展示:
实现产品列表、产品明细功能。
〔4〕用户管理:
实现用户注册、用户信息修改、用户删除、用户查询功能。
〔5〕商品管理:
实现对商品的添加,对商品信息的修改,对商品的删除。
以与按类别查询商品,按名称查询商品功能。
(6)广告管理:
对主页面广告局部的管理,实现广告的动态化,页面广告信息的更新。
3.2 系统角色与其功能分析
系统中有3个角色:
(1)注册用户
(2)管理员
(3)游客
系统角色的功能
(1)普通用户
的普通浏览者〔即游客〕,可以浏览商品和添加本地购物车。
(2)注册用户
普通浏览者只要注册为用户后,登录成功后有以下功能:
登录,登出,向购物车中添加商品,查看个人信息,生成并提交订单。
添加或修改个人明细资料。
(3)管理员
登录成功后,进入后台项目,对前台展示的动态管理,以与用户商品等管理,对订单的审核。
3.3 总体设计思想概述
本系统是基于B/S架构下的多层结构应用系统。
B/S〔Browser/Server〕结构即浏览器和效劳器结构。
它是随着Internet技术的兴起,对C/S结构的一种变化或者改良的结构。
在这种结构下,用户工作界面是通过WWW浏览器来实现,极少局部事务逻辑在前端〔Browser〕实现,但是主要事务逻辑在效劳器端〔Server〕实现,形成所谓三层3-tier结构。
这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的本钱和工作量,降低了用户的总体本钱〔TCO〕。
在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。
推荐的分层式结构一般分为三层,从下至上分别为:
数据访问〔dao〕层、业务逻辑层、表示层
总的来说,采用分层结构的设计思想,可以让每个层由一组相关的类或组件构成,共同完成特定的功能。
层与层之间存在自上而下的依赖关系,上层组件会依赖下层组件的API,而下层组件那么不依赖于上层组件。
例如:
表述层依赖于业务逻辑层,而业务逻辑层依赖于数据库层。
并且每个层对对上层公开API,但具体的实现细节对外透明。
当某一层发生变化,只要API不变,不会影响其他层的实现。
在本系统中,使用开源的mysql数据库,持久层用到spring所集成的mybatis技术,业务逻辑层用普通javabean实现,表述层运用基于springmvc的MVC设计模式〔springmvc用来做C层,spring实现V层与C层的解耦以与C层与M层的解耦〕。
3.4 数据库设计
图3-1数据库E-R
下面列出了设计过程中所用到的数据库表与其结构:
表3-1lzl_quser前台用户表
列名
类型
长度
允许空值
描述
id
int
11
不允许
主键
username
varchar
255
不允许
用户名
password
varchar
255
不允许
密码
varchar
255
允许
地址
varchar
255
允许
phone
varchar
255
允许
sex
varchar
255
允许
性别
xl
varchar
255
允许
学历
ah
varchar
255
允许
爱好
jj
varchar
255
允许
简介
表3-2lzl_user管理用户表
列名
类型
长度
允许空值
描述
id
varchar
11
不允许
主键
username
varchar
255
不允许
用户名
password
varchar
255
不允许
密码
sex
int
11
允许
性别
phone
varchar
155
允许
varchar
255
允许
addr
varchar
255
允许
地址
varchar
255
允许
地址
表3-3lzl_product商品表
列名
类型
长度
允许空值
描述
id
int
11
不允许
主键
name
varchar
255
允许
商品名
desc
varchar
255
允许
描述
norma_Price
double
11
允许
社会价格
member_Price
double
11
允许
本店价格
pdate
timestamp
0
允许
上货日期
category_id
int
11
允许
所属类型
photo
varchar
255
不允许
图片地址
表3-4lzl_cartItem购物车表
列名
类型
长度
允许空值
描述
id
int
11
不允许
主键
product_id
int
11
不允许
商品id
product_name
varchar
255
允许
商品名称
count
int
11
允许
商品数量
price
double
11
允许
商品单价
quser_id
int
11
不允许
用户id
state
int
11
允许
当前状态
imagepath
varchar
255
允许
商品图片
3.5 系统的类设计
DAO类设计
通过这个mybatis获取对应的DAO,然后使用DAO进展数据库操作,每个dao对应一个Mapper配置文件,进展Sql的配置,在本系统中,dao的一般使用都使用了BaseProvice类,根据约定实体用param(“entity〞)标识,分页参数用param(“pageNum〞)和param(“pageSize〞)标识,这样就能友好的被读取,按照约定还有实体中的其他对象属性要用ObjectAlt注解标志,集合用ArrayAlt标志,这样的标识都可以方便我们更好的识别其属性到底是个什么类型,其次做条件查询时,是用entity标识的实体中有不为空的属性且不为空字符串时就会被and连接,保存也是实体中不为空的属性都会进展保存,主键必须为空,数据库进展主键的自动增长
JacksonUtil类设计
本类中实现了一个mapToJson方法,参数为一个Object的对象。
返回值为一个String类型的json对象,本类可以将对象或者集合传化为JSON格式的字符串,用的是JackSonJar包。
用Target(ElementType.FIELD)标识表示可以使用在属性上,在使用Retention(RetentionPolicy.RUNTIME)在运行时检测,最前方法中声明一个Stringvalue(),本类用来标识实体类中的对象属性。
3.6系统的用例图
图3-2总体用例分析1
图3-3 总体用例分析2
如图3-3,用户管理、购物车管理、订单管理、产品展示,广告管理,商品管理6个模块构成了本b2c购物系统。
User是指系统用户,包括注册用户和匿名用户两种,匿名用户只可以浏览商品,匿名用户通过用户管理模块注册后就可以使用购物车和下订单。
图3-4 用户管理用例
如图3-4,用户管理模块主要包括:
用户登陆、用户注册、用户信息修改、用户删除、用户信息查询五个功能组成。
图3-5 购物车管理用例
如图3-5,购物车管理模块主要包括:
添加商品、取消一个商品、数量修改、清空购物车四个功能组成。
图3-6 订单管理用例
如图3-6,订单管理模块主要包括:
订单提交、删除订单、订单明细三个功能组成。
4.系统结构设计
图4-1系统前台功能设计
图4-2系统后台功能设计
图4-3系统总体功能设计
图4-4个别功能设计
5系统的详细设计
5.1BaseProvice类
这个类重要是复用型的后台动态SQL语句的生成,在dao层使用selectkey注解指定type为BaseProvice.class,method为指定的方法,
该方法返回值为一个String,参数为Fieldfield,Map
该方法返回值为一个String,参数为Fieldfield,Map
首先我们在BaseProvice类下建立一个名为findOne返回值为String值参数为一个map的方法,其次通过map.get("entity").getClass()得到一个map中param(“entity〞)注解标识为实体的Class对象,然后我们声明一个String类型的字符串,初始化为〞select*from〞,通过concat方法用刚刚得到的Class对象的getSimpleName()方法得到类名,约定好lzl_+类名就为数据库表名,这时候就得到了Select*from表名,最后我们在通过concat方法拼接whereid=#{entity.id},返回字符串sql。
先声明一个名为findList返回值为String参数为Map
=null,不为空的时候我们对属性的类型进展判断,这时候我们就要用得isString,isInteger,isObject方法,最后返回sql。
这个方法中我们只需要调用上放的findList方法,最后我们将sql
Concat方法拼接lim
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 JAVA 购物 网站 毕业论文