Vue中的Uniapp与springboot交互实现登录注册


前言

本文主要是用uniapp和springboot框架实现登录注册功能。


一、登录前后端代码思路讲解

登录后端实现思路

登录是条件查询,判断用户所输入的账号和密码是否存在,如果存在,则登录成功,如果不存在,则登录失败,所以mapper接口的返回值是实体类型。接下来就是后端简单实现。
mapper接口

user login(String name,String password);

mapper.xml

<select id="login" resultType="com.shop.demo.pojo.user">
        select * from user where name=#{name} and password=#{password}
    </select>

service接口

user login(String name,String password);

service接口实现类

   @Override
    public user login(String name, String password) {
        return mapper.login(name,password);
    }

controller控制层

@RequestMapping("login")
    public String login(String name,String password){
        user login = service.login(name, password);
        if(login!=null){
              return "登录成功";
        }else {
            return "登录失败";
        }
    }

在上述代码中,主要用controller层进行if else判断,来确定用户输入的值,是否在user表中存在,如果存在则存入login对象中,根据login对象是否为空来判断用户输入的值是否正确。

登录前端实现思路

首先在前端data中需要三个参数,分别为name账号,password密码和flag装登录成功或登录失败的字符串,用v-mode来进行数据绑定,用@click点击事件来触发uni.request事件,request事件中,传入数据绑定后的name和password值,并且在success中把res.data的值赋给flag,在success中判断flag的值是登录成功还是登录失败,如果登录成功直接跳转到首页,登录失败则调用uni.showModel弹窗事件告知用户登录失败。以下是代码实现:

<template>
	<view >
		<view style="font-size:50rpx;text-align: center; font-weight:bold">
			物资管理平台
		</view>
		<view>
			<text>账号:</text><input type="text" v-model="name">
			密码:<input type="safe-password" v-model="password">
		</view>
		<button @click="login">登录</button>
		<button @click="zhuce">注册</button>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				name:"",
				password:"",
				flag:""
			}
		},
		onLoad() {
			
		},
		methods: {
			login(){
				this.flag=""
				uni.request({
					url:'http://localhost:8080/login',
					data:{
						name:this.name,
						password:this.password
					},
					success: (res) => {
						console.log(res.data);
						this.flag=res.data;
						console.log("flag:"+this.flag);
						if(this.flag=="登录成功")
						{
							uni.redirectTo({
								url:'/pages/first/first',
							})
						}
						else if(this.flag=="登录失败"){
							uni.showModal({
								title: '提示',
								content: '登录失败',
								showCancel: false,
								confirmText: '确定'
							})
						}
					}
				})
			},
			zhuce(){
				uni.redirectTo({
					url:'/pages/zhuce/zhuce',
				})
			}
		}
	}
</script>

<style>
	input{
		width:auto;
		border-bottom:1px solid lightgray;
	}
</style>

二、注册前后端代码思路讲解

注册后端代码思路讲解

注册主要用到的也是name和password两个参数,用的是sql中的insert语句,首先确定它接口返回值是boolean类型或int类型,我选择的是int,在接口实现后,把接口的返回值赋给int类型的res,如果插入成功,则res为1,如果插入失败,则res为0,返回的也是res的值,通过判断res的值来确认是否注册成功,这里的逻辑比较简单,真正的注册还需要用到唯一主键判断和安全、权限等问题,这里就不多赘述,代码实现如下:
mapper接口

 int register(String name,String password);

mapper.xml文件

<insert id="register" >
    insert into user(name,password) values(#{name},#{password})
</insert>

service层

int register(String name,String password);
serviceimpl实现类
  @Override
    public int register(String name,String password){
        int res=mapper.register(name,password);
        return res;
    }

controller层

@RequestMapping("register")
    public int register(String name, String password)
    {
        int res=service.register(name,password);
        if(res==1)
        {
            return res;
        }
        else {
            return 0;
        }
    }

注册前端代码思路讲解

注册也是通过v-model数据绑定+@click点击事件来进行实现,这里值得注意的是用到的post如果不加请求头,header: {‘content-type’:‘application/x-www-form-urlencoded’}会出现传不过去值的情况,所以这是比较容易出错的地方,这是Post请求的三种编码格式之一的表单提交编码格式。因为我写的代码不涉及到注册不成功的情况,所以说只需要name和password参数即可。接下来进行代码展示。

<template>
	<view>
		<view class="">
			注册界面
		</view>
		账号名:<input type="text" v-model="name">
		密码:<input type="safe-password" v-model="password">
		<button @click="zhuce">注册</button>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				name:"",
				password:""
			}
		},
		methods: {
			zhuce:function(){
				console.log(this.name+this.password)
				uni.request({
					url:'http://localhost:8080/register',
					method:'post',
					header: {
					'content-type':'application/x-www-form-urlencoded'
					},
					data:{
						name:this.name,
						password:this.password,
					},
					success: function(res) {
						console.log(res.data);
					},
					fail: function(err) {
						console.log(err);
					},
				})
			}
		}
	}
</script>

<style>
	input{
		border-bottom:1px solid lightgray;
	}
</style>

总结

以上就是今天要输出的内容,这个文章的内容还有很多可以更新的地方,后续也会进行进一步的更新,希望能帮助到大家。

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃巧克li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值