日期: 2020-06-22 17:47:43
微信小程序任何的语言都可以做后台,现在微信小程序推出云函数,做后台也可以。但是自己感觉想要完整的后台,做后台用java和php更好点。下面以典型的例证给大家做一下讲解,注册。
1、wmxl
微信小程序的前段代码(提交数据主要以from表单实现的)
<view class="btn-submit"> <button formType="reset">请完善注册信息</button> </view> <form catchsubmit="formSubmit" catchreset="formReset"> <view class="input-list"> <view class="input-item"> <text class="input-item-label">姓名</text> <view class="input-item-content"> <input type="text" name="name" auto-focus placeholder="请输入您的姓名" bindinput="inputName"></input> </view> </view> <view class="input-item"> <text class="input-item-label">性别</text> <picker class="input-item-content" bindchange="bindPickerChange" data-pickername="industry" value="{{industryindex}}" range="{{industryarr}}" mode="selector">{{industryarr[industryindex]}} </picker> </view> <view class="input-item"> <text class="input-item-label">账号</text> <view class="input-item-content"> <input type="idcard" name="tel" placeholder="请输入您的手机号码" maxlength="11" bindinput="inputPhone"></input> </view> </view> <view class="input-item"> <text class="input-item-label">登录密码</text> <view class="input-item-content"> <input type="password" name="password" auto-focus placeholder="请设置登录密码" bindinput="inputName"></input> </view> </view> <view class="input-item"> <text class="input-item-label">邮箱</text> <view class="input-item-content"> <input type="text" name="email" auto-focus placeholder="请输入您的邮箱" bindinput="inputName"></input> </view> </view> <view class="input-item"> <text class="input-item-label">注册vip</text> <picker class="input-item-content" bindchange="bindPickerChange" data-pickername="status" value="{{statusindex}}" range="{{statusarr}}" mode="selector">{{statusarr[statusindex]}} </picker> </view> </view> <view class="btn-submit"> <button type="primary" formType="submit">提交</button> <button formType="reset">置空</button> </view> </form>
2、wxss
/**app.wxss**/ /**app.wxss**/ page{ height: 100%; color: #333; display: flex; flex-direction: column; font: normal 30rpx/1.68 -apple-system-font, 'Helvetica Neue', Helvetica, 'Microsoft YaHei', sans-serif; } .container { flex: 1; display: flex; flex-direction: column; box-sizing: border-box; } .container-body{ flex: 1; overflow-y: auto; overflow-x: hidden; } .container-footer{ width: 100%; display: flex; height: 88rpx; border-top: 1rpx solid #ddd; background: #fff; } .container-footer text{ flex: 1; display: block; text-align: center; height: 88rpx; line-height: 88rpx; font-size: 34rpx; border-left: 1rpx solid #ddd; } .container-footer text:first-child{ border-left: none; } .container-footer .btn-block{ border-radius: 0; } .container-footer .btn-block:after{ border: none; } .container-gray{ background: #f9f9f9; } input{ height: 60rpx; line-height: 60rpx; font-family: inherit; } .input-list{ padding: 0 20rpx; margin: 20rpx 0; background: #fff; border-top: 1rpx solid #ddd; border-bottom: 1rpx solid #ddd; } .input-list .input-item{ padding: 20rpx; line-height: 2; display: flex; font-size: 30rpx; border-top: 1rpx solid #e8e8e8; } .input-list .input-item:first-child{ border-top: 0; } .input-item-label{ display: block; width: 5em; color: #666; } .input-item-content{ color: #333; flex:1; } .input-item.input-item-full{ display: block; } .input-item.input-item-full .input-item-label{ width: 100%; } .input-item.input-item-full .input-item-content{ width: 100%; } .input-item.input-item-full textarea{ padding: 0; height: 150rpx; border: 1rpx solid #e8e8e8; padding: 10rpx; } .input-item.input-item-full .img-upload{ padding: 0; } .input-item.input-item-adaption .input-item-label{ width: auto; margin-right: 20rpx; } button{ font-size: 32rpx; line-height: 72rpx; } textarea{ width: 100%; padding: 20rpx; box-sizing: border-box; } radio-group radio{ position:absolute; left: -999em; } radio-group label{ margin-right: 16rpx; } radio-group label:before{ content: ''; display: inline-block; width: 40rpx; height: 40rpx; vertical-align: -8rpx; margin-right: 4rpx; } .btn-submit{ padding: 20rpx; } .btn-block{ width: 100%; line-height: 88rpx; } .btn-orange{ background: #f7982a; color: #fff; } .btn-gray{ background: #e8e8e8; color: #333; } .search-flex{ display: flex; padding: 20rpx; border-bottom: 1rpx solid #ddd; position: relative; z-index: 13; background: #f9f9f9; /* transform: translateY(-100%); */ margin-top: 0; transition: all 0.3s; } .search-flex.tophide{ margin-top: -117rpx; } .search-flex button{ background: #f7982a; color: #fff; line-height: 72rpx; height: 72rpx; font-size: 30rpx; border-radius: 6rpx; } .search-bar{ flex: 1; display: flex; border: 1rpx solid #e8e8e8; border-radius: 6rpx; } .search-bar input{ flex: 1; height: 72rpx; line-height: 72rpx; padding: 0 10rpx; background: #fff; } .search-extra-btn{ margin-left: 20rpx; white-space: nowrap; } .filter-tab{ display: flex; width: 100%; line-height: 80rpx; border-bottom: 1rpx solid #ddd; position: relative; z-index: 2; background: #fff; } .filter-tab text{ flex: 1; text-align: center; } .filter-tab text:after{ content: ''; display: inline-block; vertical-align: 4rpx; width: 0; height: 0; border-left: 12rpx solid transparent; border-right: 12rpx solid transparent; border-top: 12rpx solid #bbb; margin-left: 8rpx; } .filter-tab text.active{ color: #f7982a; } .filter-tab:not(.sort-tab) text.active:after{ border-top: 0; border-bottom: 12rpx solid #f7982a; } .filter-tab.sort-tab text.active:after{ border-top: 12rpx solid #f7982a; } .filter-panel{ display: flex; background: #f5f5f5; position: absolute; width: 100%; z-index: 13; overflow: hidden; } .filter-panel-left,.filter-panel-right{ flex: 1; line-height: 80rpx; text-align: center; max-height: 480rpx; overflow-y: auto; } .filter-panel-left .active{ background: #fff; } .filter-panel-right .active{ color: #f7982a; } .filter-panel-right{ background: #fff; } .filter-panel-right:empty{ display: none; } .filter-shadow{ position: absolute; width: 100%; top: 0; bottom: 0; z-index: 1; background: rgba(0,0,0,.5); } .gototop{ width: 70rpx; height: 70rpx; position: fixed; bottom: 20rpx; right: 20rpx; transition: all 0.3s; opacity: 0; transform: translateY(200rpx); } .gototop.active{ opacity: 1; transform: translateY(0); } .group{ display: block; width: 100%; } .group-header{ line-height: 70rpx; display: flex; padding: 0 20rpx; background: #f9f9f9; } .group-body{ background: #fff; border-top: 1rpx solid #ddd; border-bottom: 1rpx solid #ddd; } .group-body .input-list{ margin: 0; border: none; } .img-upload{ padding: 20rpx; font-size: 0; overflow: hidden; } .img-upload .img-item, .img-upload .img-add{ width: 100rpx; height: 100rpx; float: left; margin: 10rpx; border: 1rpx solid transparent; } .img-upload .img-add{ border: 1rpx dashed #ddd; } .img-upload .img-item image{ width: 100rpx; height: 100rpx; } .img-upload .img-item{ position: relative; } .img-upload .img-item icon{ position: absolute; right: -12rpx; top: -12rpx; } .container { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: space-between; padding: 200rpx 0; box-sizing: border-box; }
3、js
js是重点,他是一个中间桥梁,获取微信小程序前端的数值和传导ssm的后台。
wx.request这是微信的接口,也就是发起请求。
url: ‘http://localhost:8080/lg/wechat/add',这就是你的项目的地址,也就是controller。
dada就是你要传到后台的数据。
wx.request({ url: 'http://localhost:8080/lg/wechat/add', data: { openid: openid, userpassword: userpassword, name: name, sex: app.sex, tel: tel, email: email, vip: app.vip, },
接下来是完整的js代码(获取表单的数据,这里的js包括获取openid,如果你使用,直接删除就可以)
Page({ data: { industryarr: [], industryindex: 0, statusarr: [], statusindex: 0, jobarr: [], jobindex: 0, }, onLoad: function () { this.fetchData() }, fetchData: function () { this.setData({ industryarr: ["请选择","男", "女"], statusarr: ["是否注册vip会员","是", "否"], }) }, // bindPickerChange1: function (e){ // var sex = e.detail.value; // console.log(sex) // if(sex==1){ // var app=getApp() // app.sex='男' // }else{ // var app = getApp() // app.sex = '女' // } // }, // bindPickerChange2: function (e) { // var vip = e.detail.value; // console.log(vip) // if(vip==1){ // var app=getApp() // app.vip='是' // }else{ // var app = getApp() // app.vip = '否' // } // }, bindPickerChange: function (e) { //下拉选择 const eindex = e.detail.value; //onsole.log(industryarr[e.detail.value]) const name = e.currentTarget.dataset.pickername; console.log(name) // this.setData(Object.assign({},this.data,{name:eindex})) switch (name) { case 'industry': var app=getApp() app.sex = this.data.industryarr[eindex] console.log(app.sex) this.setData({ industryindex: eindex }) case 'status': var app = getApp() app.vip = this.data.statusarr[eindex] console.log(app.vip) this.setData({ statusindex: eindex }) break; case 'job': this.setData({ jobindex: eindex }) break; default: return } }, formSubmit(e) { var name = e.detail.value.name; var tel = e.detail.value.tel; var email = e.detail.value.email; var userpassword = e.detail.value.password; console.log('form发生了submit事件,携带数据为:', name, tel, email) wx.login({ success: function (res) { var code1 = res.code var app = getApp() var appid1 = app.globalData.appid var secret1 = app.globalData.secret console.log('获取的code', code1, appid1, secret1) var ul = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appid1 + '&secret=' + secret1 + '&js_code=' + code1 + '&grant_type=authorization_code' wx.request({ url: ul, method: 'GET', success: function (e) { var openid = e.data.openid console.log('获取登录身份的唯一openid', openid) // wx.setStorageSync('openid', openid) //wx.setStorageSync('name', name) wx.request({ url: 'http://localhost:8080/lg/wechat/add', data: { openid: openid, userpassword: userpassword, name: name, sex: app.sex, tel: tel, email: email, vip: app.vip, }, //method:'POST', success: function (res) { const mess=res.data if (res.data){ console.log("fhgdshxcbxcbxcbcxbxcbxcfj") wx.showToast({ title: '注册成功', icon:'success', }) }else{ wx.showModal({ title: '温馨提示', content: '您已注册过,请不要重复注册', success: function (res) { if (res.confirm) { wx.navigateTo({ url: '../../pages/login/login', }) } else if (res.cancel) { wx.navigateTo({ url: '../../pages/hotel/hotel' }) } } }) } } }) } }) } }) }, })
4、ssm的后端实现
因为小程序的数据格式都是json格式,所以我们的ssm后台也必须是就json的格式,Java要实现json的格式,需要对应的jar包,打下自行下载。
package org.lg.controller; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.lg.entity.user; import org.lg.entity.wcuser; import org.lg.service.roomlistService; import org.lg.service.roomtypesService; import org.lg.service.wcuserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.fasterxml.jackson.databind.util.JSONPObject; import net.sf.json.JSON; import net.sf.json.JSONObject; @Controller @RequestMapping("wechat") public class wechatController { @Autowired public wcuserService wcservice; @Autowired public roomlistService roomlistservice; @Autowired public roomtypesService roomtypesservice; //用户注册 @RequestMapping("add") @ResponseBody public JSONObject adduser(@RequestParam("openid") String openid,@RequestParam("name") String name,@RequestParam("sex") String sex,@RequestParam("tel") String tel, @RequestParam("email") String email,@RequestParam("vip") String vip,HttpServletRequest request, HttpServletResponse response,@RequestParam("userpassword") String userpassword) { System.out.println(openid+name+sex+tel+email+vip); Map<String, String> map = new HashMap<String, String>(); if(openid!=null) { //判断openid在注册的列表中是否存在 wcuser queryopenid = wcservice.queryopenid(openid); //String openid2 = queryopenid.getOpenid(); if(queryopenid!=null) { map.put("msg","您已经注册过,请不要重复注册"); JSONObject json = JSONObject.fromObject(map); return json; }else{ wcservice.adduc(openid,name, sex, tel, email, vip,userpassword); //map.put("status","succ"); map.put("msg","注册成功"); JSONObject json = JSONObject.fromObject(map); return json; } }else { wcuser wcuser1 = wcservice.queryopenid(openid); String openid2 = wcuser1.getOpenid(); if(openid2!=null) { map.put("msg","请不要重复注册"); JSONObject json = JSONObject.fromObject(map); return json; }else { map.put("msg","完善信息"); JSONObject json = JSONObject.fromObject(map); return json; } } } }
5、数据库的那些方法和接口就不写了,重点是小程序的前段和后端的交互。
到此这篇关于微信小程序以ssm做后台开发的实现示例的文章就介绍到这了,更多相关小程序ssm做后台开发内容请搜索奥多码以前的文章或继续浏览下面的相关文章希望大家以后多多支持奥多码!