基于Struts2和DAO的企业销售服务系统

2016-01-26 08:13甘文丽范刚龙
大庆师范学院学报 2015年6期
关键词:销售数据库客户

甘文丽,范刚龙

(洛阳师范学院 信息技术学院,河南 洛阳471022)



基于Struts2和DAO的企业销售服务系统

甘文丽,范刚龙

(洛阳师范学院 信息技术学院,河南 洛阳471022)

摘要:使用Java Web开发相关技术实现了一个企业销售服务系统,实现了客户关系管理、产品销售管理、仓库管理、销售数据统计分析等功能,为企业全面掌握业务动态、经营状况以及更好地完善客户服务提供了便捷、直观的手段。系统使用Struts 2框架结合 DAO模式进行设计,数据库使用小巧方便的MySQL数据库,前台使用DIV+CSS进行页面的排版和设计,通过Ajax异步获取数据并动态的填充到页面中去,极大简便了用户的操作,同时为页面的呈现使用的丰富的动画效果,拥有非常良好的用户体验。

关键词:Java Web;Struts 2;DAO;Ajax;企业销售服务

0引言

企业销售服务系统是管理客户的信息、跟踪销售线索、管理各种销售活动、统计企业销售业绩的理想工具,是可以协助销售经理和销售人员快速管理客户、从事销售和业务活动的重要数据。因此,开发一个适合中小型企业的销售服务系统非常有意义。

本文设计和实现的企业销售服务系统通过客户管理、产品管理、销售管理、仓库管理、统计分析等功能,将独立的市场管理、销售管理与售后服务进行集成,提供统一的运作平台,实现了企业内部资源管理计算机化、标准化、自动化,减轻管理人员工作负担,提高了工作效率,也有助于企业领导的监控和决策。该系统采用MyEclipse6.5软件作为工具进行系统开发,运用安全性能高、可移植性好的JavaWeb框架Struts2[1-2]和目前流行的数据库访问模式DAO(DataAccessObject)[3]作为系统开发的基础构架,数据采用轻量级MySQL数据库存储,既提供了系统的可扩展性和可维护性,也保证了数据的稳定性。此外,系统大量使用了Ajax技术[4-5],为页面的各种操作带来了极大的方便和友好的用户体验。

1系统设计

该系统主要的功能不仅能存储企业的全部产品信息、库存信息、客户信息,而且能够对所有信息进行统一查看和管理,另外,系统提供了销售管理以及对销售情况的统计分析,为企业全面掌握业务动态、经营状况提供了便捷的手段。系统主要分为产品管理、客户管理、销售管理、仓库管理、统计分析等功能模块。

该系统的安全性主要是防止他人非法进入系统,从而保证了数据的安全性、数据存储的完整性和数据的可靠性。系统设置了5种不同权限等级的登录,等级越高所拥有的权限也越高,系统的流程图如图2所示。高等级管理员拥有此等级以下所有等级的权限。比如,权限等级为3的管理员同时拥有权限等级为1和2的所有操作权限。权限等级为5的管理员拥有所有的权限。企业员工的职位不同,他们拥有的权限也不同,将系统所有的功能划分为5个等级:

权限为1:只能查看产品信息、查看入库记录、查看出库记录、查看日经营历程、查看月经营历程,不能查看客户信息,没有任何的修改权限。

权限为2:此等级的企业员工主要负责企业产品的管理,他们依然没有权力查看客户的信息资料,拥有的主要功能有添加产品、修改产品信息、产品采购申请、产品采购撤销等操作。

权限为3:这个等级的员工只能查看客户信息和这些用户相应的订单信息,以便为客户进行一些送货或者回访等服务。

权限为4:可以把这个权限划分给销售部门,主要权限有添加订单、撤销订单、添加新客户以及修改客户信息。

权限为5:可以查看客户消费统计以及删除产品信息。

系统的功能模块和系统流程如图1、2所示:

