当前课程知识点:软件开发实训--动态网站开发 > 9 后台主界面实现 > 9.1登录逻辑实现 > 9.1.1登录逻辑实现
同学你好
欢迎回到软件开发实训课堂
前面我们把用户管理的整个操作
都已经实现完成了
也知道了枚举数据以及
日期数据的处理方式
那么这节课我们就来看一下
登录如何实现
为了实现登陆
我们专门增加一个登陆的控制器
首先在控制器包上点击右键
选择新建里边的JAVA类
输入LoginController
然后加上注解Contrlooer
现在我们来看一下登录该怎么实现
通常情况下
用户输入账号和密码
并提交
这个时候控制器获得账号密码
去数据库中比对
查找对应的用户信息
如果没有找到
那就提示错误
如果找到了
那就让他登陆成功
并转向到我们的主界面
如果用户正确
转向主界面
否则回到登录界面
并提示错误
这是一般情况下登陆的一个简单的流程
那么为了实现这个流程
我们需要做几件事
第一个我们定义一个
JavaBean
UserLogin
用来存储登录时的用户名和密码
我们不使用实体类User
专门做一个JavaBean来提交相关数据
这样我们可以把登录的数据验证
与实体的数据验证分开
分开实体
User的验证和登陆验证
把他俩分开
第二个
登录只输入了账号
我们在定义User实体的时候
账号是唯一性的信息
也就是说它不重复
所以我们可以去实现一个通过账号
来查找用户的方法
所以在DAO中
添加通过账号
查询用户信息的方法
既然在DAO里添加了
那么servce也要添加
那么我们不再去新建DAO和service了
直接使用用户的DAO和service就可以了
现在我们首先来看DAO的实现
我们打开User的DAO接口
gpa里边仅仅是接口实现
没有类
在接口中
根据gpa它的规则
StringGPA的规则
它的方法通过名称来告诉查询
通过什么样的字段来查询数据
好我们这里就返回Optional
user
这是返回一个用户对象
然后findBy
这是他方法的前缀
然后用上字段
也就是我们实体类里边的成员变量
Account
把Account传给他
这样String
它在解析的时候就会把它解析为一个查询
语句
这里我们单独的只是对账号进行操作
如果说你的账号包括了账号姓名
EMAIL地址以及手机号
这都可以作为登录账号的话
那么你要记住
让他们首先是要在数据库中唯一
第二个你可以怎么样
自定义一个查询方法
就像上面这个findByKeyword一样
把他的信息一个一个的检索出来
这是你通过多个字段作为账号时
但是查询时不要使用like
而是使用精准查询
用等号去比较
这个要注意
我们来
在这里加一个注释
通过账号查询用户信息
这获取到的唯一的用户
获取到一定是唯一的
因为我们的account
在数据库里他是唯一存在
DAO\
我们就做好了
现在我们打开service
在service中我们定义一个检测方法
checkuser
检测用户时
我们用一个userlogin
这样的JavaBean对象
它里面包括了
用户名账号和密码这两个数据
好
这里边因为我们还没有userlogin这个数据
所以它出现了错误
我们来新建一个JavaBean
名字就叫做userlogin
在这里我们给它增加一个账号以及密码
给他增加setter的方法
这样他能够接受表单的数据
然后注解他
不能为空
你也可以增加其他的
比如说我们对他的要求
Size
最小要等于6
也就是说账号的最小长度是六
密码也一样
我们也可以给它加上
如果不满足这个要求
它就会出错
这是我们对基本的
账号和信息的一个限制
现在我们在service
把我们新定义的userlogin类
导入进来
就可以了
下一步咱们就来实现
userservice
在类里边
我们实现他没有实现的抽象方法
checkUser
只要我们点击它的红线
前面的小灯泡就可以帮你去生成这个方法
而不需要你去输入
这就是使用工具的好处
当我们传进来userlogin的时候
我们首先
去调用我们的DAO对象
然后findByAccount
通过账号查找
user点
getAccount
这样我们会得到一个注意是用户对象
这个时候得到是用户对象
那么我们还得要做一个判断
说如果
这里我们先把它拿到Opational User
先把它拿到
然后oo是no
他提供了一个方法
它可以判断我这个
对象是否被查找出来并存在了
注意它的拼写
然后去判断它是否有这个对象
isPresent
如果有
我们就来判断
u等于OU点get
获得这个对象
u点getPassword equals
看看他从数据库里得到的密码
与我们传进来的密码是否一致
如果一致
那就说明他是正确的用户
其他一切的都返回false
这是我们用来检测
登录用户是否合法用户的方法
这个参数User是登录用户账号和密码
最后返回
如果用户合法返回true
否则返回false这是它的一个规则
那么这里首先去数据库中查找用户信息
通过谁来查找呢
通过账号查找
查找出来后我们去比对
把库中的密码与登录时密码
比对
是否一致
一致就返回
说明他是合法用户
数据一致
为合法用户
返回真
其他一切情况返回false
这是对你登陆进来的账号信息进行判断
而isPresent的方法
是判断Optional中是否包含目标对象
如果不包含
那么它返回的是false
很显然它也是false返回
这样我们就把用户身份检测的方法做好了
现在回到我们的控制器
注意是loginController
loginController
我们增加getMapping
通过get请求
login
通常情况下get请求仅仅只是为了显示
登录表单
get请求
返回登录表单
然后我们执行post请求
post请求
不再是get了pose的请求
说明他是在什么提交表单
提交表单时我们得到一个userlogin
对象
但是我们需要对它进行验证
确保它不为空
最小长度为六
这里边通过BingdingResult
来得到验证中发生的错误
我们多了一个g
把user login
对象传进来后
我们就可以去调用我们的service了
service的使用
我们通过spring自动来注入
导入我们需要的注解
和以userservice对象
好我们来看一下
有了这个对象后
我们就可以service点check
来调用我们的方法
check user就是我们刚才定义
好的检查用户身份的方法
检查用户身份的方法
那么实际上我们在检查用户身份方法之前
还应该做一件事
那就是什么呢
看看它验证是否通过
如果result
他的身份有问题
提交的信息就不正确
是有错的
那么我们就可以直接为director
返回我们的登录页面
如果说他没有错误
说明他提交的信息首先是符合了
我们用户名和密码的规范
这样我们检测他
如果返回的是真
说明它是合法的用户
合法用户
我们就把用户信息给他保存起来
这里面我们通过session来进行保存
那么session既然我要用到它怎么来获取
注意对于spring来讲
我们可以让它注入对象
在方法上只要加一个参数就可以了
那么我们要查找的
user这个对象怎么来呢
这样我们去数据库里边就可以去检索它
这是其一
第二种方法
修改
checkuser返回
用户对象
那么如果我们去数据库再查一遍
其实完全就属于多余了
这个时候我们可以去怎么样改变我们的
checkuser方法
让他返回我们的需要的用户对象
最后我们
如果成功
就进入到index页面
当然这个页面还不存在
这是管理主业主界面
这是网站管理的主界面
index
好
现在对于这个方法
我们首先进入到
userspace
让他直接返回我们的user对象
这里要注意修改方法
一定要先去修改文档
你的设计文档修改后再回过来
去修改这个方法
然后我们来修改实现
在这里直接返回
我们需要的u对象就可以了
如果身份不正确
我们直接返回null就行
返回用户
对象
返回空对象
这样表示用户就没有了
这是为了不再去做查询
当然你要是说我还想做查询
没有必要你可以去重新去定义它
不等于unll
只要它不等于空
把它取出来
放到外面去执行
这样看起来也更方便一些
判断用户是否存在
如果存在
把它放入绘画对象
这样你在其它位置就可以准确的得到
用户的信息了
也就是说登录成功了
否则又回到登录页面
回到登录页面的时候
你可以告诉他
一些信息
比如说用户名
不正确等等
这里可以加一个错误消息
fail
提示一下
那么这里的model怎么来一样的通过我们的
参数
让String帮我们注入进来
好
可以了
这样我们就能够去界面上去显示
当然如果说正确
我们不需要显示任何信息
直接就去到主界面就可以了
好
这就是有关登录的控制器
以及数据访问和服务的实现
好
关于登录的接口实现就讲到这里
我们下节课再见
-1.1课程介绍
--1.1.3随堂测试
-1.2网站需求分析
--1.2.4随堂测试
-1.3网站首页分析
--1.3.3随堂测试
-1.4导航菜单分析
--1.4.3随堂测试
-1.5内容区域分析
--1.5.3随堂测试
-1.6内容副页面分析
-1.7编写需求文档
-2.1后端页面总体分析
--2.1.3随堂测试
-2.2用户管理功能设计
--2.2.3随堂测试
-2.3内容与分类功能分析
--2.3.3随堂测试
-2.4网站配置功能设计
--2.4.4随堂测试
-2.5数据库及表结构分析
-总体设计文档
-3.1前台模板约定
--3.1.3随堂测试
-3.2网站配置接口设计
--3.2.3随堂测试
-3.3菜单接口设计
--3.3.3随堂测试
-3.4内容接口设计
--3.4.3随堂测试
-3.5幻灯片接口设计
--3.5.3随堂测试
-补充设计文档
-4.1用户管理功能设计
--4.1.3随堂测试
-4.2菜单管理功能设计
--4.2.3随堂测试
-4.3内容管理功能设计
--4.3.3随堂测试
-4.4网站配置信息设计
--4.4.3随堂测试
-完成设计文档
-4.6随堂测试
-5.1开发环境搭建
--5.1.2随堂测试
-5.2Web前端环境搭建
-5.3创建用户实体
--5.3.2随堂测试
-5.4用户实体表创建与初始化
--5.4.2随堂测试
-5.5用户数据访问接口实现
--5.5.2随堂测试
-5.6环境搭建问题
-6.1用户服务层接口实现
--6.1.2随堂测试
-6.2用户列表和编辑控制器实现
--6.2.2随堂测试
-6.3用户存储和删除控制器实现
-6.4用户添加、编辑界面实现
-6.5用户管理添加用户调试
-7.1用户查询模板实现
--7.1.2随堂测试
-7.2用户信息编辑的实现
-7.3单个用户删除实现
-7.4多个用户删除实现
-8.1用户列表分页基本实现
-8.2用户列表查询结果分页实现
-8.3通用日期处理
-8.4整型日期处理
--8.4.2随堂测试
-8.5枚举数据的应用
-9.1登录逻辑实现
--9.1.2随堂测试
-9.2登录界面及流程调试
--9.2.2随堂测试
-9.3管理主界面实现
--9.3.2随堂测试
-9.4授权验证拦截器实现
--9.4.2随堂测试
-9.5拦截器调试
-10.1分类接口实现
-10.2分类添加、编辑实现
-10.3分类树结构实现
-10.4分类删除实现
--10.4.2随堂测试
-11.1内容实体定义
-11.2相关接口定义
-11.3服务接口实现
-11.4内容添加、编辑模板实现
-11.5内容添加、编辑控制器实现
-11.6内容检索页面实现
-11.7内容分类树实现
-12.1修改UEditor相关问题
-12.2整合UEditor到内容编辑界面
-12.3UEditor图片对话框应用
-12.4文件上传问题处理
-13.1网站配置相关类实现
-13.2网站配置界面模板实现
-13.3网站配置调试
-14.1网站首页布局实现
-14.2菜单Vue组件实现
--14.2.2随堂测试
-14.3幻灯片Vue组件实现
-14.4滚动Vue组件实现
--14.4.2随堂测试
-14.5滚动接口实现
-14.6滚动接口调试
-14.7幻灯片接口实现
-15.1首页区域实现
-15.2首页内容脚本实现
-15.3首页完善
-15.4Vue组件放入单文件
-15.5详细页面实现
-16.1网站测试介绍
-16.2功能测试
-16.3打包发布
-16.4部署运行
--16.4.2随堂测试