客户关系管理系统-毕业论文_第1页
客户关系管理系统-毕业论文_第2页
客户关系管理系统-毕业论文_第3页
客户关系管理系统-毕业论文_第4页
客户关系管理系统-毕业论文_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、湖南软件职业学院毕业设计湖南软件职业学院 毕业设计 毕业选题:基于JavaEE的客户关系管理系统指导教师:谢钟扬学生姓名:杨相华院系名称:软件工程专业班级:Java1304学生学号:201302060417提交日期:2015年12月19日- 1 -目 录第一章 前言- 1 -1.1系统的开发背景- 1 -1.1.1客户管理系统的发展- 1 -1.1.2客户管理的现状- 2 -1.2系统实现的目标- 2 -1.3系统开发的意义- 3 -第二章 客户管理系统分析- 4 -2.1系统的设计目标- 4 -2.2系统的可行性分析- 4 -2.2.1用户群体与市场分析- 4 -2.2.2技术能力分析- 5

2、 -2.2.3可行性分析总结- 5 -第三章 系统的开发技术及主要架构- 6 -3.1开发技术的选择- 6 -3.1.1 ssh编程技术- 6 -3.1.2 oracle开源数据库的开发- 7 -3.2开发工具和开发技术的选择- 8 -第四章 总体设计- 9 -4.1系统功能模块设计- 9 -4.2数据库设计- 12 -第五章 详细设计- 16 -5.1数据库连接- 17 -5.2登陆与权限模块- 17 -5.3营销管理- 22 -5.4客户管理- 26 -5.5服务管理- 32 -第六章 系统测试与难点分析- 35 -6.1系统运行的环境搭建- 35 -6.2系统的测试分析- 35 -结 论

3、- 37 -参考文献- 38 -致 谢- 39 -III第一章 前言1.1系统的开发背景1.1.1客户管理系统的发展随着扩大的市场,企业之间出现了激烈的竞争,企业的角色的扮演对应着企业的不同,各个企业相互之间有着许多的交流的信息、对不同情况的异常的解决方案,第一个是对数据的动态管理,第二个主要是对各种资料的静态管理,对于一般的企业来说,它更加倾向于把各种杂乱无章的资料等进行分类管理,所以,该javaEE的客户关系管理系统在这种市场的冲击下诞生了。对于企业来说,客户是最重要的来源,因此,客户的管理有了很多的技术支持,这时,企业也应尊重客户的要求,同时对服务以及快速反馈等方面要求要更好,到来的科技

4、时代,让顾客有了更多的选择的权利,顾客占据了首要地位,企业对客户的关系进行处理时,对客户的埋怨,问题等处于被动,在这样的情形中,该系统于是产生了,什么是客户的关系的管理呢?它是企业对于提高客户对企业的满意,展开的一项长期的建立企业和客户之间的关系的任务。- 37 -1.1.2客户管理的现状客户对于企业的发展是有着举足轻重的,然而客户又有着各种各样的群体,比如有正在联系的,即将要联系的,同时客户又可能分布于不同地方,属于各种各样的行业领域,因此,有着更加高效的管理措施成为了关键。而基于javaEE的客户关系管理系统正是为了解决对客户的高效的管理而出现的,该系统通过对各种各样的消息进行增删改查等功

5、能的实现,对于提高管理客户的管理效率,以及真实的数据性都有着很大的提高。1.2系统实现的目标依据客户管理需要完成的内容,结合宽带开通业务的实际需要,本系统要完成的主要的功能分析如下:根据阅读客户管理的文档需求,该系统主要要实现以下的功能。1. 对客户进行添加。2. 对系统进行权限的分配,角色的不同对应着相应的权限3. 营销管理。它包含了营销机会的管理以及对客户进行计划的制定两个功能模块。4. 对联系人进行管理,它是为了获得和客户之间的更多的交流,从而对工作的效率有了提升。 5. 服务的管理。在客户的联系人添加后,为了降低客户的流失,就应当对各种客户的各种服务执行分类处理。1.3系统开发的意义该

