目录

一、小程序交互

前端:

1、先在登陆界面中编写代码

2、在前端中编写js代码

后端:

1、先导入依赖:

2、定义好配置文件

3、编写好实体类

4、将帮助类进行配置

5、编写mapper类

6、定义service层以及对应的实现接口层

7、最后定义controller层

8、进行测试


一、小程序交互

步骤:

前端:

1、先在登陆界面中编写代码

login.wxml:

<view><image src="/png/b.jpg" mode="scaleToFill"/><view><input placeholder="请输入用户名" maxlength="13" bind:input="changeValue" data-label="account"/></view><view><input placeholder="请输入密码" password="{{true}}" bind:input="changeValue" maxlength="16" data-label="password"/></view><view><button bindtap="userLogin" type="primary">登录</button></view>
</view>

2、在前端中编写js代码

import {request} from "../../request/index";Page({data: {user: {account: "",password: ""}},changeValue(e) {let property = "user." + e.target.dataset.labellet value = e.detail.valuethis.setData({[property]: value})},userLogin() {wx.showLoading({title: "正在努力加载中",mask: false})request("/user/login", this.data.user).then(res => {console.log(res)wx.hideLoading()let icon = "error"if (res.data.code === 200) {icon = "success"}wx.showToast({title: res.data.message,icon})}).catch(res => {console.error(res)wx.hideLoading()})}
})

后端:

1、先导入依赖:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>2.1.5</version></dependency><dependency><groupId>javax.persistence</groupId><artifactId>persistence-api</artifactId><version>1.0</version></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.4.1</version><configuration><mainClass>com.zking.mini_program.MiniProgramApplication</mainClass></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>

2、定义好配置文件

server:port: 8080
spring:application:name: mini_programdatasource:driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: passwordurl: jdbc:mysql://127.0.0.1/wechat?useSSL=false&serverTimezone=Asia/Shanghai&useEncoding=utf8mb4

3、编写好实体类

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDateTime;@Data
@Table(name = "t_user")
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@SuppressWarnings("all")
public class User implements Serializable {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String account;private String password;@Column(name = "modify_time")@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime modifyTime;@Column(name = "create_time")@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")private LocalDateTime createTime;}

4、将帮助类进行配置

1、JsonResponseParse响应增强类,配合{@link JsonResponseResult}实现自定义快速返回
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;@SuppressWarnings("all")
@RestControllerAdvice
@Slf4j
/*** 响应增强类,配合{@link JsonResponseResult}实现自定义快速返回* beforeBodyWrite在{@link org.springframework.web.bind.annotation.ResponseBody}完成return之后并在消息解析器之前执行*/
public class JsonResponseParse implements ResponseBodyAdvice {@Override/*** 返回值决定他是否需要进入beforeBodyWrite*/public boolean supports(MethodParameter methodParameter, Class aClass) {/*methodParameter是当前执行返回响应的方法,判断在该类上是否存在对应的注解*/return methodParameter.getMethod().isAnnotationPresent(JsonResponseResult.class);}@Override/*** 用于修改返回前的值*/public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {if (o == null) {return ResponseResult.success();}if (o instanceof Integer) {return ResponseResult.failure(ResponseResultCode.queryCode((Integer) o));}if (o instanceof ResponseResultCode) {return ResponseResult.failure((ResponseResultCode) o);}if (o instanceof ResponseResult) {return o;}return ResponseResult.success(o);}}

2、json响应结果类

import java.lang.annotation.*;@SuppressWarnings("all")
@Retention(value = RetentionPolicy.RUNTIME)
@Documented
@Target({ElementType.METHOD})
/*** 此注解用于配合{@link JsonResponseParse}使用*/
public @interface JsonResponseResult {}

3、响应结果类

import lombok.Data;import java.io.Serializable;@Data
@SuppressWarnings("all")
public class ResponseResult<T> implements Serializable {private Integer code;private String message;private T data;private Long total;/*** 私有构造, 只允许通过static调用构造** @param resultCode 结果枚举* @param data       响应数据*/private ResponseResult(ResponseResultCode resultCode, T data) {this.code = resultCode.getCode();this.message = resultCode.getMessage();this.data = data;}/*** 私有构造, 只允许通过static调用构造** @param resultCode 结果枚举* @param data       响应数据* @param total      数据总大小(用于分页请求)*/private ResponseResult(ResponseResultCode resultCode, Long total, T data) {this.code = resultCode.getCode();this.message = resultCode.getMessage();this.data = data;this.total = total;}/*** 成功调用返回的结果(无数据携带)*/public static ResponseResult<?> success() {return success(null);}/*** 成功调用返回的结果(数据携带)** @param data 携带的数据*/public static <T> ResponseResult success(T data) {return new ResponseResult(ResponseResultCode.SUCCESS, data);}/*** 成功调用返回的结果(分页使用)** @param data  携带的数据* @param total 数据总条数*/public static <T> ResponseResult success(T data, Long total) {return new ResponseResult(ResponseResultCode.SUCCESS, total, data);}/*** 失败调用返回的结果(数据携带)** @param resultCode 状态枚举* @param data       携带的数据*/public static <T> ResponseResult failure(ResponseResultCode resultCode, T data) {return new ResponseResult(resultCode, data);}/*** 失败调用返回的结果(无数据携带)** @param resultCode 状态枚举*/public static ResponseResult failure(ResponseResultCode resultCode) {return failure(resultCode, null);}}

4、响应编码类:


import java.io.Serializable;@SuppressWarnings("all")
public enum ResponseResultCode implements Serializable {/* 正常状态 */SUCCESS(200, "成功"),FAILURE(300, "失败"),UNKNOWN(400, "未知错误"),/*** 用户code范围: 1000;*/USER_ACCOUNT_NOT_FIND(1001, "用户名不存在"),USER_ACCOUNT_DISABLED(1002, "该用户已被禁用"),USER_PASSWORD_NOT_MATCH(1003, "该用户密码不一致"),USER_PERMISSION_ERROR(1004, "该用户不具备访问权限"),USER_STATE_OFF_LINE(1005, "该用户未登录"),USER_CREDENTIAL_NOT_BE_EMPTY(1006, "用户的登录信息不能为空值"),USER_ACCOUNT_NOT_MOBLIE(1007, "该用户登录信息格式不符合"),USER_LOGIN_ERROR(1008, "登录失败"),/*** 其它异常: 4000;*/TRIKET_ERROR(4001, "triket失效,请重新登录"),/*** 商品异常: 6000;*/GOODS_ADD_ERROR(6001, "商品添加失败"),GOODS_EDIT_ERROR(6002, "商品修改失败"),GOODS_REMOVE_ERROR(6003, "商品删除失败");/*响应状态码*/private final Integer code;/*响应状态信息*/private final String message;/*此构造无法调用,用来定义常量枚举使用*/ResponseResultCode(Integer code, String message) {this.code = code;this.message = message;}/*** 此方法用于配合{@link JsonResponseParse}实现快速返回json类型响应码* 需要结合{@link JsonResponseResult}注解使用** @param code 响应码(对应枚举中的code,如无法找到则返回`UNKNOWN`)*/public static ResponseResultCode queryCode(Integer code) {for (ResponseResultCode value : values()) {if (code.equals(value.code)) {return value;}}return UNKNOWN;}public Integer getCode() {return code;}public String getMessage() {return message;}}

