注册功能
【web项目-注册功能-逻辑分析/前台后台/三层架构/原生底层】
【技术实现:JavaScript/Ajax&json/Tomcat/MySQL/Spring-JDBC/Druid连接池】
前台
JavaScript
- 表单检验
- 对每一个输入框进行正则表达式的校验,并绑定单击事件
- 判断是否检验成功,并分别设置不同的css表现样式
- 失焦事件
- 给每一个正则校验输入框绑定失焦事件,并传递响应的校验方法名
- 异步请求
- 给表单提交按钮绑定一个提交事件,并判断所有校验方法是否都校验成功
- 如果所有校验成功,发送异步请求,将表单对象序列化作为参数传递给后台,最后接收后台响应回来的数据进行判断。
- 如果注册成功,跳转注册成功页面,给用户友好提示。
- 如果注册失败,将后台响应回来的错误信息展示到当前页面
- 如果校验不成功,则直接返回false,不提交表单
后台
web层
- 为优化开发,简化代码,去重,定义一个BaseServlet类。以后所有的访问后台资源路径的servlet类都要继承BaseServlet,便于统一管理不同类目的servlet的不同调用请求
- 再写一个用户的servlet类,继承BaseServlet,定义一个用户注册方法,私有化声明UserService业务对象,便于后面重复调用该对象
- 先判断验证码是否正确,减轻访问数据库的压力
- 在验证码的servlet类中,通过session域对象设置验证码的值
- 通过request对象获取session对象,并获取到后台自动设置的验证码的值
- 获取到验证码后,应立即移除session中验证码的属性值,让验证码只能被只用一次,提高安全性
- 如果验证码对比失败,则直接写回失败信息,封装为一个信息对象,并将信息对象转为json对象返回给前台,最后return
- 如果验证码对比成功,继续进行下一步
- 接收前台请求发送的数据,并利用工具类转成一个user对象封装数据
- 调用service对象的用户注册方法,并将封装好的user对象作为参数传递过去,返回值为布尔类型
- 判断是否注册成功,分别会写成功或失败的信息,封装到info对象中,将info对象转成json对象,响应给前台
service层
- 定义一个用户业务逻辑层的接口,再定义一个用户业务逻辑层接口的实现类,在实现类里面进行业务逻辑的处理
- 私有化声明一个数据访问对象,便于重复调用
- 定义一个用户注册的方法,先调用dao对象的根据用户名查找用户的方法
- 如果用户存在,不为null,则直接返回false
- 如果用户不存在,则继续执行下一步
- 给用户设置一个激活码,作为判断激活状态的唯一标识。同时再给用户设置激活状态为’N’
- 调用dao对象保存用户信息的方法,无返回值
- 利用邮件工具类,给用户注册邮箱发送激活邮件。传递参数:用户注册邮箱、激活跳转页面(绑定激活码参数)、标题信息
- 返回true
dao层
- 定义一个用户表的数据处理接口,再定义一个用户表数据处理接口的实现类,在实现类里面进行对用户表的CRUD操作
- 私有化声明一个JdbcTemplate对象。依赖于数据源DataSource(使用Druid连接池)
- 调用template对象的方法,通过用户名查询用户表是否存在该用户。如果有返回值,最好进行try…catch,并在catch中写一个输出语句,记录数据处理逻辑的结果信息
- 返回查询结果