6、户关系管理系统主要是对客户进行管理,它包含了客户管理,服务管理等多种功能,有着简单的操作,可以帮助企业对客户进行不同的管理,它对于企业的销售额的提升,客户的忠诚的提升有着重大的实际意义。 根据阅读客户管理的文档需求,该系统主要要实现以下的功能。5. 对客户进行添加。6. 对系统进行权限的分配,角色的不同对应着相应的权限7. 营销管理。它包含了营销机会的管理以及对客户进行计划的制定两个功能模块。8. 对联系人进行管理,它是为了获得和客户之间的更多的交流,从而对工作的效率有了提升。 5. 服务的管理。在客户的联系人添加后,为了降低客户的流失,就应当对各种客户的各种服务执行分类处理。第二章 客户管理

7、系统分析2.1系统的设计目标该系统运用了运用了常规的框架,能够对客户进行审查,消息的添加等,完成对客户的处理、分析和维护系统等结构的组成。以及一些常规的设置和数据库管理等。2.2系统的可行性分析2.2.1用户群体与市场分析基于javaEE的客户关系管理系统能为企业提供有效的管理客户,它是以客户为中心,能够对企业的销售总额的提高,处理好与客户之间的关系,加强与客户亲密的联系的系统。该系统通过对客户的有效管理,可以对企业的销售总额的提高,对利润的改善,客户的信任的提升,通过对客户更多的了解,客户消息的分享,提升客户的作用,可以让企业与客户双方都有很好的利润。本系统是一种用来处理企业和客户的协调发展

8、的管理系统,它通过对客户主动的进行了解,分析,并及时进行反馈等,从而提高客户对企业的信赖,增加企业的收入,都有着很重要的影响。从客户的角度出发,可以让企业对客户的拥有得到提升。2.2.2技术能力分析根据本系统的功能需求,采用ssh三大框架技术与oracle数据库进行开发,使基于Web的应用程序的开发变得迅速和容易。根据第三方结果,在千万级的环境中依然保持较高的执行速度。因此在技术层面上,是完全可行的。2.2.3可行性分析总结对市场以及企业对客户的需求来看,本系统有着开发的实际意义,因此可行的。. 第三章 系统的开发技术及主要架构3.1开发技术的选择3.1.1 ssh编程技术struts2:它是

9、基于mvc设计模式的框架。struts2不只是struts1下一个版本,它更是一个完全重写的struts架构。struts2的前端控制器是一个FilterDispatcher,struts2对同一个路径的每个请求分别使用一个独立action实例对象,所有对于struts2的action不用考虑线程安全问题,它有丰富的标签,支持i18n,提供了异常处理,权限控制等功能。spring:它是基于mvc设计模式的框架,它主要核心包含了控制反转和依赖注入,控制反转(IOC)的技术促进了松耦合。当应用了IOC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。依赖注入

10、(DependencyInjection)特征是实现容器对Bean的管理。spring它最大作用就是替代EJB开发j2EE,使得j2EE开发变得更加容易。hibernate:它是基于mvc设计模式的框架,hibernate是一种流行ORM框架。使用hibernate框架,不用写JDBC代码,仅仅是调用一个save方法就可以将对象保存到关系数据库中,仅仅调用一个get方法,就可以从数据库中加载出一个对象,从而简化了大量的代码的编写,它使用的基本流程是1. 配置Configuration对象2. 产生sessionFactory3. 产生session对象4. 启动事物完成增删改查(CRUD)操作

11、5. 关闭session使用hibernate时,先要配置hibernate.cfg.xml文件,其中配置数据库连接信息和方言等,还要为每个实体配置相应的hbm.xml文件,hibernate.cfg.xml文件中需要登记每个hbm.xml文件,除此之外,hibernate包含了session的缓存原理,级联,延迟加载和hql查询等。3.1.2 oracle开源数据库的开发oracle数据库系统是美国oracle公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。它的优点为可用性强可扩展性强数据安全性强稳

12、定性强3.1.3 javaEE编程技术javaEE也即j2EE是一个为企业分布式应用的开发提供的标准平台,同时它也是一个框架,包含了JDBC,JNDI,RMI,EJB等技术。sun设计j2EE的初衷正是为了解决两层模式(client/server)的弊端l 20002001年Craig觉得web层可以使用MVC框架使该层开发更加容易,于是就有了struts,这一步是对原来规范的很好实现,并没有产生质的突破。l 20012003年Gavin觉得EJB连接数据的部分有待改进,于是就有了hibernate,hibernate并没有被规范束缚,而是想怎么改就怎么改。l 20022004年Rod觉得类和