 5、异常辅助类:


import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestControllerAdvice;@SuppressWarnings("all")
@Slf4j
@RestControllerAdvice
public class ThrowableAdvice {/**@JsonResponseResult@ExceptionHandler(value = {BusinessException.class})public ResponseResultCode globalBusinessException(Model m, Exception e) {log.error(e.toString());return ((BusinessException) e).getResponseResultCode();}@JsonResponseResult@ExceptionHandler(value = {BindException.class})public ResponseResultCode globalBindException(Model m, Exception e) {log.error(e.toString());BindException error = (BindException) e;return (ResponseResultCode) error.getFieldError().getArguments()[1];}@JsonResponseResult@ExceptionHandler(value = {Throwable.class})public ResponseResultCode globalException(Model m, Exception e) {log.error(e.toString());return ResponseResultCode.UNKNOWN;}**/}

5、编写mapper类

@SuppressWarnings("all")
@Repository
public interface UserMapper extends Mapper<User> {}

6、定义service层以及对应的实现接口层

service:

@SuppressWarnings("all")
public interface IUserService {ResponseResult<?> findUserByAccount(User user);}

其中ResponseResult<?>响应结果类,中的?是可以随便放什么类的

E:一个集合的元素

K:键

V:值

T:类

7、最后定义controller层

@SuppressWarnings("all")
@RequestMapping("/user")
@RestController
public class UserController {@Autowiredprivate IUserService userService;@RequestMapping("/login")public ResponseResult<?> login(@RequestBody User user) {return userService.findUserByAccount(user);}}

8、进行测试

 输入账号和密码进行登录

 成功!

输入错误密码就会显示和该用户密码不统一

今天的知识就分享到这了,希望能够帮助到你!

微信小程序开发之微信小程序交互相关推荐

  1. 微信小程序开发实现微信支付

    微信支付是时下最流行的交易支付方法之一,潜移默化推动着无现今社会的变革.小程序作为微信上的轻应用,同时也开放微信支付的接口,可以通过转账,扫二维码支付.要完成一次具体的订单支付需要完整的支付流程,具体 ...

  2. 微信小程序开发(一) 微信登录流程

