在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
今天要讲解的JavaEE实战项目是一款应用于健康管理机构的业务系统,它叫做传智健康,能够实现健康管理机构工作内容可视化、会员管理专业化、 健康评估数字化、健康干预流程化、知识库集成化,从而提高健康管理师的工作效率,加强与会员间的互动,增强管理者对健康管理机构运营情况的了解。下面我们来一起看看传智健康实战项目的移动端开发内容,主要包括了需求分析和手机快速登录。
一、需求分析
手机快速登录功能,就是通过短信验证码的方式进行登录。这种方式相对于用户名密码登录方式,用户不需要记忆自己的密码,只需要通过输入手机号并获取验证码就可以完成登录,是目前比较流行的登录方式。
二、手机快速登录
1、页面调整
登录页面为/pages/login.html
(1)发送验证码
为获取验证码按钮绑定事件,并在事件对应的处理函数中校验手机号,如果手机号输入正确则显示30秒倒计时效果并发送ajax请求,发送短信验证码,代码如下:
<div class="input-row">
<label>手机号</label>
<div class="loginInput">
<input v-model="loginInfo.telephone" id='account' type="text"
placeholder="请输入手机号">
<input id="validateCodeButton"
@click="sendValidateCode()" type="button" style="font-size: 12px"
value="获取验证码">
</div>
</div>
<script>
var vue = new Vue({
el:'#app',
data:{
loginInfo:{}//登录信息
},
methods:{
//发送验证码
sendValidateCode(){
var telephone = this.loginInfo.telephone;
if (!checkTelephone(telephone)) {
this.$message.error('请输入正确的手机号');
return false;
}
validateCodeButton = $("#validateCodeButton")[0];
clock = window.setInterval(doLoop, 1000); //一秒执行一次
axios.
post("/validateCode/send4Login.do?telephone=" + telephone).
then((response) => {
if(!response.data.flag){
//验证码发送失败
this.$message.error('验证码发送失败,请检查手机号输入是否正确');
}
});
}
}
});
</script>
在ValidateCodeController中提供send4Login方法,调用短信服务发送验证码并将验证码保存到redis
//手机快速登录时发送手机验证码
@RequestMapping("/send4Login")
try {
//发送短信
SMSUtils.sendShortMessage(SMSUtils.VALIDATE_CODE,telephone,code.toString());
} catch (ClientException e) {
e.printStackTrace();
//验证码发送失败
return new Result(false, MessageConstant.SEND_VALIDATECODE_FAIL);
}
System.out.println("发送的手机验证码为:" + code);
//将生成的验证码缓存到redis
jedisPool.getResource().setex(telephone+RedisMessageConstant.SENDTYPE_LOGIN,
5 * 60,
code.toString());
//验证码发送成功
return new Result(true,MessageConstant.SEND_VALIDATECODE_SUCCESS);
}
(2)提交登录请求
为登录按钮绑定事件
<div class="btn yes-btn"><a @click="login()" href="#">登录</a></div>
//登录
login(){
var telephone = this.loginInfo.telephone;
if (!checkTelephone(telephone)) {
this.$message.error('请输入正确的手机号');
return false;
}
axios.post("/member/login.do",this.loginInfo).then((response) => {
if(response.data.flag){
//登录成功,跳转到会员页面
window.location.href="member.html";
}else{
//失败,提示失败信息
this.$message.error(response.data.message);
}
});
}
2、后台代码
(1)Controller
在health_mobile工程中创建MemberController并提供login方法进行登录检查,处理逻辑为:
a、校验用户输入的短信验证码是否正确,如果验证码错误则登录失败
b、如果验证码正确,则判断当前用户是否为会员,如果不是会员则自动完成会员注册
c、向客户端写入Cookie,内容为用户手机号
d、将会员信息保存到Redis,使用手机号作为key,保存时长为30分钟
(2)服务接口
在MemberService服务接口中提供findByTelephone和add方法
public void add(Member member);
public Member findByTelephone(String telephone);
(3)服务实现类
在MemberServiceImpl服务实现类中实现findByTelephone和add方法
(4)Dao接口
public Member findByTelephone(String telephone);
public void add(Member member);
(5)Mapper映射文件
<!--新增会员-->
<insert id="add" parameterType="com.itheima.pojo.Member">
<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
SELECT LAST_INSERT_ID()
</selectKey>
insert into t_member
(fileNumber,name,sex,idCard,phoneNumber,regTime,password,email,birthday,remark)
values
(#{fileNumber},#{name},#{sex},#{idCard},#{phoneNumber},#{regTime},#
{password},#{email},#{birthday},#{remark})
<select id="findByTelephone" parameterType="string"
resultType="com.itheima.pojo.Member">
select * from t_member where phoneNumber = #{phoneNumber}
</select>
以上就是JavaEE实战项目手机快速登录的讲解,如果大家对传智健康项目感兴趣,不妨自己尝试着做一做。如果有任何问题,都可以在博学谷上咨询在线老师,报名学习实战项目的课程。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
如何学Java语言从入门到精通
如何学Java语言从入门到精通?学编程一定要动手,遇到bug自己去查找解决方法,在学习过程中遇到麻烦,除了学会查找资料以外还要大胆提问,在解决问题的过程中才能更快的提升编程能力。
5428
2019-11-22 11:33:44
Java基础学习笔记之IO流案例
本文又是一篇关于Java基础学习的总结笔记,大家要是有学习需要可以接着看下去。众所周知,IO流指的是输入输出流,用来处理设备上的数据,这里的设备指硬盘、内存、键盘录入、网络传输等。本文要为大家介绍 IO流案例,主要内容包括案例需求、步骤分析、代码实现等等,现在一起来看看吧!
4630
2019-12-30 16:38:08
Redis6.0引入多线程有哪些好处?
Redis6.0新版本在五月初重磅发布,我们可以清晰地发现Redis6.0新版本引入了多线程。相信大家一定都十分好奇,Redis6.0引入多线程究竟有哪些好处呢?下面我们就来逐一分析一下引入多线程的诸多好处~
5178
2020-05-29 18:52:04
初级Java开发上班做什么?
作为Jjava开发除了写增删改查之外,还要学会运维、编程、打印机、NGINX,docker,熟悉项目数据库之类的部分,逻辑思维要强遇到问题不会的可以加一些交流群,平常要注意提高自己的看书籍和视频。
5277
2020-12-02 14:03:45
MySQL数据库as和distinct关键字怎么用?代码怎么写?
MySQL数据库as和distinct关键字怎么用?代码怎么写?使用SQL语句显示结果时,在屏幕显示的字段名不具备良好的可读性,我们可以使用 as 给字段起一个别名。在很多重复数据想要对其中重复数据行进行去重操作可以使用 distinct。
3616
2022-01-12 16:13:57