13、类之间的依赖关系应该改善,于是就有了spring,spring是为了让javaEE规范更加易用,因此对其进行了改造。在当时看绝对是取其精华,去其糟粕。3.2开发工具和开发技术的选择l 系统开发平台:Eclipsel 数据库管理系统软件:oraclel 运行平台:Windows 2000/Windows XP/Windows 2003/Win7l Java开发包:JDK6.0l Web服务器:Tomcat 6.0l 本系统采用的ssh开发技术:第四章 总体设计4.1系统功能模块设计(1).营销管理功能结构图:图4-1 营销管理(2)客户管理功能结构图: 图4-2 客户管理(3)服务管理功能结构图

14、: 图4-3 服务管理服务处理流程: 4.2数据库设计本系统主要的数据库表的设计如下:1.客户表图4-4客户表2.营销机会表图4-5 营销机会表3.联系人表图4-6 联系人表4.数据字典表图4-7 数据字典表5.服务表图4-8 服务表6.用户表图4-9 用户表7.角色表图4-10 角色表8.权限表图4-11 权限表第五章 详细设计本系统的模块分为客户管理模块,流失管理模块,营销管理模块,基础数据以及服务管理模块和用户管理六个功能模块。其中客户管理主要用来管理和客户相关的信息,营销管理包括了机会的管理和开发客户两个模块,客户流失模块用来管理客户的流失状况,服务管理模块用来对客户的动态进行了解,满

15、足客户的需求,服务管理模块包括创建服务,分配服务,处理以及反馈和对服务的归档。用户管理模块包括对用户的管理,对用户权限的控制等功能。本项目的大致结构如图5-1: 图5-1项目总体结构图5.1数据库连接本系统使用三大框架之一的hibernate对数据库来进行连接,它主要是在dao层实现代码的编写。5.2登陆与权限模块此模块用于用户的登陆验证与权限控制登陆界面如图5-2:图5-2 登陆界面图l 当用户名或密码输入出错时提示错误信息,JSP代码为:<form id="form_login"action="$pageContext.request.contextPa

16、th/userAction_login"method="post"onsubmit="return loginSubmit()"><table width="100%"border="0"cellspacing="0"cellpadding="0"><tr><td colspan="3"></td></tr><tr><td width="16%"

17、;height="25"><div align="right"><span class="STYLE1">用户名</span></div></td><td width="57%"height="25"><div align="center"><input class="inp"id="User_name"type="text&quo

18、t;name="userName"/></div></td><td width="27%"height="25">&nbsp;</td></tr><tr><td height="25"><div align="right"><span class="STYLE1">密码</span></div></td><td h

19、eight="25"><div align="center"><input class="inp"id="User_password"type="password"name="userPassword"></div></td><td height="25"><div align="left"><input type="image"sr

20、c="images/login/dl.gif"width="49"height="18"border="0"/></div></td></tr></table></form>后台数据接收(通过struts与spring控制找到请求的action类),其中model是在action类实现模型驱动ModelDriven,通过反射得到具体的实体类。关键代码如下所示:public abstract class ModelDrivenBaseAction<

