1 简介
像很多书一样,《Maven 实战》也采用案例来说明Maven的概念和含义,在本书的第四章晓斌为我们提出了一个可以较为广泛的使用Maven来帮助我们的项目,简单的账户注册服务,注册互联网账号是日常生活中再熟悉不过的一件事情。
2 需求阐述
日常注册账户的流程大体相同,注册时需要用户提供的信息如下:
账号的ID和email用来唯一标识某个账户,注册的时候需要用户输入两次密码,以确保没有输出。系统需要负责ID和email的唯一性。验证码由系统随机生成的只能由肉眼识别内容的图片,可以防止机器恶意批量注册。
3 界面原型
可以从上面简单的html页面查看简单的注册逻辑。
4 简要设计
我们把页面看成一个整体,然后把账户注册服务看成一个整体,从页面上我们需要调用的是那些注册服务所提供的功能呢?
- 页面要能产生验证码(key和img)。
- 注册
- 在邮箱中点击激活时(通过在邮件中直接调用服务,传入验证码和连接)
- 登录(注册成功,直接登录)
需要理解的是激活接口,激活的场景是当用户点击确认并提交之后,由系统向email发送一封邮件,在给邮件中提供了调用接口的url和需要提供的参数(通常是几位验证码)
4.1 接口
在p49可以看到如下的服务,使用计算机语言来阐述上述的简要设计。
generateCaptchaKey()和generateCaptchaImage(captchaKey: String)简单的解释验证码的生成。每个Captcha都需要一个key,根据这个key,系统才能得到对应的验证码图片以及实际值。因此在实际工作中,页面首先调用generateCaptchaKey产生一个key,然后由generateImg方法得到对应于该key验证码图片。验证码的key以及验证码图片被传送到客户端,用户肉眼识别再输入验证码的值,伴随着key一起传送到服务器进行验证,服务器根据这个key查到正确的验证码值,然后与客户端传来的值进行比对验证。
4.2 模块结构
系统核心的接口如上所述,基于功能分割和方便复用的原则,再对系统进行进一步划分。
虽然这个小服务很简单,但在书中正是基于一个这样的与具体项目相似的,多模块的系统来演示Maven的特性,同时又不会产生过于庞大的系统代码,避重就轻,抓出主要的重点,自然全书的重点是Maven,案例只是辅助理解Maven的特性而已。
从上图可以看到account.service为系统的核心,封装了所有下层细节,对外暴露简单的接口。
各模块的作用如下:
通过全书,可以看到email,captcha,persist这些分别都是Maven项目,并且service依赖这三个模块,其中每个模块分别都是一个Maven项目,三个Maven项目均可以产生由groupId,artifactId,version标记的构件,通过部署到本地仓库或者私服之后,供其他的Maven项目使用。需要尤其关注的是多模块Maven的pom文件怎么编写,存在组合和集成的pom如何编写?如何导入外部库到Maven项目中。这些具体的问题,在实践本书内容的过程中,都能找到比较好的答案。
5 总结
文档简要的概述了Maven实战所使用的背景案例的需求概述和简要设计,界面原型以及职责划分,随后的内容则是逐渐丰富该案例,不断的使用Maven的技术来实现这个账户注册服务,从过程中体会Maven的使用和优点。
2019年6月4日11:27:31于中电28所