1:简单的账户注册服务

注册互联网账户是日常生活中再熟悉不过的一件事,作为一个用户,注册账户的时候需要进行以下操作,提供以下信息。

  • 提供一个未被使用的帐号ID
  • 提供一个未被使用的email地址、
  • 提供一个任意的显示名称
  • 设置安全密码,并重复输入以确认
  • 输入验证码
  • 前往邮箱查收激活链接并单击激活帐号
  • 登录确认激活状态

帐号的ID和密码唯一的标识某个账户,显示名称用来在页面上显示,方便浏览。注册时需要用户输入两次密码,以确保没有输错。系统则负责检查ID和email的唯一性,验证两次输入的密码是否一致。验证码由系统随机生成,只能由肉眼识别,可以有效防止机器的恶意批量注册,若输入正确的验证码信息,系统会进行检查,如果验证码错误,会提示错误并返回新的验证码。一旦所有检查通过,系统会生成一个激活链接,并发送到用户的邮箱中,单击激活链接后,账户就被激活了,这时注册完成,用户可以直接登录。

除此之外,还应该考虑一些安全因素。例如:需要在服务器端密文地保存密码,检查密码的强弱程度,更进一步则需要考虑验证码的失效时间,激活链接的失效时间。

本文不会涉及太多Maven的知识,但是后续的文章都会在这篇文章的基础上对Maven做进一步的阐述和实践。

2:账户注册服务需求用例

注册账户

主要场景

  1. 用户访问注册页面
  2. 系统生成验证码
  3. 用户输入注册信息:ID,Email地址,名称,密码,确认密码
  4. 用户输入验证码
  5. 系统检查验证码
  6. 用户提交注册请求
  7. 系统检查ID,Email的唯一性,密码,确认密码是否一致
  8. 系统保存未激活的账户信息
  9. 系统生成注册激活链接,发送至用户邮箱
  10. 用户打开邮箱,点击激活链接
  11. 系统解析激活链接,激活账户
  12. 用户使用ID和密码登录

扩展场景

  • 验证码模糊,用户无法看清,请求重新生成
  1. 跳转到步骤2
  • 系统检测到验证码输入错误
  1. 系统提示验证码错误
  2. 跳转到步骤2
  • 系统检测到注册信息有误:ID已被占用,Email已被注册,密码和确认密码不一致
  1. 系统提示相关信息
  2. 跳转到步骤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模块化相关推荐

  1. Maven实战:Maven生命周期

    前言 之前有写过一篇文章Maven实战,介绍了Maven的一些基本概念,以及对于一个初学者而言的Maven基础知识,当时在我看来掌握了这些基本是够用的. 随着工作的深入,越来越感觉对于Maven的理解 ...

  2. Maven实战系列文章目录

    Maven实战(一)安装与配置 Maven实战(二)构建简单Maven项目 Maven实战(三)Eclipse构建Maven项目 Maven实战(四)生命周期 Maven实战(五)坐标详解 Maven ...

  3. Maven实战(四)——基于Maven的持续集成实践

    相信很多读者和我一样,最早接触到持续集成的概念是来自Martin的著名文章<持续集成>,该文最早发布于2000年9月,之后在2006年进行了一次修订,它清晰地解释了持续集成的概念,并总结了 ...

  4. Maven实战(二)——POM重构之增还是删

    重构是广大开发者再熟悉不过的技术,在Martin Fowler的<重构--改善既有代码的设计>一书中,其定义为"重构(名词):对软件内部结构的一种调整,目的是在不改变软件之可察行 ...

  5. Maven实战——常用Maven插件介绍

    http://www.infoq.com/cn/news/2011/04/xxb-maven-7-plugin 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任 ...

  6. 《maven实战》笔记(2)----一个简单maven项目的搭建,测试和打包

    参照<maven实战>在本地创建对应的基本项目helloworld,在本地完成后项目结构如下: 可以看到maven项目的骨架: src/main/java(javaz主代码) src/te ...

  7. 11月3日云栖精选夜读:《maven实战》读书笔记2——maven安装(windows和eclipse插件)...

    前言 由于我的工作中开发环境就是windows,IDE是eclipse,因此安装也只涉及和记录这两部分,在看书和动手的过程也就直接跳过其他部分. 笔记 windows中maven的安装 安装条件 ma ...

  8. 《Maven实战》 读书笔记

    前言:此为个人阅读<Maven实战>的笔记,非入门教程. 一.安装配置: 1.安装并配置好JDK: 2.从Apache下载适当版本的maven压缩包: 3.解压maven压缩包,放在适当位 ...

  9. [Maven实战](9)传递性依赖

    了解Spring的朋友都知道,创建一个Spring Framework项目都需要依赖什么样的Jar包.如果不使用Maven,那么在项目中就需要手动下载相关的依赖.由于Spring Framework又 ...

最新文章

  1. PYTHON自动化Day12-unittest自动注册登录
  2. 假如我是超级卷王。。。
  3. JavaScript是如何工作的:与WebAssembly比较及其使用场景
  4. 为什么要学习 Markdown?究竟有什么用?怎么用?
  5. dev GridControl双击行事件
  6. ssl1341-最小路径覆盖【最大匹配,最小路径覆盖,图论】
  7. mui.init方法配置
  8. git ssh创建分支_将git项目导入GitHub的方法(附创建分支)
  9. 百度API获取位置范围内的周边服务
  10. Linux开放21通信,linux下开启ftp的21号port
  11. 网站开发项目的需求分析
  12. 【每日更新】万维钢精英日课3课程分享笔记:模糊逻辑:灰度认知,灰度决策,黑白执行
  13. arduino霍尔编码器蓝牙小车代码
  14. c#开发环境下用Directx载入3D模型
  15. 计算机网络网线制作工具有,网线制作工具 网线水晶头制作过程详解(视频+图文教程)...
  16. qq游戏大厅+android,手机QQ游戏大厅Android客户端体验
  17. 手机内存带宽和分辨率
  18. STM32F103_study56_The punctual atoms(STM32 PWM output experimental code analysis)
  19. 蒙特卡洛积分 matlab,菜鸟之路——数学建模之蒙特卡罗积分(投点法,平均值法)+牛顿法解方程组MATLAB实现...
  20. 6000多万铲屎官,捧得出一个国产主粮的春天吗?

热门文章

  1. 关于http的各种状态码--内容转自其他博客
  2. Java内嵌Groovy脚本引擎进行业务规则剥离(一)
  3. feed43使用教程
  4. 七秘诀工作效率与薪水翻番
  5. Linux定时任务Crontab详解
  6. android 检测sqlite数据表中字段(列)是否存在
  7. mysql搜索中文 有的匹配不出来_MYSQL-中文检索匹配与正则表达式
  8. 蓝桥杯 BASIC-18 基础练习 矩形面积交
  9. 圆柱与平面接触宽度_圆柱滚子轴承保持架锁爪变形引起的轴承故障
  10. 修改Android Studio默认的gradle配置文件