21、;T>extends BaseAction implements ModelDriven<T>protected T model;public ModelDrivenBaseAction()try/得到model的类型信息ParameterizedType pt=(ParameterizedType)this.getClass().getGenericSuperclass();Class clazz=(Class)pt.getActualTypeArguments()0;/通过反射生成model的实例model=(T)clazz.newInstance();catch(Exc

22、eption e)throw new RuntimeException(e);public T getModel()return model;/*登录页面*/public String loginUI()throws Exceptionreturn"loginUI"/*登录*/public String login()throws Exception/查询CrmUser user=userService.getByLoginNameAndPassword(model.getUserName(),model.getUserPassword();if(user=null)add

23、FieldError("login","用户或密码不正确");return"loginUI"else/正确就登录用户ActionContext.getContext().getSession().put("user",user);return"toIndex"struts2的权限拦截器的配置:<interceptors><!-声明一个拦截器-><interceptor name="checkePrivilege"class="cn.cr

24、erceptor.CheckPrivilegeInterceptor"></interceptor><!-重新定义defaultStack拦截器栈,需要先判断权限-><interceptor-stack name="defaultStack"><interceptor-ref name="checkePrivilege"/><interceptor-ref name="defaultStack"/></interceptor-stack>

25、</interceptors>action层关键代码:public class CheckPrivilegeInterceptor extends AbstractInterceptorpublic String intercept(ActionInvocation invocation)throws ExceptionCrmUser user=(CrmUser)ActionContext.getContext().getSession().get("user");/获取当前访问的URL,并去掉当前应用程序的前缀(也就是namespaceName+actionN

26、ame)String namespace=invocation.getProxy().getNamespace();String actionName=invocation.getProxy().getActionName();String privilegeUrl=null;if(namespace.endsWith("/")privilegeUrl=namespace+actionName;elseprivilegeUrl=namespace+"/"+actionName;if(user=null)if(privilegeUrl.startsWith

27、("userAction_login")/userAction_login,userAction_loginUI/如果是正在使用登录功能,就放行return invocation.invoke();else/如果不是去登录,就转到登录页面return"loginUI"/如果已登录用户(就判断权限)elseif(user.hasPrivilegeByUrl(privilegeUrl)/如果有权限,就放行return invocation.invoke();else/如果没有权限,就转到提示页面return"noPrivilegeError&quo

28、t;5.3营销管理营销的具体表现就是指对新客户的开发。对分配给自己的机会可以进行计划的制定,计划制定后,需要添加执行计划的开发效果,该功能是由客户经理完成。销售机会在开发计划结束后可以分为开发成功,和开发失败。如果成功的进行了开发,那么就在数据库添加一条客户记录。在JSP页面显示所有未分配的营销机会,并且可以对他们进行修改。营销管理界面如图5-3图5-3 营销列表图模糊查询和分页查询:public void findBy(CrmChance crmChance,Page page)private StringBuffer sql;sql=new StringBuffer("from

29、CrmChance c where 1=1");/机会的idif(MyTools.isNotEmpty(crmChance.getChcId()sql.append("and c.chcId="+crmChance.getChcId();/客户姓名if(MyTools.isNotEmpty(crmChance.getChcCustName()crmChance.setName("%"+crmChance.getChcCustName()+"%");sql.append("and c.chcCustName like

30、:name");/概要if(MyTools.isNotEmpty(crmChance.getChcTitle()crmChance.setTitle("%"+crmChance.getChcTitle()+"%");sql.append("and c.chcTitle like:title");/联系人if(MyTools.isNotEmpty(crmChance.getChcLinkman()crmChance.setMan("%"+crmChance.getChcLinkman()+"%&q

31、uot;);sql.append("and c.chcLinkman like:man");/创建时间if(crmChance.getChcTotalDate()!=null&&crmChance.getChcEndDate()!=null)String totalDate=crmChance.getChcTotalDate().toString();String endDate=crmChance.getChcEndDate().toString();StringtoStrings=totalDate.split("");Stringe

32、nStrings=endDate.split("");sql.append("and c.chcCreateDate between to_date('"+toStrings0+"','yyyy-MM-dd')"+"and to_date('"+enStrings0+"','yyyy-MM-dd')");/状态if(MyTools.isNotEmpty(crmChance.getChcStatus()sql.append("

33、;and c.chcStatus like'%"+crmChance.getChcStatus()+"%'");sql.append("order by c.chcId desc");Query query=getSession().createQuery(sql.toString();query.setProperties(crmChance);/获得总记录数""page.setCount(query.list().size();/分页查询query.setFirstResult(page.getCurre

34、nt()-1)*page.getSize();query.setMaxResults(page.getSize();page.setResults(query.list();销售机会删除:删除时系统会给出提示消息,提示是否要删除以及是否删除成功。<img title="删除"src="images/bt_del.gif"class="op_button"onclick="delChange('<s:property value="chcId"/>')"/>

35、/删除营销机会function delChange(changeId)if(confirm("你确定要删除吗?删除后将丢失某些数据")location.href="chanceAction_delete?chcId="+changeId;alert("删除成功");删除时效果如图5-4 所示:图5-4 数据删除时效果图销售机会添加时,对“未分配”的状态下的机会能执行删除,分配后状态改为已分配并且可以对计划进行制定。如果有客户进行了下单等操作,那么则说明客户成功的进行了开发。对客户成功的进行开发后,此时其状态变更为“开发成功”。并且把客

36、户记录添加到数据库。首先需要在jsp页面导入struts2标签<%taglib uri="/struts-tags"prefix="s"%>利用<s:if test=""></s:if>标签<s:if test="chcStatus=1">未指派</s:if><s:if test="chcStatus=2">已指派</s:if><s:if test="chcStatus=3">开发

37、成功</s:if><s:if test="chcStatus=4">开发失败</s:if></td><s:if test="chcStatus=1"><a href="chanceAction_appointUI?chcId=<s:property value="chcId"/>"><img title="指派"src="images/bt_linkman.gif"class="

38、;op_button"/></a><a href="chanceAction_updateUI?chcId=<s:property value="chcId"/>"><img title="编辑"src="images/bt_edit.gif"class="op_button"/></a><img title="删除"src="images/bt_del.gif"class=

39、"op_button"onclick="delChange('<s:property value="chcId"/>')"/></s:if>5.4客户管理此模块主要功能是对客户进行查询和添加,修改。它包括对联系人,客户流失等的管理,功能页面如图5-5。图5-5 客户列表图新建客户时,需要对表单的必填项进行判断,如果有未填的,则给出提示,重新跳回到添加页面,本系统是通过JQuery来验证是否添加为空,首先需要在JSP页面引入<script type="text/javascr

40、ipt"src="js/jquery-1.7.2.js"></script>其关键代码如下:$(document).ready(function(e)/*客户名称*/$('#cust_name').blur(function()var$span=$('#cust_name').siblings('span');if($('#cust_name').val()="")$span.css('font-size','12px');$spa

41、n.html('客户名称不能为空');return false;$span.html('<img src="images/long/write_ok.gif"width="12"height="11"/>'););/*地区*/$('#cust_region').blur(function()var$span=$('#cust_region').siblings('span');if($('#cust_region').val()

42、="-1")$span.css('font-size','12px');$span.html('请选择地区');return false;$span.html('<img src="images/long/write_ok.gif"width="12"height="11"/>'););/*客户经理*/$('#cust_manager_id').blur(function()var$span=$('#cust_man

43、ager_id').siblings('span');if($('#cust_manager_id').val()="-1")$span.css('font-size','12px');$span.html('请选择客户经理');return false;$span.html('<img src="images/long/write_ok.gif"width="12"height="11"/>');)

44、;/*客户等级*/$('#cust_level').blur(function()var$span=$('#cust_level').siblings('span');if($('#cust_level').val()="-1")$span.css('font-size','12px');$span.html('请选择客户等级');return false;$span.html('<img src="images/long/write_ok

45、.gif"width="12"height="11"/>'););/*客户满意度*/$('#cust_satisfy').blur(function()var$span=$('#cust_satisfy').siblings('span');if($('#cust_satisfy').val()="-1")$span.css('font-size','12px');$span.html('请选择客户满意度&#

46、39;);return false;$span.html('<img src="images/long/write_ok.gif"width="12"height="11"/>'););/*客户信用度*/$('#cust_credit').blur(function()var$span=$('#cust_credit').siblings('span');if($('#cust_credit').val()="-1")$sp

47、an.css('font-size','12px');$span.html('请选择客户信用度');return false;$span.html('<img src="images/long/write_ok.gif"width="12"height="11"/>'););/*地址*/$('#cust_addr').blur(function()var$span=$('#cust_addr').siblings('sp

48、an');if($('#cust_addr').val()="")$span.css('font-size','12px');$span.html('地址不能为空');return false;$span.html('<img src="images/long/write_ok.gif"width="15"height="11"/>'););/*邮政编码*/$('#cust_zip').blur(fu

49、nction()var cust_zip=$('#cust_zip').val();var reg=/d6$/;var$span=$('#cust_zip').siblings('span');if(cust_zip="")$span.css('font-size','12px');$span.html('邮政编码不能为空');return false;else if(reg.test(cust_zip)=false)$span.css('font-size',&

50、#39;12px');$span.html('格式:414141');return false;else$span.html('<img src="images/long/write_ok.gif"width="15"height="11"/>'););/*电话*/$('#cust_tel').blur(function()var cust_tel=$('#cust_tel').val();var reg=/0-93-0-98$/;var$span=$

51、('#cust_tel').siblings('span');if(cust_tel="")$span.css('font-size','12px');$span.html('电话不能为空');return false;else if(reg.test(cust_tel)=false)$span.css('font-size','12px');$span.html('格式#39;);return false;else$span.

52、html('<img src="images/long/write_ok.gif"width="15"height="11"/>'););客户流失当客户有六个月没有进行订单操作时,系统自动提示消息,并将客户状态改为已经流失,本功能模块分为,已经流失,和暂缓流失,以及流失警告三种情况,而其可以通过添加状态字段来实现对具体情况的判断,其流失页面如图5-6:图5-6 客户流失列表图客户状态判断如图5-7:图5-7 客户状态图关键代码如下:<s:if test="lostStatus=1"

53、><td>流失警告</td></s:if><s:elseif test="lostStatus=2"><td>暂缓流失</td></s:elseif><s:elseif test="lostStatus=3"><td>已经流失</td></s:elseif><s:else><td>回归正常</td></s:else><s:if test="lostStat

54、us=3|lostStatus=4"><td><a href="lostAction_detail?lostId=<s:property value="lostId"/>"><img title="流失详情"src="images/long/application_view_list.gif"class="op_button"/></a>&nbsp;</td></s:if><!-&l

55、t;s:elseif test="lostStatus=4">-><!-<td>-><!-<a href="get_lost?lost.lostId=<s:property value="lostId"/>&identifying=detail"><img title="流失详情"src="images/long/application_view_list.gif"class="op_button"

56、;/></a>&nbsp;-><!-</td>-><!-</s:elseif>-><s:else><td><a href="lostAction_affirmUI?lostId=<s:property value="lostId"/>"><img title="确认流失"src="images/bt_confirm.gif"xx/></a>&nbsp;<

57、;a href="lostAction_deferUI?lostId=<s:property value="lostId"/>"><img title="暂缓流失"src="images/bt_relay.gif"/></a>&nbsp;</td></s:else>5.5服务管理服务管理模块主要功能是服务的创建以及对客户服务的反馈,归档等进行处理,当服务创建后可以对其进行分配,然后对分配的服务进行处理,处理后再进行反馈,反馈后根据客户的满意度

58、是否大于3来判断是否需要进行归档。当大于3时服务状态变更为已归档,否则状态为已分配,其页面如图5-8图5-8 服务分配页面图部分代码如下:/* * 创建服务 * return */public String add()CrmDict crmDict=dictService.getById(crmService.getCrmDictBySvrType().getDictId();crmService.setCrmDictBySvrType(crmDict);CrmCustomer crmCustomer=customerService.getById(crmService.getCrmCusto

59、mer().getCustId();crmService.setCrmCustomer(crmCustomer);crmService.setSvrCustName(crmCustomer.getCustName();serviceDao.save(crmService);message="服务创建成功"pathJump="serviceAction_addUI"return SUCCESS;/* * 分配服务 * return */public String appointto()CrmUser user=(CrmUser)ActionContext.

60、getContext().getSession().get("user");/得到当前登录用户if(user.getRole().getRoleName().equals("销售主管")crmService=serviceDao.getById(crmService.getSvrId();crmService.setSvrStatus("已分配");serviceDao.update(crmService);serviceDao.save(crmService);message="服务分配成功"pathJump=&

61、quot;serviceAction_list?flag=handle"return SUCCESS;else/不是销售主管不具有此种权利message="操作失败,您不具备此权利"pathJump="serviceAction_list?flag=create"return SUCCESS;/* * 服务处理 * return */public String handle()CrmUser user=(CrmUser) ActionContext.getContext().getSession().get("user");

62、/得到当前登录用户crmService=serviceDao.getById(crmService.getSvrId();crmService.setSvrDueName(DealName);crmService.setSvrDealName(user.getUserName();/处理人serviceDao.update(crmService);serviceDao.save(crmService);ActionContext.getContext().put("crmService", crmService);message="服务处理成功"pathJump="serviceAction_list?flag=feedback"return SUCCESS;第六章 系统测试与难点分析6.1系统运行的环境搭建本系统使用tomcat作为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论