javawebday37(注册界面 dao、service、servlet思路)

本文介绍了一个简单的用户注册登录系统的实现过程,包括JSP页面设计、Servlet处理逻辑、Service层业务逻辑、DAO层数据访问及异常处理等核心内容。
/*
 *用户注册登录
 *1.1 JSP页面
 *  regist.jsp
 *      注册表单:用户输入注册信息
 *      回显错误信息:当注册失败时,显示错误信息
 *  login.jsp
 *      登录表单:用户输入登录信息
 *      回显错误便利店:当登录失败时,显示错误信息 
 *  index.jsp-->主页(只有登录成功才能看到)
 *Servlet:
 *  LoginServlet
 *  RegistServlet
 *Service
 *  UserService-->与用户相关的业务类
 *Dao:
 *  UserDao-->与用户相关的数据类
 *Domain:
 *  User(对应数据库,还要对应所有表单)
 *      username
 *      password
 *      verifyCode
 *数据库设计
 *  users.xml
 *  <users>
 *      <user username="xxx" password="XXX"/>
 *      <user username="xxx" password="XXX"/>
 *  </users>
 *
 *步骤
 *1、创建空项目
 *2、导包
 *  CommonUtils
 *  commons-beanutils.jar
 *  commons-logging.jar
 *  dom4j
 *3、建包
 *  my.user.domain
 *      User
 *  my.user.dao
 *      User
 *  my.user.service
 *      UserService
 *  my.user.web.servlet
 *      LoginServlet
 *      RegistServlet
 *4、jsp
 *  login.jsp
 *  regist.jsp
 *  index.jsp
 *5、在D盘下创建一个users.xml
 *  添加根元素<users>
 *  保证文件为utf-8编码
 *
 *注册
 *regist.jsp
 *  第一步:完成regist.jsp的基本功能
 *RegistServlet
 *  封装表单数据,封装到User对象中
 *  调用service的regist()方法
 *      如果这个方法没有出问题,给页面显示成功信息
 *      如果这个方法抛出了异常,把错误信息保存到request域,转发到regist.jsp(显示错误信息)
 *UserService#regist()
 *  没有返回值,但注册失败抛出一个自定义的异常!可以在异常中添加异常信息
 *  校验用户名是否已被注册(通过用户名查询用户),如果已被注册,抛出异常,异常信息为"用户名已被注册"
 *  添加用户
 *UserDao   通过业务分析,得到结果:需要提供两个方法
 *  按用户名查询用户对象:findByUsername(String username)
 *  插入一个用户到数据库:void add(User user)
 *要做:
 *1、在service层添加一个UserException
 *2、dao:
 *  User findByUsername(String username)
 *  void add(User user)
 *3、service
 *  void regist() throws UserException
 *4、servlet
 *  1、封装表单数据到User对象中
 *  2、使用user调用service的regist()方法
 *      3、如果得到UserException,那么把异常信息保存到request域中,转发回regist.jsp
 *      4、输出"注册成功"  
 *给注册添加验证码
 *1、VerifyCode类
 *  BufferedImage getImage() 获取随机的验证码图片
 *  String getText() 获取图片上的文本
 *  static output(BufferedImage,OutputStream) -->把图片写入到指定的输出流中
 *2、VerifyCodeServlet
 *  获取随机验证码图片
 *  把验证码图片上的文本保存到session中
 *  把图片响应到response的outputStream中
 *3、regist.jsp
 *  添加<img src="指向Servlet"/>
 *  添加一个文本框,用来输入验证码
 *  "看不清,换一张"是一个超链接,把上面的<img>的src重新再次指向Servlet,为了处理浏览器的缓存,需要使用时间来做参数
 *4、修改RegistServlet
 *  校验验证码
 *  错误:保存表单数据到request域、保存错误信息到request域,转发会regist.jsp
 *  正确:什么都不做,向下执行原来的代码
 *
 *服务器端表单(输入)校验
 *把这段校验,放到获取表单数据之后,验证码校验之前
 *1、使用Map类型来装载错误信息
 *  key:表单项名称,例如:username、password、verifyCode
 *  value:
 *      非空:用户名不能为空,或者是“密码不能为空”
 *      长度:用户名长度必须在3~20之间,密码长度必须在3~20之间
 *2、在校验失败时,向map添加错误信息。那个字段出错,就给那个字段添加错误信息
 *3、判断map是否为空(长度是否为0),如果不空,说明有错误存在,保存map到request域,保存form到request域(回显),转发回regist.jsp
 *4、在regist.jsp页面中,显示map中的错误信息 ${map.user}
 *
 *登录功能
 *页面:login.jsp-->登录表单
 *LoginServlet-->
 *  1、获取表单数据,封装到User中
 *  2、调用service的login()方法
 *  3、如果service的login()没有抛出异常。返回一个User对象
 *      4、有异常:获取异常信息,保存到request域,保存form 煮饭到login.jsp
 *      5、没异常:保存返回的user对象到session中。重定向到welcome.jsp(显示当前用户信息)[因为还有积分之类用户特有的数据 所以要返回的user对象]
 *
 *UserService#login()
 *  public User login(User form){...}
 *  1、使用用户名查询数据库,得到返回的User
 *      返回null:抛出异常,异常信息为(用户名不存在)
 *      返回不为null(获取查询出来的user的password与form的password进行比较),如果不同,抛出异常(密码错误)
 *      如果相同,返回查询结果
 *UserDao
 *  1、通过用户名查询用户(已经存在,不用写了)
 *  
 */

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值