![](https://img-blog.csdnimg.cn/9b7dc0cd277c4ad69b4b011556d56a5f.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
CRM项目实战(SSM版)
文章平均质量分 65
贴近一线企业实战开发,学习一线企业开发规范及流程
做一道光
互联网软件开发,已转汽车嵌入式软件开发
展开
-
本科毕业设计-软件工程-汽车销售客户关系管理系统
随着国家的快速发展,人民对物质生活的需求也在逐渐增加,其中汽车需求是当前人民最主要的增长需求之一。随着汽车市场的不断扩大,汽车销售公司也面临着更大的挑战,需要更好地管理与客户的关系,以保持竞争力。这就需要使用汽车销售客户关系管理系统(CRM, Customer Relational Management)来协助销售人员管理客户信息。本系统为B/S架构模型,使用Java语言作为开发语言,开发工具使用IntelliJ IDEA 2019,服务器使用Tomcat服务器,前端原创 2023-06-02 10:08:50 · 3128 阅读 · 1 评论 -
客户管理系统(SSM版):查看交易明细
用户在交易主页面,点击交易名称超级链接,跳转到交易明细页面,完成查看交易明细的功能。TranHistoryServiceImpl实现类。TranRemarkServiceImpl实现类。TranHistoryMapper.xml文件。TranHistoryService接口。TranRemarkService接口。TranHistoryMapper接口。TranServiceImpl实现类。TranRemarkMapper接口。TranService接口。TranMapper接口。*显示交易的基本信息。原创 2022-10-19 20:19:54 · 466 阅读 · 0 评论 -
客户管理系统(SSM版):创建交易,并返回主页面查找所有的交易
用户在创建交易的页面填写表单,点击”保存”按钮,完成创建交易的功能。用户在交易主页面,点击”创建”按钮,跳转到创建交易的页面;1)CustomerMapper接口。TranServiceImpl实现类。TranServiceImpl实现类。TranHistory.xml文件。TranMapper.xml文件。3)TranHistory接口。1.调用了3个mapper层。2)TranMapper接口。TranService接口。TranService接口。2.调用service层。TranMapper接口。原创 2022-10-17 21:19:20 · 365 阅读 · 0 评论 -
客户管理系统(SSM版):bs_typeahead动态的自动补全文本框的内容
用户在创建交易页面,在客户名称文本框输入信息时,可以根据输入的关键字,模糊查找数据库中的客户名称,并把模糊查找的所有的客户名称以类似于下拉框的形式显示在客户名称文本框下方,用户可以从中选择自己想要的客户名称。1.首先引入bs_typeahead插件,该插件是基于bootstarp的,而bootstarp又是基于jquery的,所以使用该插件要首先引入jquery插件和bootstarp插件。2)后台接收到请求,根据名称模糊查询,返回到客户端。输入美字,可以以下拉框的形式弹出查询到的客户名称。原创 2022-10-16 21:09:48 · 716 阅读 · 0 评论 -
客户管理系统(SSM版):不同的阶段对应不同的可能性通过.properties配置
1.在crm\src\main\resources目录下新建possibility.properties文件通过查询语句在tbl_dic_value表中找到关于stage的信息,并按照顺序排列。3)后台提供controller,接收请求,根据选择的阶段,解析配置文件,获取对应的可能性。在创建交易页面,用户在下拉框中选择阶段,每选择一个阶段,可能性的文本框里自动填写对应的可能性。当用户选择阶段时,根据阶段获取可能性,显示到输入框。1,可能性的可配置:用户提供配置文件,配置每一个阶段对应一个可能性;原创 2022-10-16 11:18:09 · 249 阅读 · 0 评论 -
客户管理系统(SSM版):根据id查询联系人的所有信息,和该联系人id关联的联系人备注表
点击每条联系人信息可以进入联系人详细页面,详细页面显示联系人表中的信息和对应的联系人备注表中的信息。点击每条联系人信息可以进入联系人详细页面,详细页面显示联系人表中的信息和对应的联系人备注表中的信息。由于李华联系人下面没有添加联系人备注信息,现进入老马的联系人详细页面。ContactsRemarkServiceImpl实现类。ContactsServiceRemark接口。ContactsRemarkMapper接口。ContactsServiceImpl实现类。ContactsService接口。原创 2022-10-14 22:49:43 · 857 阅读 · 0 评论 -
客户管理系统(SSM版):分页条件查找联系人
点击每条联系人信息可以进入联系人详细页面,详细页面显示联系人表中的信息和对应的联系人备注表中的信息。在线索转换模块进行转换后,生成联系人信息,和联系人备注信息。在联系人信息表中进行分页,选择每页显示两条数据。点击联系人模块,可以显示出联系人表中的数据。点击联系人模块,可以显示出联系人表中的数据。ContactsServiceImpl实现类。ContactsController类。ContactsService接口。ContactsMapper接口。详细的index.jsp页面代码。原创 2022-10-14 22:34:38 · 655 阅读 · 0 评论 -
客户管理系统(SSM版):线索转换2(重点)
如果线索没有购买意向,则删除线索,如果线索有购买意向,则把该线索信息转换到客户和联系人表中,把该线索删除。用户在线索转换页面,如果需要创建创建交易,则填写交易表单数据,点击"转换"按钮,完成线索转换的功能.如果需要创建交易,则还需要把该线索下所有备注转换到交易备注表中一份。把线索和市场活动的关联关系转换到联系人和市场活动的关联关系表中。如果需要创建交易,还要把线索的备注信息转换到交易备注表中一份。把该线索下所有备注信息转换到联系人备注表中一份。用户在线索明细页面,点击"转换"按钮,跳转到线索转换页面;原创 2022-10-12 15:12:45 · 917 阅读 · 0 评论 -
客户管理系统(SSM版):线索转换1
如果线索没有购买意向,则删除线索,如果线索有购买意向,则把该线索信息转换到客户和联系人表中,把该线索删除。用户在线索转换页面,如果需要创建创建交易,则填写交易表单数据,点击"转换"按钮,完成线索转换的功能.如果需要创建交易,则还需要把该线索下所有备注转换到交易备注表中一份。把该线索和市场活动的关联关系转换联系人和市场活动的关联关系表中。把线索和市场活动的关联关系转换到联系人和市场活动的关联关系表中。如果需要创建交易,还要把线索的备注信息转换到交易备注表中一份。把线索的备注信息转换到联系人备注表中一份。原创 2022-10-11 19:58:07 · 486 阅读 · 0 评论 -
客户管理系统(SSM版):解除线索关联市场活动
1.首先从底层开始编写代码,在com.it.crm.workbench.mapper.ClueActivityRelationMapper目录下编写代码,ClueActivityRelationMapper接口。用户在线索明细页面,点击某一个"解除关联"按钮,弹出确认解除的窗口;用户点击"确定"按钮,完成解除线索关联市场活动的功能.4.在ClueController类中编写控制层方法。*解除成功之后,刷新已经关联的市场活动列表。*解除失败,提示信息,列表也不刷新。选择一个市场活动点击解除关联。原创 2022-10-11 18:03:38 · 540 阅读 · 0 评论 -
第3章业务功能开发(线索关联市场活动,插入数据并查询)
用户在线索关联市场活动的模态窗口,输入搜索条件,每次键盘弹起,根据名称模糊查询市场活动,把所有符合条件的市场活动显示到列表中;如果成功插入一条或多条数据,则根据市场活动的ids来查询市场活动表的信息,并把该信息拼接在tbody中,实时显示在页面上。用户在线索明细页面,点击"关联市场活动"按钮,弹出线索关联市场活动的模态窗口;用户选择要关联的市场活动,点击"关联"按钮,完成线索关联市场活动的功能.选中活动项,点击关联,关闭窗口,页面拼接出选中的市场活动,并显示出来。ActivityServiceImpl类。.原创 2022-07-29 18:02:47 · 237 阅读 · 0 评论 -
第3章业务功能开发(线索关联市场活动,动态搜索)
查询一条或多条市场活动数据,传递的参数为市场活动的名字和线索的id,这两个参数不属于同一个实体类,因此把他们封装为map集合进行传参。用户在线索关联市场活动的模态窗口,输入搜索条件,每次键盘弹起,根据名称模糊查询市场活动,把所有符合条件的市场活动显示到列表中;用户在线索明细页面,点击"关联市场活动"按钮,弹出线索关联市场活动的模态窗口;用户选择要关联的市场活动,点击"关联"按钮,完成线索关联市场活动的功能.*关联失败,提示信息,模态窗口不关闭,已经关联过的市场活动列表也不刷新。*每次至少关联一个市场活动。.原创 2022-07-29 17:38:48 · 166 阅读 · 0 评论 -
第3章业务功能开发(线索备注的删除和修改)
1.删除备注根据线索备注的id,传值进来,返回类型为int;更新线索备注传递的参数为同一个实体,所以封装为同一个实体类对象传值进来。ClueRemarkServiceImpl实现类。4.ClueRemarkController类。ClueRemarkMapper.xml文件。选择要删除的备注信息,点击删除,直接进行删除。3.ClueRemarkService接口。2.ClueRemarkMapper接口。5.clue的detail.jsp页面。选择要修改的数据项,点击修改。修改数据内容,点击更新。...原创 2022-07-28 15:48:46 · 207 阅读 · 0 评论 -
第3章业务功能开发(添加线索备注,自动刷新添加内容)
1.添加线索备注,返回类型为int,通过判断Int是否大于0来确定语句是否执行成功。因为添加的内容同属于一个实体类,所以封装成一个实体类,下面是具体实施。输入内容后点击保存按钮,自动添加到数据库,并在页面自动刷新显示。ClueRemarkMapper.xml文件。3.ClueRemarkService接口。2.ClueRemarkMapper接口。5.clue的deatil.jsp页面。在线索备注页面,点击备注保存按钮。...原创 2022-07-27 10:41:05 · 146 阅读 · 0 评论 -
第3章业务功能开发(查看线索明细)
4.controller层调用service层的方法,获取到的数据封装在request作用域中,在detail.jsp页面进行取值。3.service没有涉及到事务操作,只是调用mapper层的方法返回数据而已,这里不再进行描述。3.该方法操作3个mapper层实现数据查询,分别查询出线索,线索详情,与线索关联的市场活动。1.在线索首界面,点击线索的的名称,跳转到详细线索页面。选择任意一条数据,点击数据的名称,跳转到数据的详细页面。ClueRemarkMapper.xml文件。ClueMapper接口。..原创 2022-07-27 10:22:53 · 164 阅读 · 0 评论 -
第3章业务功能开发(删除线索)
1.根据功能需求分析,删除线索传递的参数为id,由于可以同时删除多个参数,所以传递的参数应该为string数据。2.ClueMapper.xml文件。4.ClueServiceImpl类。6.clue的index.jsp页面。3.ClueService接口。选中任意一条数据,点击删除按钮。ClueMapper接口。确认刷出后,刷新页面。...原创 2022-07-25 10:27:32 · 86 阅读 · 0 评论 -
第3章业务功能开发(修改线索,数据回显并修改数据)
根据id查询数据,返回结果是一条数据,因为属性全部是clue实体的属性,所以可以用clue实体类封装起来。3.选择一条数据,点击修改,按照表单规则正确填写完成表单,仅修改姓名,修改后自动刷新页面。传递的参数是clue,更新结果为int类型,传递时通过获取隐藏的id来。4.ClueServiceImpl类。4.ClueServiceImpl类。5.ClueController类。5.ClueController类。1.ClueMapper接口,1.ClueMapper接口,2.选择两条数据点击修改。...原创 2022-07-24 22:38:40 · 684 阅读 · 0 评论 -
第3章业务功能开发(实现全选按钮实时的响应)
再次点击全选框时,实现全选框勾选取消,以及所有数据的复选框也进行勾选取消。点击全选框后,当点击数据项的复选框取消当前数据项的勾选,全选框也应取消勾选。该页面的数据来自jquery的拼接,这些数据全部拼接到tBody的标签框里。当点击全选框时,实现全选框勾选,以及所有数据的复选框也进行勾选。在index.jsp页面的js中进行编写。......原创 2022-07-24 17:13:52 · 308 阅读 · 0 评论 -
第3章业务功能开发(查询线索)
用户在线索主页面填写查询条件,点击"查询"按钮,显示所有符合条件的数据的第一页;初始进入线索菜单主页面,显示第一页数据,每页显示10条数据。*在线索主页面,显示市场活动列表和记录的总条数。当线索主页面加载完成之后,显示所有数据的第一页;点击改变每页显示的数据条数,每页显示两条数据。4.clue的index.jsp页面。3.ClueController类。ClueMapper.xml文件。ClueServiceImpl类。在线索列表的输入框中进行条件查找。1.ClueMapper接口,...原创 2022-07-24 16:27:12 · 335 阅读 · 0 评论 -
第3章业务功能开发(创建线索)
tbl_dic_typecode存储下拉列表的类型的,每一个下拉列表在tbl_dic_type对应一条记录,主键值都是各自的编码,有含义的字段做主键,在程序如果需要用到这些主键值,可以直接使用。创建线索,查看线索明细,线索关联市场活动,解除线索和市场活动的关联关系,线索转换。*创建成功之后,关闭模态窗口,刷新线索列表,显示第一页数据,保持每页显示条数不变。用户在创建线索的模态窗口,填写表单,点击”保存”按钮,完成创建线索的功能。用户在线索主页面,点击”创建”按钮,弹出创建线索的模态窗口;...原创 2022-07-23 12:05:24 · 674 阅读 · 0 评论 -
第3章业务功能开发(实现显示线索主页面,并查询表单各个下拉框数据)
3.使用mybatis逆向工程生成DicValue实体类以及mapper文件,由于生成的实体类属于系统文件,所以生成文件的目标位置设置为setting。点击创建,弹出模态窗口,展示各个选项的下拉框,数据从数据库中查询而来,增加了系统后期的数据维护性。6.workbench的index.jsp页面,实现点击线索菜单,跳转到线索页面。在跳转到线索菜单页面的同时,查询出各个模态窗口以及条件查询所需要的下拉框数据。用户进入工作台主页面,点击线索菜单选项,工作台的工作区跳转到线索菜单页面。...原创 2022-07-20 17:58:22 · 566 阅读 · 0 评论 -
第3章业务功能开发(修改市场活动备注)
用户在修改市场活动备注的模态窗口,填写表单,点击"更新"按钮,完成修改市场活动备注的功能.用户在市场活动明细页面,点击"修改"市场活动备注的图标,弹出修改市场活动备注的模态窗口;ActivityRemarkMapper.xml文件。ActivityRemarkServiceImpl类。*修改失败,提示信息,模态窗口不关闭,列表也不刷新。3.ActivityRemarkService接口。2.ActivityRemarkMapper接口。*修改成功之后,关闭模态窗口,刷新备注列表。...原创 2022-07-19 21:00:06 · 148 阅读 · 0 评论 -
第3章业务功能开发(删除市场活动备注)
1,给元素扩展属性html页面是可扩展的标记语言,可以给指定的标签任意扩展属性,只要属性名符合标识符的命名规则即可。优先考虑id属性,其次考虑name属性,只有id和name属性都不方便使用时,才考虑使用自定义属性。jquery对象.val()如果是表单组件标签,优先使用value属性,只有value不方便使用时,使用自定义属性;如果是表单组件标签,优先使用value属性,只有value不方便使用时,使用自定义属性;如果自定义的属性,不管是什么标签,只能用jquery对象.attr("属性名");...原创 2022-07-18 18:57:35 · 178 阅读 · 0 评论 -
第3章业务功能开发(添加市场活动备注)
3,给元素扩展属性html页面是可扩展的标记语言,可以给指定的标签任意扩展属性,只要属性名符合标识符的命名规则即可。优先考虑id属性,其次考虑name属性,只有id和name属性都不方便使用时,才考虑使用自定义属性。用户在市场活动明细页面,输入备注内容,点击"保存"按钮,完成添加市场活动备注的功能.选择器.append(htmlStr)追加显示在指定标签的内部的后边。选择器.after(htmlStr)追加显示在指定标签的外部的后边。选择器.html(htmlStr)覆盖显示在标签的内部。...原创 2022-07-17 13:12:14 · 251 阅读 · 0 评论 -
第3章业务功能开发(查看市场活动明细)
如果是表单组件标签,优先使用value属性,只有value不方便使用时,使用自定义属性;如果自定义的属性,不管是什么标签,只能用jquery对象.attr("属性名");用户在市场活动主页面,点击市场活动名称超级链接,跳转到明细页面,完成查看市场活动明细的功能.如果不是表单组件标签,不推荐使用value,推荐使用自定义属性。如果获取表单组件标签的value属性值dom对象.value。activityRemarkServiceImpl类。进入市场活动列表,任意点击一条市场活动数据的名称。...原创 2022-07-16 17:30:10 · 246 阅读 · 0 评论 -
第3章业务功能开发(导入市场活动,apache-poi)
导入成功之后,提示成功导入记录条数,关闭模态窗口,刷新市场活动列表,显示第一页数据,保持每页显示条数不变。用户在导入市场活动的模态窗口选择要上传的文件,点击"导入"按钮,完成导入市场活动的功能.用户在市场活动主页面,点击"导入"按钮,弹出导入市场活动的模态窗口;列-----------HSSFCell。文件---------HSSFWorkbook。页-----------HSSFSheet。行-----------HSSFRow。2,文件上传上传的文件跟用户约定好的。...原创 2022-07-15 18:11:17 · 163 阅读 · 0 评论 -
第3章业务功能开发(选择导出市场活动,apache-poi)
客户需求:用户在市场活动主页面,选择要导出的市场活动,点击"选择导出"按钮,把所有选择的数据生成一个excel文件,弹出文件下载的对话框;用户选择要保存的目录,完成选择导出市场活动的功能. *每次至少选择导出一条记录*导出成功之后,页面不刷新功能开发:1.根据客户需求绘画出UML时序图 2.功能开发,mapper层ActivityMapper接口 ActivityMapper.xml 3.service层ActivityService接口 ActivityServiceImpl 4.Controlle原创 2022-07-14 12:46:41 · 132 阅读 · 0 评论 -
第3章业务功能开发(批量导出市场活动,apache-poi)
客户需求:用户在市场活动主页面,点击"批量导出"按钮,把所有市场活动生成一个excel文件,弹出文件下载的对话框;用户选择要保存的目录,完成导出市场活动的功能.*导出成功之后,页面不刷新功能开发知识点:1,导出市场活动: 1)给"批量导出"按钮添加单击事件,发送导出请求 2)查询所有的市场活动 3)创建一个excel文件,并且把市场活动写到excel文件中 4)把生成的excel文件输出到浏览器(文件下载) 技术准备: 1)使用java生成excel文件:iText原创 2022-07-13 18:19:10 · 265 阅读 · 3 评论 -
第3章业务功能开发(修改市场活动)
客户需求:用户在市场活动主页面,选择要修改的市场活动,点击"修改"按钮,弹出修改市场活动的模态窗口;用户在修改市场活动的模态窗口填写表单,点击"更新"按钮,完成修改市场活动的功能.*每次能且只能修改一条市场活动*所有者 动态的*表单验证(同创建)*修改成功之后,关闭模态窗口,刷新市场活动列表,保持页号和每页显示条数都不变*修改失败,提示信息,模态窗口不关闭,列表也不刷新功能开发知识点:1,封装参数: 1)如果做查询条件,或者参数之间不是属于一个实体类对象,封装成map 2)如果做写数据,并且参数原创 2022-07-12 21:15:32 · 176 阅读 · 0 评论 -
第3章业务功能开发(修改市场活动,数据回显)
客户需求:用户在市场活动主页面,选择要修改的市场活动,点击"修改"按钮,弹出修改市场活动的模态窗口;用户在修改市场活动的模态窗口填写表单,点击"更新"按钮,完成修改市场活动的功能.*每次能且只能修改一条市场活动*所有者 动态的*表单验证(同创建)*修改成功之后,关闭模态窗口,刷新市场活动列表,保持页号和每页显示条数都不变*修改失败,提示信息,模态窗口不关闭,列表也不刷新功能开发1.根据客户需求画出实现数据回显的UML时序图2.mapper层ActivityMapper接口 ActivityMapper原创 2022-07-12 16:48:22 · 264 阅读 · 0 评论 -
第3章业务功能开发(删除市场活动)
客户需求:用户在市场活动主页面,选择要删除的市场活动,点击"删除"按钮,弹出确认窗口;用户点击"确定"按钮,完成删除市场活动的功能.*每次至少删除一条市场活动*可以批量删除市场活动*删除成功之后,刷新市场活动列表,显示第一页数据,保持每页显示条数不变*删除失败,提示信息,列表不刷新功能开发涉及到的知识点1,js中截取字符串: str.substr(startIndex,length);//从下标为startIndex的字符开始截取,截取length个字符 str.substring(startInd原创 2022-07-12 11:55:01 · 178 阅读 · 0 评论 -
第3章业务功能开发(实现市场活动的全选和取消全选)
客户需求:点击全选时,当页显示的所有市场活动数据全部选中;点击取消全选时,当页显示的所有市场活动数据全部取消选中;当页的市场活动数据有一个没有选中时,全选按钮也不选中;当页的市场活动数据全部被选中时,全选按钮也要选中;当切换到下一页时,上一页的全选按钮在当前页为未选中状态功能开发涉及到的知识点1,在页面中给元素添加事件语法: 1)使用元素的事件属性:onxxxx="f()" 2)使用jquery对象:选择器.xxxx(function(){ //js代原创 2022-07-11 22:40:50 · 145 阅读 · 0 评论 -
第3章业务功能开发(bs_pagination,实现分页查询市场活动)
客户需求:当市场活动主页面加载完成之后,显示所有数据的第一页;用户在市场活动主页面填写查询条件,点击"查询"按钮,显示所有符合条件的数据的第一页,保持每页显示条数不变实现翻页功能. *在市场活动主页面,显示市场活动列表和记录的总条数 *默认每页显示条数:10开发该功能需要的知识点1.函数:如果一段用来完成特定功能的代码到处出现,可以封装成函数。 函数的参数:在编写函数的过程中,如果有一个或者多个数据无法确定,可以把这些数据定义成函数的参数(形参),将来由函数的调用者来传递参数的具体的值(实原创 2022-07-11 17:25:01 · 326 阅读 · 0 评论 -
第3章业务功能开发(查询市场活动)
客户需求:当市场活动主页面加载完成之后,显示所有数据的第一页;用户在市场活动主页面填写查询条件,点击"查询"按钮,显示所有符合条件的数据的第一页,保持每页显示条数不变实现翻页功能. *在市场活动主页面,显示市场活动列表和记录的总条数 *默认每页显示条数:101.根据客户需求绘画出UML时序图 2.进行编码与实现,mapper层ActivityMapper接口 ActivityMapper.xml文件 3.service层ActivityService接口ActivitySer原创 2022-07-11 10:24:08 · 135 阅读 · 0 评论 -
bootstrap框架的日历(bootstrap-datetimepicker)
1.在需要使用 bootstrap框架的日历时候,首先在官网上下载并引入到项目bootstrap_3.3.0的jar包,和bootstrap-datetimepicker-master的jar包 2.在需要使用的该日历的jsp页面,按照顺序引入js文件(jquery文件,bootstarp框架文件,bootstarp-datetimepicker文件),css文件不区分顺序 3.编写datetimepicker函数 4.设置该input标签的只读属性readonly,不可以修改 详细代码项目测试 选中原创 2022-07-10 10:05:12 · 3653 阅读 · 1 评论 -
第3章业务功能开发(创建市场活动:下)
客户需求:创建市场活动.用户在市场活动主页面,点击"创建"按钮,弹出创建市场活动的模态窗口;用户在创建市场活动的模态窗口填写表单,点击"保存"按钮,完成创建市场活动的功能.*所有者是动态的(//在现实市场活动主页面时,就从数据库中查询出所有用户并且显示在创建的模态窗口中)*所有者和名称不能为空*如果开始日期和结束日期都不为空,则结束日期不能比开始日期小*成本只能为非负整数*创建成功之后,关闭模态窗口,刷新市场活动列,显示第一页数据,保持每页显示条数不变*创建失败,提示信息创建失败,模态窗口不关闭,市场活动列原创 2022-07-09 23:13:30 · 203 阅读 · 0 评论 -
正则表达式汇总
一、校验数字的表达式1. 数字:^[0-9]*$2. n位的数字:^\d{n}$3. 至少n位的数字:^\d{n,}$4. m-n位的数字:^\d{m,n}$5. 零和非零开头的数字:^(0|[1-9][0-9]*)$6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$7. 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$8. 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$9. 有两位小数的正实数:^[0-9]+(.[0原创 2022-07-09 21:20:06 · 239 阅读 · 0 评论 -
第3章业务功能开发(创建市场活动:上)
客户需求:创建市场活动.用户在市场活动主页面,点击"创建"按钮,弹出创建市场活动的模态窗口;用户在创建市场活动的模态窗口填写表单,点击"保存"按钮,完成创建市场活动的功能.*所有者是动态的(//在现实市场活动主页面时,就从数据库中查询出所有用户并且显示在创建的模态窗口中)*所有者和名称不能为空*如果开始日期和结束日期都不为空,则结束日期不能比开始日期小*成本只能为非负整数*创建成功之后,关闭模态窗口,刷新市场活动列,显示第一页数据,保持每页显示条数不变*创建失败,提示信息创建失败,模态窗口不关闭,市场活动列原创 2022-07-09 11:07:43 · 294 阅读 · 0 评论 -
第3章业务功能开发(用户登录:拦截器)
客户需求登录验证.用户访问任何业务资源,都需要进行登录验证.*只有登录成功的用户才能访问业务资源*没有登录成功的用户访问业务资源,跳转到登录页面预计实现思路1,登录验证: 1)过滤器: a)implements Filter{ --init --doFilter --destroy } b)配置过滤器:web.xml 2)拦截器: a)提供拦截器类:implements HandlerInterceptor{原创 2022-07-07 18:21:40 · 234 阅读 · 0 评论 -
第3章业务功能开发(安全退出)
客户需求用户在任意的业务页面,点击"退出"按钮,弹出确认退出的模态窗口;用户在确认退出的模态窗口,点击"确定"按钮,完成安全退出的功能.*安全退出,清空cookie,销毁session*退出完成之后,跳转到首页1.首先根据客户需求画出UML时序图。 2.在工作台首页面点击退出登录 3.跳转到UserController类中的logout方法,该方法返回到项目首页 4.返回到项目首页的index.jsp页面5.项目首页跳转到UserController类,通过该类中的toLogin方法跳转到登录页面原创 2022-07-06 16:41:24 · 555 阅读 · 0 评论