    文/YXJ 地址:http://blog.csdn.net/sk719887916/article/details/53761107 最近在研究微信小程序开发,非常有意思的一个东西.花了一点时间写了一 ...

  3. 小程序开发教程、小程序资讯、小程序demo、小程序实战等合揖(7月19日更新)

    7月19日微信小程序联盟更新的小程序开发教程.小程序资讯.小程序demo.小程序实战内容合揖如下: 小程序资讯与小程序教程 一张图带你看懂小程序发展蓝皮书 2017-07-19 微信小程序开发问答&l ...

  4. 小程序开发教程、小程序资讯、小程序demo、小程序实战等合揖(7月19日更新)...

    2019独角兽企业重金招聘Python工程师标准>>> 7月19日微信小程序联盟更新的小程序开发教程.小程序资讯.小程序demo.小程序实战内容合揖如下: #小程序资讯与小程序教程 ...

  5. 微信公众平台开发[3] —— 微信公众号支付功能(PHP)

    直言无讳,我就是一个初涉微信开发的小白,写这篇博客的原因:一是为了给自己做下备忘记录,以便以后能回忆这条程序猿的坎坷路:二是希望能帮助到同是自学开发的小白们:三是对那些不屑一顾于我等尘埃的大牛们的控诉 ...

  6. 视频教程-基于python的微信公众号开发教程-微信开发

    基于python的微信公众号开发教程 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试(软考)--"信 ...

  7. 微信公众 mysql回复图片_微信公众号开发之微信公共平台消息回复类实例

    本文实例讲述了微信公众号开发之微信公共平台消息回复类.分享给大家供大家参考.具体如下: 微信公众号开发代码我在网上看到了有不少,其实都是大同小义了都是参考官方给出的demo文件进行修改的,这里就给各位 ...

  8. 视频教程-微信公众平台开发入门-微信开发

    微信公众平台开发入门 订阅后,请点击此处观看大牛全套视频课程:课程播放页链接 价格可能因活动略有浮动 刘运强 ¥39.00 立即订阅视频课 订阅后:请点击此处观看视频课程 视频教程-微信公众平台开发入 ...

  9. 微信公众平台开发[2] —— 微信端分享功能

    背景 初次尝试微信公众号的开发,对于学习方法的探索都是来源于网上的博客.问答,对于参差不齐的信息,自己也是有苦说不出,抽出一点时间写点文章,既是对自己的学习总结,也希望给予同是菜鸟的小白一点帮助. 今 ...

  10. 微信公众号开发之微信公众平台与公众号第三方平台区别

    微信公众号开发分为微信公众平台和公众号第三方平台. 首先需要一个认证服务号,然后在设置,基本配置里面配置公众号开发信息和服务器配置. 这是我们会得到开发者ID(AppID),开发者密码(AppSecr ...

最新文章

  1. 17、mybatis两个内置参数
  2. 操作方法:具有多个Mongo存储库和Kotlin的Spring Boot 2 Web应用程序
  3. C++网络编程快速入门(二):Linux下使用select演示简单服务端程序
  4. 【浙江大学PAT真题练习乙级】1008 数组元素循环右移问题 (20分)真题解析
  5. MapReduce计算模型(二)
  6. 将php中stat()得到的文件权限转成Linux形式
  7. 2010年“最具全球竞争力中国公司20强”榜单:
  8. Atitit rpc之道 attilax著 艾龙 著 1. 远程过程调用协议 1 2. 历史 2 2.1. RPC的早期发展 3 3. RPC这种编程范式存在的三大问题以及这些问题 5 3.1.
  9. 细说PHP电子书pdf下载
  10. JAVA多线程设计模式篇 4、Guarded Suspension 模式——等我准备好了再来
  11. 前端批量生成二维码并打包下载
  12. 【干货】SSM,Jquery, Bootstrap从零打造一个论坛系统
  13. Windows——就近共享
  14. 双层循环遍历 减少时间复杂度
  15. linux上php读取和创建word文档
  16. 6.mtk 带升压ic的insell屏点亮
  17. 谈论 ModSecurity 和新的 Coraza WAF
  18. 怎样用js实时获取浏览器的内存占用情况?
  19. linux环境基本操作,Linux系统基本操作
  20. 院内决赛总结 and 海大朗讯杯总结

热门文章

  1. ASIO音频驱动开发指南 2.0
  2. CFA2019notes的PDF版本,热乎乎的百度网盘分享
  3. lavas自动创建目录及说明
  4. linux下qt实现vlc视频播放器,Qt编写视频播放器(vlc内核)
  5. 炒币之止损止盈控制的艺术、投资入门
  6. pycharm搜索不到安装包
  7. 微信小程序地图开发电子围栏与后端联调
  8. 指派问题程序c语言,指派问题lingo程序样例
  9. mac版docker配置加速
  10. GSCC呼叫中心系统