图1 系统功能模块

2系统实现

系统采用了MyEclipse6.5作为开发工具,部署系统使用的Web服务器为Tomcat6,使用轻量级的数据库MySQL5.1保存数据。企业销售服务系统采用Struts2 +DAO的软件架构,分为:表现层、控制层、数据访问层。由于系统功能较多,下面以系统的添加产品功能为例,详细介绍Struts2结合Ajax和DAO设计模式的具体功能实现。

2.1表现层

表现层也就是视图,主要实现和用户的交互,采用了JSP技术结合Struts2标签和OGNL表达式生成页面,前台使用DIV+CSS进行页面的排版和设计。在用户界面和后台服务器之间加入Ajax引擎,用户提交请求时,先将请求送给Ajax引擎,由Ajax引擎判断该请求的类型,如果是简单的并且无需服务器处理的请求,则由Ajax引擎自行处理,这样就可以只从后台获取需要的少量数据从而避免刷新整个页面,减轻了服务器的负担,减少了用户等待的时间,极大的提高系统运行速度,增强了用户体验。添加产品功能表现层的核心代码如下:

functionaddProduct(){

varkindid= $('input[name=kindid]').attr('value');

if(kindid==0){

$('.message:eq(1)').html('请先选择一个产品目录').fadeIn('slow',function(){

setTimeout(function(){

$('.message:eq(1)').fadeOut(1000);

},1000);

});

}else{

varparams= $('form:eq(0)').serializeArray();

for(i=1;i<5;i++){

if(params[i].value==""){

$('input[name='+params[i].name+'〗')[0].focus();

return;

}}

$('.loading:eq(1)').fadeIn('normal',function(){

$.ajax({ //提交数据给服务器

url:rp+ '/admin/addProduct.do', //数据请求的url地址

type:'POST', //数据传递方式

data:params, //传递数据的参数字符串

dataType:'json', //数据返回的格式

success:function(data){ //请求成功时触发的函数

$('.loading:eq(1)').fadeOut('slow',function(){

$('.message:eq(1)').html(data.message).fadeIn('slow');

});},

error:function(xhr){

$('.loading:eq(1)').fadeOut('slow',function(){

$('.message:eq(1)').html('服务器响应异常,请稍候重试').fadeIn('slow');

});},

2.2控制层

主要负责接受用户发来的请求,调用数据访问层,并将用户请求的数据返回给表现层来显示。控制层主要由Struts2的核心控制器FilterDispatcher以及一些业务控制器Action构成。FilterDispatcher负责拦截所有的客户端请求,然后通过读取配置文件来确定交给哪个业务控制器Action继续处理。实现添加产品功能的业务控制器Action核心代码如下:

publicStringaddProduct() {

Stringcontent= "{";

ActionContextac=ActionContext.getContext();

if(!((Integer)ac.getSession().get("level")>1)) {

content+= "”result”:”flase”";

content+= ",”message”:”没有权限执行此操作”";

}elseif(id==null||kindid==null||name==null

||model==null||repair==null) {

content+= "”result”:”flase”";

content+= ",”message”:”产品信息不完整”";

}else{

ProductDaopd=DbFactory.getProductDao();

if(pd.getProductsNumber(id) > 0) {

content+= "”result”:”false”";

content+= ",”message”:”此产品编号已存在”";

}elseif(pd.addProduct(id,kindid,name,model,repair,remark)) {

content+= "”result”:”true”";

content+= ",”message”:”产品添加成功”";

}else{

content+= "”result”:”flase”";

content+= ",”message”:”产品添加失败,请重试”";

}

}

content+= "}";

ac.put("ajax",content);

return"success";

}

拦截器能在Action被调用之前和被调用之后执行一些代码,Struts2的大部分核心功能都是通过拦截器来实现的,如防止表单重复提交、类型转换、对象封装、校验、文件上传、页面预装载等,每一个拦截器都是独立装载的,可以根据实际的需要为每一个Action配置它所需要的拦截器。

2.3数据访问层

主要采用了DAO(DataAccessObject)设计模式,该层抽象和封装了对数据源的访问,负责管理管理对数据源的连接,以及数据的存取。数据访问层主要包括:数据库连接类、VO类、DAO接口、DAO实现类及DAO工厂类的设计和实现。(1)数据库连接类:主要功能是连接MySQL数据库并获得数据库连接对象,以及关闭数据库。(2)VO类也就是实体类,该类中所有属性和数据库表中字段完全对应,并在类中提供setter和getter方法来设置及获取该类中的属性。(3)DAO接口:声明了对数据库表的基本操作,如表中记录的增、删、改、查等。(4)DAO实现类:由于在DAO接口中只有方法的定义而没有具体实现,故需要定义DAO实现类对接口所声明的所有功能进行实现。(5)DAO工厂类:如果没有DAO工厂类,那么就要通过创建DAO实现类的对象才能完成数据库操作,这样就要知道具体的子类,对于后期的修改维护很不方便。DAO工厂类可以很好地解决问题,通过DAO工厂类的静态方法就可以获得具体的DAO实现类对象。数据访问层采用这样的DAO设计模式,可以极大的简化代码,增强软件的可移植性。

3 结语

本文介绍了JavaWeb框架Struts2结合DAO数据库访问模式在企业销售服务系统中的应用,Struts2作为系统的MVC(模型-视图-控制器)框架使用,所有通过浏览器发来的用户请求都由Struts2的核心控制器负责拦截,并且调用数据访问层的数据访问对象来处理用户请求,并把返回的结果封装成视图呈现给用户。通过Struts2+DAO数据库访问模式并且结合Ajax技术可以显著提高系统的开发效率,增强了系统的可维护性和可扩展性,并极大地提升Web应用的响应速度。该系统采用B/S结构,不用安装客户端,用浏览器就可以登录系统,只要能上网,随时随地都可以处理企业的业务,实现了企业各个部门之间的信息共享,系统几乎适用于所有的中小型企业,他们可以使用此系统来更加方便、智能、快捷地管理企业内部以及客户的信息。

[参考文献]

[1]王海涛,贾宗璞. 基于Struts和Hibernate的Web应用开发[J]. 计算机工程, 2011, 37 (9) :112 -114.

[2]王建文,王敏. 基于Struts框架的油田信息管理系统研究与实现[J]. 计算机工程与设计, 2009, 30 (16) :3231 -3233.

[3]宋波,李妙妍.利用泛型DAO模式改进轻量级J2EE架构[J]. 计算机工程与设计, 2009, 30 (24):5663.

[4]丁波,晁爱农. 基于Struts2框架的AJAX开发研究[J]. 计算机工程与设计, 2009, 30 (16) :3910 -3913.

[5]李红娟,温 酷. 基于J2EE与Ajax的Web应用架构设计[J].制造业自动化, 2011, 33(5):127 -129.

SalesandservicesystemofenterprisebasedonStruts2andDAO

GANWen-li,FANGang-long

(InstituteofInformationTechnologyLuoyangNormalUniversity,Luoyang471022,China)

(英文摘要略)

中图分类号:TP311

文献标识码:A

文章编号:2095-0063(2015)06-0021-04

收稿日期:2015-09-07

基金项目:河南省科技厅科技成果转化计划项目(142201110028)。

作者简介:甘文丽(1979-),女,河北邢台人,副教授,从事Java企业级应用开发研究。

DOI10.13356/j.cnki.jdnu.2095-0063.2015.06.006

猜你喜欢
销售数据库客户
这四个字决定销售成败
为什么你总是被客户拒绝?
如何有效跟进客户?
给人带来快乐的袜子,一年销售1亿美金
数据库
数据库
数据库
做个不打扰客户的保镖
数据库
23