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的实际功效。
转载于:https://www.cnblogs.com/homeword/p/7134271.html
Maven实战05_背景案例学Maven模块化相关推荐
- Maven实战:Maven生命周期
前言 之前有写过一篇文章Maven实战,介绍了Maven的一些基本概念,以及对于一个初学者而言的Maven基础知识,当时在我看来掌握了这些基本是够用的. 随着工作的深入,越来越感觉对于Maven的理解 ...
- Maven实战系列文章目录
Maven实战(一)安装与配置 Maven实战(二)构建简单Maven项目 Maven实战(三)Eclipse构建Maven项目 Maven实战(四)生命周期 Maven实战(五)坐标详解 Maven ...
- Maven实战(四)——基于Maven的持续集成实践
相信很多读者和我一样,最早接触到持续集成的概念是来自Martin的著名文章<持续集成>,该文最早发布于2000年9月,之后在2006年进行了一次修订,它清晰地解释了持续集成的概念,并总结了 ...
- Maven实战(二)——POM重构之增还是删
重构是广大开发者再熟悉不过的技术,在Martin Fowler的<重构--改善既有代码的设计>一书中,其定义为"重构(名词):对软件内部结构的一种调整,目的是在不改变软件之可察行 ...
- Maven实战——常用Maven插件介绍
http://www.infoq.com/cn/news/2011/04/xxb-maven-7-plugin 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任 ...
- 《maven实战》笔记(2)----一个简单maven项目的搭建,测试和打包
参照<maven实战>在本地创建对应的基本项目helloworld,在本地完成后项目结构如下: 可以看到maven项目的骨架: src/main/java(javaz主代码) src/te ...
- 11月3日云栖精选夜读:《maven实战》读书笔记2——maven安装(windows和eclipse插件)...
前言 由于我的工作中开发环境就是windows,IDE是eclipse,因此安装也只涉及和记录这两部分,在看书和动手的过程也就直接跳过其他部分. 笔记 windows中maven的安装 安装条件 ma ...
- 《Maven实战》 读书笔记
前言:此为个人阅读<Maven实战>的笔记,非入门教程. 一.安装配置: 1.安装并配置好JDK: 2.从Apache下载适当版本的maven压缩包: 3.解压maven压缩包,放在适当位 ...
- [Maven实战](9)传递性依赖
了解Spring的朋友都知道,创建一个Spring Framework项目都需要依赖什么样的Jar包.如果不使用Maven,那么在项目中就需要手动下载相关的依赖.由于Spring Framework又 ...
最新文章
- PYTHON自动化Day12-unittest自动注册登录
- 假如我是超级卷王。。。
- JavaScript是如何工作的:与WebAssembly比较及其使用场景
- 为什么要学习 Markdown?究竟有什么用?怎么用?
- dev GridControl双击行事件
- ssl1341-最小路径覆盖【最大匹配,最小路径覆盖,图论】
- mui.init方法配置
- git ssh创建分支_将git项目导入GitHub的方法(附创建分支)
- 百度API获取位置范围内的周边服务
- Linux开放21通信,linux下开启ftp的21号port
- 网站开发项目的需求分析
- 【每日更新】万维钢精英日课3课程分享笔记:模糊逻辑:灰度认知,灰度决策,黑白执行
- arduino霍尔编码器蓝牙小车代码
- c#开发环境下用Directx载入3D模型
- 计算机网络网线制作工具有,网线制作工具 网线水晶头制作过程详解(视频+图文教程)...
- qq游戏大厅+android,手机QQ游戏大厅Android客户端体验
- 手机内存带宽和分辨率
- STM32F103_study56_The punctual atoms(STM32 PWM output experimental code analysis)
- 蒙特卡洛积分 matlab,菜鸟之路——数学建模之蒙特卡罗积分(投点法,平均值法)+牛顿法解方程组MATLAB实现...
- 6000多万铲屎官,捧得出一个国产主粮的春天吗?