注册与登录模板__dao没有实现

--------代码下载:注册与登录模板__dao没有实现.zip

功能:

> 注册(带验证码)

> 登录

------

JSP:

* login.jsp  --> 登录表单

* regist.jsp --> 注册表单

* index.jsp -->  主页(只有登录成功才能看到)

Servlet:

* LoginServlet

* RegistServlet

Service:

* UserService --> 与用户相关的业务类

Dao:

* UserDao --> 与用户相关的数据类

Domain:

* User(对应数据库,还要对应所有表单)

> username

> password

> verifyCode

-------------

步骤:

1. 创建空项目

2. 导包:

注册

regist.jsp

> 第一步:完成regist.jsp的基本功能!

RegistServlet

> 封装表单数据,封装到User对象中。

> 调用service的regist()方法

* 如果这个方法没有出问题,输出“注册成功”

* 如果这个方法抛出了异常,把错误信息保存到request域,转发到regist.jsp(显示错误信息)

UserService#regist()

> 没有返回值,但注册失败抛出一个自定义的异常!可以在异常中添加异常信息!(自定义一个异常类)

> 校验用户名是否已被注册(通过用户名查询用户),如果已被注册,抛出异常,异常信息为“用户名已被注册!”

> 添加用户

UserDao:通过业务分析,得到结果:需要提供两个方法

> 按用户名查询用户对象:User 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(BfferedImage, 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.username}

=================================

=================================

=================================

登录功能

页面:login.jsp --> 登录表单!

LoginServlet -->

1. 获取表单数据,封装到User中

2. 调用service的login()方法,传递form过去!

3. 如果service的login()方法,没有抛出异常!返回一个User对象!

4. 有异常:获取异常信息,保存到request域,保存form,转发到login.jsp

5. 没异常:保存返回的user对象到session中!!!重定向到welcome.jsp(显示当前用户信息!)

UserService#login()

public User login(User form) {...}

1. 使用用户名查询数据库,得到返回的User

> 返回为null,抛出异常,异常信息为(用户名不存在)

> 返回不为null,获取查询出来的user的password与form的password进行比较!如果不同:抛出异常(密码错误!)\

> 如果相同,返回查询结果!

UserDao

1. 通过用户名查询用户!(已经存在了,不用再写了!)

时间: 2024-10-13 10:57:38

注册与登录模板__dao没有实现的相关文章

注册和登录表单切换的大气登录页模板

全屏的背景图片,简洁的设计,注册和登录表单可切换,很不错的登录页模板.演示  下载 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><he

html注册登录模板

原文:html注册登录模板 源代码下载地址:http://www.zuidaima.com/share/1583349008108544.htm 非常简单实用的注册登录模板,页面也很美观. 版权声明:本文为博主原创文章,未经博主允许不得转载.

模板--------注册与登录_基于xml格式的存储

代码: 注册与登录_基于xml格式的存储.zip 功能: > 注册(带验证码) > 登录 ------------- JSP: * login.jsp  --> 登录表单 * regist.jsp --> 注册表单 * index.jsp -->  主页(只有登录成功才能看到) Servlet: * LoginServlet * RegistServlet Service: * UserService --> 与用户相关的业务类 Dao: * UserDao -->

实战django(一)--(你也能看懂的)注册与登录(带前端模板)

先是具体目录:(主要是注意templates和static的位置),其中person文件夹是上一期实战的,不用理会,login是本节实战app 项目urls.py from django.contrib import admin from django.urls import path,include urlpatterns = [ path('admin/', admin.site.urls), path('',include('person.urls',namespace='person')

10天学会phpWeChat——第十天:phpWeChat的会员注册、登录以及微信网页开发

通过前面的系列教程,我们系统的讲解了phpWeChat从视图端.控制器端到模型端的操作流程:熟悉了phpWeChat的目录结构:掌握了视图端模板如何创建一个丰富的表单和模型端如何操作数据库.这一切都是传统Web以及现代H5开发的核心. 我们今天进行<10天学会phpWeChat>教程的最后一讲,phpWeChat的微信网页开发.在这一讲里,我们将重点讲解在微信网页开发中几个常见参数的获取和一个微信扫一扫的实例. 一.微信网页开发中的几个重要参数(文档参考:https://mp.weixin.q

django 注册、登录及第三方接口程序(4):扩展邮箱注册,登录,微博登录

1.邮箱注册 这里需要扩展User,两种解决办法,1,注册时将email字段内容赋给username,这种瞒天过海型的,另一种就是扩展user,这里介绍django1.5的扩展方法. 1.setting配置 AUTH_USER_MODEL = 'manager.MyUser' # 扩展表的位置,appname.Model, MyUser是manager app下models中的用户类 AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends

分析ECMall的注册与登录机制

ecmall的注册流程index.php?app=member&act=register. 首先app是member,act是register方法. index.php中.通过ecmall的startup方法来启动,主要包含了eccore/ecmall.php,startup方法中包含eccore/controller/app.base.php和eccore/model/model.base.php基础类,通过 1 $app = isset($_REQUEST['app']) ? trim($_

【想到什么写什么】之注册、登录和权限

web程序,一句话解释: ----------------------------------------------------------------- 登录:写session/cookie 普通登录:就是查数据库,然后写session.写cookie 第三方登录:调用接口,写session.写cookie,绑定(写数据库第三方用户表). [与其他业务逻辑,没有关系] --------------------------------------------------------------

再学ajax--第二天 | 基于php+mysql+ajax的表单注册、登录、注销

写在前面 ajax学习到了第二天,这次是用第一天封装的ajax函数,后端使用了php+mysql实现基本的注册,登录,注销. php是我前几个月get到的技能,我已经学习到了面向对象,知道各修饰符的含义,继承,接口,构造函数,实例化对象 mysql是跟php一块学的,学习了基本增删改查. ajax原理其实不难理解,最主要的就是XMLHttpRequest(ActiveXObject("Microsoft.XMLHTTP")):在理解该对象之后,最主要理解的是前后端数据的传递问题,我也是