maven实战第九篇_09_yucong_背景开发案例:注册用户

1 注册用户用例

主要场景

1 用户访问注册页面

2 系统生成验证码图片

3 用户输入想要的ID,Emial地址,想要的显示名称,密码,确认密码

4 用户输入验证码

5 用户提交注册请求

6 系统检查验证码

7 系统检查ID是否已经被注册,Email是否已经被注册,密码和确认密码是否一致

8 系统保存未激活的账户信息

9 系统生成激活链接,并发送至用户邮箱

10 用户打开邮箱,访问激活链接

11 系统解析激活链接,激活相关账户

12 用户使用ID和密码登陆

扩展场景

4a:用户无法看清验证码,请求重新生成

1.跳转到步骤2

6a:系统检测到用户输入的验证码错误

  1.系统提升验证码错误

  2.跳转到步骤2

7a:系统检测到ID已被注册,或者Email已被注册,或者密码和确认密码不一致

  1.系统提示相关错误信息

  2.跳转到步骤2

2 界面原型

3 简要设计

3.1 接口定义

系统对外的接口包括:

生成验证码图片

处理注册请求

激活账户

处理登陆

generateCaptchaKey()和generateCaptchaImage()方法,对于Captcha的简单解释就是验证码。

每个Captcha都需要有一个key,根据这个key,系统才能得到对应的验证码图片以及实际值。

3.2 板块结构

定义了系统核心的接口之后,基于功能分割和方便复用的原则,再对系统进一步进行划分。

这里基于包名划分模块,这也是在java中比较常见的做法。

账户注册服务的模块划分如图:

现在逐个解释一下各个模块(包)的作用:

com.juvenxu.mvnbook.account.service

系统的核心,它封装了所有下层的细节,对外暴露简单的接口。这实际上是一个facade模式。

com.juvenxu.mvnbook.account.web

该模块包含了所有与web相关的内容,包括可能的JSP,Servlet,web.xml等,它直接依赖于com.juvenxu.mvnbook.account.service模块,使用其提供的服务。

com.juvenxu.mvnbook.account.persist

处理账户信息的持久化,包括增,删,改,查等,根据实现,可以基于数据库或者文件。

com.juvenxu.mvnbook.account.captcha

处理验证码的key生成,图片生成以及验证等,这里需要第三方的类库来帮助实现这些功能

com.juvenxu.mvnbook.account.email

处理邮件服务的配置,激活邮件的编写和发送等工作

小结:

开发流程如下:

账户注册服务的需求

大概的界面

简单的接口设计

模块的职责划分

时间: 2024-08-27 18:27:41

maven实战第九篇_09_yucong_背景开发案例:注册用户的相关文章

场景下开发-企业注册用户信息修改流程

场景是企业用户注册完后,想更改企业信息 1.企业客户申请流程2.客户审核流程企业信息保存,银行卡信息保存,提交审核(待提交,审核中,审核失败,审核成功)判断 OpenUpdateFlag 3.更新图片根据主键更新 4.企业账户信息修改流程 修改申请()if(审核中,审核失败){OpenUpdateFlag ==='2'}else{    OpenUpdateFlag ==='1'}if(OpenUpdateFlag ==='1'){    企业信息保存,银行卡信息保存(待提交)    1.带有原

第九篇 :微信公众平台开发实战Java版之如何实现自定义分享内容

微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用微信分享.扫一扫.卡券.支付等微信特有的能力,为微信用户提供更优质的网页体验. 本次的内容: 实现:分享到朋友圈,qq,qq空间,微信朋友的功能. 基础接口 判断当前客户端版本是否支持指定JS接口 wx.checkJsApi({ jsApiList: ['chooseImage'], // 需要检测的JS接

Hadoop应用开发案例(实战)视频教程(项目实战)视频教程

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

Swift游戏开发案例实战——互动出版网

这篇是计算机类的优质推荐>>>><Swift游戏开发案例实战> 国内第一本Swift游戏开发图书,系统地讲解了Swift 游戏开发的基础知识和各项关键技术 编辑推荐 *国内第一本Swift游戏开发图书,系统地讲解了Swift 游戏开发的基础知识和各项关键技术: *详细讲解了5个游戏的开发过程,如记忆配对.太空侵略者.Simon记忆.迷你高尔夫.银河大战.这些项目将帮助读者更好地理解iOS项目开发的方式和流程: *结合案例,重点对图形.音频和交互等与游戏紧密相关的知识做了

[Java 05 OO] (基础篇) 《Java开发实战经典》

p5OO 第五章 面向对象 (基础篇) Notes (1), Constructor / this / String   String str1 = "hello"; 解释 : 是把一个在堆内存空间的使用权给了 str1 对象.   String str2 = "hello"; str1 == str2 是 true   String 字符串的内容不可改变 (2), Java 常用的内存区域    1), 栈内存空间    2), 堆内存空间    3), 全局数据

Maven实战05_背景案例学Maven模块化

1:简单的账户注册服务 注册互联网账户是日常生活中再熟悉不过的一件事,作为一个用户,注册账户的时候需要进行以下操作,提供以下信息. 提供一个未被使用的帐号ID 提供一个未被使用的email地址. 提供一个任意的显示名称 设置安全密码,并重复输入以确认 输入验证码 前往邮箱查收激活链接并单击激活帐号 登录确认激活状态 帐号的ID和密码唯一的标识某个账户,显示名称用来在页面上显示,方便浏览.注册时需要用户输入两次密码,以确保没有输错.系统则负责检查ID和email的唯一性,验证两次输入的密码是否一致

iOS开发——完整项目实战OC篇&amp;百思不得姐第四天

iOS开发——完整项目实战OC篇&百思不得姐第四天 上午 一:自定义按钮使用九宫格布局 二:控件不能点击 三:获取用户点击了那个按钮 四:调整按钮内部控件的位置:主流->上下 五:不能直接使用self.navigationController中或者View中获取导航控制器 方法一: 方法二: 六:布局取整 1 // 总行数 2 3 // NSUInteger rows = sqaures.count / maxCols; 4 5 // if (sqaures.count % maxCols)

iOS开发——实战OC篇&amp;环境搭建之Xib(玩转UINavigationController与UITabBarController)

iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController) 前面我们介绍了StoryBoard这个新技术,和纯技术编程的代码创建界面,本篇我们将介绍一个老的技术,但是在很多的公司或者库里面还是使用这个技术,既然如此它肯定有他的好处,至于好处这里我就不一一介绍了.在Xcode5之前是只能使用Xib或者代码的,而代码又对于很多初学者来说算是一个难题.毕竟不知道怎么下手.所以我就总结了一下这段时间自己编写程序的一个实例来说明怎么

iOS开发——实战OC篇&amp;环境搭建之纯代码(玩转UINavigationController与UITabBarController)

iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController) 这里我们就直接上实例: 一:新建一个项目singleView Controller,命名未iCocos 二:由于我们使用的纯代码实现的,所以删除其中的StoryBoard和Viewtroller的两个文件 三:新建一个继承自TabBar Controller的类,我们命名问iCocos ViewController 三:在Appdelegate的实现文件中导入刚刚