微信小程序:如何简单的实现前后交互
导读:首先本人的小程序全程基本都是自己写的,后端的框架用了springboots集成的mybatis plus。当然如果使用的是springmvc框架也是基本的这个原理,这里讲解下如何使用封装特别好的框架达成成就一天一个小程序。选用工具:数据库:mysql...
导读:
首先本人的小程序全程基本都是自己写的,后端的框架用了spring boots集成的mybatis plus。当然如果使用的是spring mvc框架也是基本的这个原理,这里讲解下如何使用封装特别好的框架达成成就一天一个小程序。
选用工具:
数据库:mysql
java版本:jdk1.80
微信开发工具:微信Web开发工具
后端框架:spring boots + mybatis plus+maven(很好的一个管理资源包的工具)
第一步:微信小程序的页面布局
这里我做一个最最最简单的例子,现在我们有如上的表,我们思考一下:如果现在要注入信息,没有任何条件的情况下,我们现在只需要执行Insert into 表 value(值)即可。但是在mybatis plus框架中拥有很好的数据库管理集成,所以我们基本上是不需要进行数据库语句的编写的,只需要知道如何去使用这样查询即可。
微信小程序页面代码:
<view class='main'>
<view>
<!--注册信息 -->
<form bindsubmit="bindinguser" bindreset="formReset">
<view>
<view class="adj"> </view>
<text class="add_user">
完善个人信息
</text>
<input placeholder='请输入姓名' class="username" name="nickName" id="nickName" style="margin-top:90px;">
</input>
<input placeholder='请输入性别' class="username"name="gender" id="gender" style="margin-top:145px;">
</input>
<input placeholder='请输入语言' class="username"name="language" id="language" style="margin-top:200px;">
</input>
<input placeholder='请输入城市' class="username" name="city" id="city" style="margin-top:255px;">
</input>
<input placeholder='请输入省份' class="username" name="province"id="province" style="margin-top:310px;"> </input>
<input placeholder='请输入备注' class="remarks"name="remarks" id="remarks" style="margin-top:365px;"> </input>
<view class="viw_button">
<button form-type="submit" class="ad"style="margin-top:430px;" type="primary" bindtap='bindinguser' >提交
</button>
</view>
</view>
</form>
</view>
</view>
/* pages/setting/setting.wxss */
page{
background: #efefef;
}
.add_user{
text-align: center;
position: absolute;
margin-left:34%;
font-size: 20px;
z-index: 15px;
}
.viw_button button{
background-color: #39c9ff;
}
.username{
position: absolute;
width:86%;
height:35px;
margin-left:7%;
border:none;
border-radius:4px;
border: 1px solid #efefef;
font-size:15px;
}
.remarks{
position: absolute;
width:86%;
height:35px;
margin-left:7%;
border:none;
border-radius:4px;
border: 1px solid #efefef;
font-size:15px;
}
.ad{
position: absolute;
width:86%;
margin-left:7%;
color:white;
background-color:#1296db;
}
.adj{
width:100%;
height:542px;
background-color:white;
position: absolute;
margin-top: 13px;
z-index: 0px;
}
第二步:前端请求后端的js
在这里请求后端采用的是ajax的json数据传输方式,这样局部请求的信息相对于准确和容易去维护和修改。
// pages/setting/setting.js
const app = getApp()
const WeValidator = require('we-validator')
Page({
/**
* 页面的初始数据
*/
data: {
nickName: '',
gender: '',
language: '',
city: '',
province: '',
remarks:''
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
console.log(app.globalData.userInfo);
this.setData({
userInfo: app.globalData.userInfo
});
},
bindinguser: function (e) {
if (app.globalData.userInfo) {
let val = wx.getStorageSync("openId");
let { value } = e.detail
if (!this.validatorInstance.checkData(value)) return
let info = e.detail.value
// console.log(info.name)
wx.request({
url: app.globalData.host + '/updateUserinfo',
data: {
openId: val,
nickName: e.detail.value.nickName,
gender: e.detail.value.gender,
language: e.detail.value.language,
city: e.detail.value.city,
province: e.detail.value.province,
remarks: e.detail.value.remarks
},
success: function (res) {
console.log(res.data)
let code = res.data.code
if (code == 0) {
wx.showToast({
title: '注册信息成功',
icon: 'success',
duration: 3000,
mask: true
})
wx.navigateTo({
url: '../newtask/newtask',
})
} else {
wx.showToast({
title: '注册信息失败',
icon: 'error',
duration: 1200,
mask: true
})
wx.redirectTo({
url: '../authorization/authorization'
})
}
}
})
} else {
wx.showToast({
title: '请先登录',
image: '../../images/error.png',
duration: 1000,
mask: true
})
}
},
initValidator() {
this.validatorInstance = new WeValidator({
rules: {
nickName: {
required: true
},
gender: {
required: true,
},
language: {
required: true
},
city: {
required: true
},
province: {
required: true
},
remarks: {
required: true
},
},
messages: {
nickName: {
required: '请输入姓名'
},
gender: {
required: '请输入性别',
},
language: {
required: '请输入语言'
},
city: {
required: '请输入城市'
},
province: {
required: '请输入省份'
},
remarks: {
required: '请输入备注'
}
},
})
},
onReady() {
this.initValidator()
//this.checkBinding()
},
})
第三步:controller类的编写
任何前端访问后端都需要有路径,这里的路径url实际上在mybatis plus框架中都是必然存在的,这个路径就是带有@RequestMapping的注解路径,现前端通过ajax方式请求后端,json数据传输都会打包发送到@RequestMapping的注解路径中,也就实现了所谓的前端数据流注入后端,后端进行数据接收后进行处理。现在我们后端需要编程的地方其实也相当的明确,就是在编写controller类时根据业务需求来即可。
下面是controller类的简单代码。
package com.mbyte.easy.rest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mbyte.easy.admin.entity.TCproject;
import com.mbyte.easy.admin.entity.TProject;
import com.mbyte.easy.admin.entity.TUser;
import com.mbyte.easy.admin.service.ITCprojectService;
import com.mbyte.easy.admin.service.ITProjectService;
import com.mbyte.easy.admin.service.ITUnitpriceService;
import com.mbyte.easy.admin.service.ITUserService;
import com.mbyte.easy.common.controller.BaseController;
import com.mbyte.easy.common.web.AjaxResult;
import com.mbyte.easy.rest.entity.WeChatAppLoginReq;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
/**
* <p>
* 这是微信小程序的登录接口
* </p>
* @Author
* @Date 2019.4.24
*/
@Controller
@RequestMapping("/rest")
public class wxusercontroller extends BaseController {
/**
*用户自己修改用户信息
* @param weixinUser
* @return
*/
@ResponseBody
@RequestMapping(value = {"/updateUserinfo"})
public AjaxResult upUserinfo(@ModelAttribute TUser weixinUser) {
//修改个人信息
QueryWrapper<TUser> updateQueryWrapper = new QueryWrapper<TUser>();
if (weixinUser.getOpenId() != null && !"".equals(weixinUser.getOpenId())) {
updateQueryWrapper = updateQueryWrapper.eq("openId", weixinUser.getOpenId());
boolean flag = itUserService.update(weixinUser, updateQueryWrapper);
if (flag) {
return success(weixinUser);
// return toAjax(itUserService.update(weixinUser, updateQueryWrapper));
} else {
error("更新失败");
}
}
else{
itUserService.save(weixinUser);
return success(weixinUser);
}
return error("传参错误");
}
}
这样我们就可以简单的实现微信小程序的前后端交互了。
更多推荐
所有评论(0)