/*
*用户注册登录
*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、通过用户名查询用户(已经存在,不用写了)
*
*/
javawebday37(注册界面 dao、service、servlet思路)
最新推荐文章于 2024-09-17 13:02:12 发布
本文介绍了一个简单的用户注册登录系统的实现过程,包括JSP页面设计、Servlet处理逻辑、Service层业务逻辑、DAO层数据访问及异常处理等核心内容。
2987

被折叠的 条评论
为什么被折叠?



