Maven实战05_背景案例学Maven模块化
1:简单的账户注册服务
注册互联网账户是日常生活中再熟悉不过的一件事,作为一个用户,注册账户的时候需要进行以下操作,提供以下信息。
- 提供一个未被使用的帐号ID
- 提供一个未被使用的email地址、
- 提供一个任意的显示名称
- 设置安全密码,并重复输入以确认
- 输入验证码
- 前往邮箱查收激活链接并单击激活帐号
- 登录确认激活状态
帐号的ID和密码唯一的标识某个账户,显示名称用来在页面上显示,方便浏览。注册时需要用户输入两次密码,以确保没有输错。系统则负责检查ID和email的唯一性,验证两次输入的密码是否一致。验证码由系统随机生成,只能由肉眼识别,可以有效防止机器的恶意批量注册,若输入正确的验证码信息,系统会进行检查,如果验证码错误,会提示错误并返回新的验证码。一旦所有检查通过,系统会生成一个激活链接,并发送到用户的邮箱中,单击激活链接后,账户就被激活了,这时注册完成,用户可以直接登录。
除此之外,还应该考虑一些安全因素。例如:需要在服务器端密文地保存密码,检查密码的强弱程度,更进一步则需要考虑验证码的失效时间,激活链接的失效时间。
本文不会涉及太多Maven的知识,但是后续的文章都会在这篇文章的基础上对Maven做进一步的阐述和实践。
2:账户注册服务需求用例
注册账户
主要场景
- 用户访问注册页面
- 系统生成验证码
- 用户输入注册信息:ID,Email地址,名称,密码,确认密码
- 用户输入验证码
- 系统检查验证码
- 用户提交注册请求
- 系统检查ID,Email的唯一性,密码,确认密码是否一致
- 系统保存未激活的账户信息
- 系统生成注册激活链接,发送至用户邮箱
- 用户打开邮箱,点击激活链接
- 系统解析激活链接,激活账户
- 用户使用ID和密码登录
扩展场景
- 验证码模糊,用户无法看清,请求重新生成
- 跳转到步骤2
- 系统检测到验证码输入错误
- 系统提示验证码错误
- 跳转到步骤2
- 系统检测到注册信息有误:ID已被占用,Email已被注册,密码和确认密码不一致
- 系统提示相关信息
- 跳转到步骤2
用例场景分析
该注册账户用例包含了一个主要场景和几个扩展场景。用例角色只有两个:用户 、系统。主要场景描述了用户如何与系统一步一步地交互,并且成功完成注册,是一个正常的注册流程。而扩展场景则描述了正常流程中的异常。
该用例没有涉及非功能性需求(如安全性),也没有详细定义的用户界面,用例也不会告诉我们使用什么技术,关于安全性,你将会看法哦一些实际措施,不过于深入,关于用户界面,将会给出原型图,技术上就使用Spring。
3:界面原型(图片来自于Maven实战)
4:简要设计
系统对外的接口包括生成验证码图片,处理注册请求,激活账户以及处理登录等。
解释说明:
generateCaptchaKey():生成验证码所需的Key
generateCaptchaImage(captchaKet: String):依据生成的Key生成验证码图片,验证码以及验证码的图片被传送到客户端,用户通过肉眼识别再输入验证码的值,随着Key在传送到服务端验证。服务端做对比。
signUpRequst包含了注册用户所需要的信息,包括ID、email、显示名称、密码、确认密码等伴随captchaKey的captchaValue构成一个注册请求。
signUp():方法接收SignUpRequest对象,进行验证。
activate():方法接收一个激活码,查找对应的账户进行激活。
login():方法用来进行登录
5:模块结构
定义了系统核心的接口之后,基于功能分割和方便复用的原则,再对系统进一步进行划分。这里基于包名来划分模块。
很多有经验的程序员不需要多少设计就能快速完成这样的一个功能,不过我们是为了学习Maven,微小的项目中见证大道理。大道至简嘛。所以我们需要一个像模像样的。有很多模块的系统来演示Maven很多非常酷的特性。
账户注册服务模块划分图:
6:小结
至目前为止,我们已经了解了用户注册服务的需求,大概的界面,简单的接口设计以及模块的职责划分。这将会直接应用到后面Maven的实战中,这个简单的账户注册服务也会一步步地实现和完善,从而体现Maven的实际功效。
Maven实战05_背景案例学Maven模块化的更多相关文章
- 学习笔记-[Maven实战]-第三章:Maven使用入门(1)
说明:[Maven实战]一书还介绍了怎么样手工创建Maven工程,学习这本书是为了能尽快在工作中使用,就忽略了手工建工程的部分 如果想了解这部分的内容,可以自己看看书 开始: 1.新建一个maven工 ...
- maven实战(1)-- maven仓库
maven仓库配置 转自:http://blog.csdn.net/dongnan591172113/article/details/7685164 1.两类仓库 1.1本地仓库(local repo ...
- 学习笔记——Maven实战(十)Maven 3,是时候升级了
去年10月份Apache Maven发布了3.0正式版,而在上个月的22号,Eclipse基金会宣布了Eclipse 3.7(Indigo)的发布,该版本Eclipse最大的新特性之一就是集成了Mav ...
- (一)《Maven实战》读书笔记 —— Maven简介
第一章:Maven简介 一.何为Maven? Maven这个词可以翻译为"知识的积累",本书将介绍Maven这一跨平台的项目管理工具.作为Apache组织中的一个个颇为成功的开源项 ...
- 【转】Maven实战(一)---Maven Build--缺少Jar包
原博文出于: http://blog.csdn.net/liutengteng130/article/details/41426955 感谢! 新建的Maven项目,在build的时候总是打包失败 ...
- 学习笔记-[Maven实战]-第三章:Maven使用入门(3)
这里说一下在建测试工程里遇到的问题 1.第一次建工程,junit依赖始终没有成功,最后删除现在工程,新建了一个工程就好了 2.使用junit4的问题.工程默认的依赖是junit3.8.1,我改成了4. ...
- 学习笔记-[Maven实战]-第三章:Maven使用入门(2)
使用maven执行编译和测试 1.maven执行编译 (1).在pom.xml上点右键,选择Maven build... (2).在Goals里输入clean complie,执行编译 执行结果: [ ...
- Maven实战(九)Maven仓库简介
目录 一.作用 Maven仓库分为本地仓库和远程仓库,集中存放项目引用的jar包,无需将jar包放在程序中,结合Maven项目的pom.xml,使得项目管理jar包更容易,有以下几个优点: 对于项目来 ...
- maven实战(4)-- maven构建自己的jar到本地仓库中
在平时的开发中,经常需要用到自己以前开发的一个jar包,那么如何使用将自己开发的jar提交到本地仓库中,供其他的项目依赖呢?主要有三种方法: (1)使用mvn的构建命令:mvn clean insta ...
随机推荐
- error LNK2001: unresolved external symbol _main解决办法(zz)
error LNK2001: unresolved external symbol _main解决办法 解决外部符号错误:_main,_WinMain@16,__beginthreadex -!t ...
- 杂项-日志:日志(log)
ylbtech-杂项-日志:日志(log) 1.返回顶部 1. 概述 网络设备.系统及服务程序等,在运作时都会产生一个叫log的事件记录:每一行日志都记载着日期.时间.使用者及动作等相关操作的描述. ...
- 炮兵阵地 /// 状压DP oj26314
题目大意: 炮兵阵地 设置炮兵的位置 其上两位 下两位 左两位 右两位 不能同时设置炮兵 这题是 corn fields玉米地 的升级版 可以先看下这题的注释 更详细些 第一种方法是网上大多数题解的解 ...
- HTML5印章绘制电子签章图片,中文英文椭圆章、中文英文椭圆印章
原文:HTML5印章绘制电子签章图片,中文英文椭圆章.中文英文椭圆印章 电子签章图片采集 印章图片的采集两种互补方式: 方式1:在线生成印章图片方式,但是这种方式有个弊端,对印章中公司名称字数有限制, ...
- (一)phonegap自学---不会java也会写原生app
移动设备如日中天的今天 微软的表现让我们这些.net程序员无不心寒!!幸好每次乱世出英豪,古有java能夸平台,.net跨语言,今有phonegap跨设备 phonegap是什么 狂点这 http:/ ...
- 《OpenCV3编程入门》 札记
图像处理和计算机视觉的区别在于: 图像处理侧重于 "处理"图像 --- 如增强,还原,去噪,分割,等等:而计算机视觉重点在于使用计算机(也许是可移动式的)来模拟人的视觉,因此模拟菜 ...
- LJJ爱数数
LJJ爱数数 求\(\sum_{i=1}^n\sum_{j=1}^n\sum_{k=1}^n\epsilon(gcd(i,j,k))(\frac{1}{i}+\frac{1}{j}==\frac{1} ...
- leetcode 132 Palindrome Pairs 2
lc132 Palindrome Pairs 2 大致与lc131相同,这里要求的是最小分割方案 同样可以分割成子问题 dp[i][j]还是表示s(i~j)是否为palindrome res[i]则用 ...
- 杂项-公司:Facebook
ylbtech-杂项-公司:Facebook Facebook(脸书)是美国的一个社交网络服务网站 ,创立于2004年2月4日,总部位于美国加利福尼亚州帕拉阿图,2012年3月6日发布Windows版 ...
- diskpart
比如格式化成fat32 format fs=fat32 quick 比鼠标方便 如何使用: 打开cmd输入diskpart进入命令 首先 list disk 然后 然后 clean 然后 create ...