spring boot + vue 前后分离实现登录功能(三)
Spring boot 后台
github 地址 SpringBoot-book-vue-demo
使用tk.mytabis 简化mybatis 开发
使用 durid 连接池 连接Mysql
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.lick</groupId>
<artifactId>vue_demo</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>vue_demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<mysql.version>8.0.15</mysql.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- Druid 数据库连接 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.4.4</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
实体类 TbUser.java
package com.lick.vue_demo.domain;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
@Table(name = "tb_user")
public class TbUser {
/**
* 用户ID
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
/**
* 登录名
*/
@NotNull(message = "用户名不能为空")
private String username;
/**
* 登录密码
*/
@NotNull(message = "密码不能为空")
private String password;
/**
* 手机号
*/
private String phone;
/**
* 获取用户ID
*
* @return id - 用户ID
*/
public Integer getId() {
return id;
}
/**
* 设置用户ID
*
* @param id 用户ID
*/
public void setId(Integer id) {
this.id = id;
}
/**
* 获取登录名
*
* @return username - 登录名
*/
public String getUsername() {
return username;
}
/**
* 设置登录名
*
* @param username 登录名
*/
public void setUsername(String username) {
this.username = username;
}
/**
* 获取登录密码
*
* @return password - 登录密码
*/
public String getPassword() {
return password;
}
/**
* 设置登录密码
*
* @param password 登录密码
*/
public void setPassword(String password) {
this.password = password;
}
/**
* 获取手机号
*
* @return phone - 手机号
*/
public String getPhone() {
return phone;
}
/**
* 设置手机号
*
* @param phone 手机号
*/
public void setPhone(String phone) {
this.phone = phone;
}
}
登录控制层 LoginController.java
package com.lick.vue_demo.controller;
import com.lick.vue_demo.domain.TbUser;
import com.lick.vue_demo.mapper.TbUserMapper;
import com.lick.vue_demo.result.AjaxResult;
import com.lick.vue_demo.result.ResultFactory;
import com.lick.vue_demo.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import tk.mybatis.mapper.entity.Example;
import javax.validation.Valid;
@RestController
@CrossOrigin
public class LoginController {
@Autowired
private TbUserMapper tbUserMapper;
@RequestMapping(value = "/api/login", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
public AjaxResult login(@Valid @RequestBody TbUser tbUser, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
String message = String.format("登陆失败,详细信息[%s]。", bindingResult.getFieldError().getDefaultMessage());
return ResultFactory.buildFailResult(message);
}
Example example = new Example(TbUser.class);
example.createCriteria().andEqualTo("username",tbUser.getUsername());
TbUser tbUser1 = tbUserMapper.selectOneByExample(example);
if(StringUtils.isNotNull(tbUser1)) {
if ( !tbUser.getPassword().equals(tbUser1.getPassword())) {
String message = String.format("登陆失败,详细信息[密码不正确]。");
return ResultFactory.buildFailResult(message);
}else {
return ResultFactory.buildSuccessResult(tbUser1);
}
}else {
String message = String.format("登陆失败,详细信息[用户名不正确]。");
return ResultFactory.buildFailResult(message);
}
}
}
返回值实体类 Result.java
package com.lick.vue_demo.result;
/**
* 通用返回值实例
*/
public class AjaxResult {
/**
* 响应状态码
*/
private int code;
/**
* 响应状态消息
*/
private String msg;
/**
* 响应结果对象
*/
private Object object;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getObject() {
return object;
}
public void setObject(Object object) {
this.object = object;
}
AjaxResult (int code,String msg,Object data) {
this.code = code;
this.msg = msg;
this.object = data;
}
}
代码编号 ResultCode.java
package com.lick.vue_demo.result;
public enum ResultCode {
/**
* 成功
*/
SUCCESS(200),
/**
* 失败
*/
FAIL(400),
/**
* 未认证(签名错误)
*/
UNAUTHORIZED(401),
/**
* 接口不存在
*/
NOT_FOUND(404),
/**
* 服务器内部错误
*/
INTERNAL_SERVER_ERROR(500);
public int code;
ResultCode(int code) {
this.code = code;
}
}
响应结果生产工厂 ResultFactory.java
package com.lick.vue_demo.result;
/**
* @description 响应结果生成工厂类
*/
public class ResultFactory {
public static AjaxResult buildSuccessResult(Object data) {
return buildResult(ResultCode.SUCCESS, "成功", data);
}
public static AjaxResult buildFailResult(String message) {
return buildResult(ResultCode.FAIL, message, null);
}
public static AjaxResult buildResult(ResultCode resultCode, String message, Object data) {
return buildResult(resultCode.code, message, data);
}
public static AjaxResult buildResult(int resultCode, String message, Object data) {
return new AjaxResult(resultCode, message, data);
}
}
spring boot + vue 前后分离实现登录功能(三)的更多相关文章
- spring boot + vue 前后分离实现登录功能(二)
安装 axios 进行路由转发 npm install axios --save-dev 或者 cnpm install axios --save-dev 修改 Main.js 新增 var axio ...
- spring boot + vue 前后分离实现登录功能(一)
使用webpack 打包初始化项目 vue init webpack book-vue 进入工程目录 cd hello-vue 安装 vue-router npm install vue-router ...
- Spring Boot +Vue 项目实战笔记(三):数据库的引入
这一篇的主要内容是引入数据库并实现通过数据库验证用户名与密码. 一.引入数据库 之前说过数据库的采用是 MySQL,算是比较主流的选择,从性能和体量等方面都比较优秀,当然也有一些弊端,但数据库不是我们 ...
- 喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了
折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...
- 两个开源的 Spring Boot + Vue 前后端分离项目
折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...
- 一个实际的案例介绍Spring Boot + Vue 前后端分离
介绍 最近在工作中做个新项目,后端选用Spring Boot,前端选用Vue技术.众所周知现在开发都是前后端分离,本文就将介绍一种前后端分离方式. 常规的开发方式 采用Spring Boot 开发项目 ...
- 前后端分离,我怎么就选择了 Spring Boot + Vue 技术栈?
前两天又有小伙伴私信松哥,问题还是职业规划,Java 技术栈路线这种,实际上对于这一类问题我经常不太敢回答,每个人的情况都不太一样,而小伙伴也很少详细介绍自己的情况,大都是一两句话就把问题抛出来了,啥 ...
- spring boot+vue实现H5聊天室客服功能
spring boot+vue实现H5聊天室客服功能 h5效果图 vue效果图 功能实现 spring boot + webSocket 实现 官方地址 https://docs.spring.io/ ...
- Spring Boot + Vue 跨域请求问题
使用Spring Boot + Vue 做前后端分离项目搭建,实现登录时,出现跨域请求 Access to XMLHttpRequest at 'http://localhost/open/login ...
随机推荐
- 如何基于Restful ABAP Programming模型开发并部署一个支持增删改查的Fiori应用
Jerry之前的文章30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用 发布之后,有朋友问我,"没错, 我是在你的文章里看到了Fiori应用的 ...
- vue-element-admin 前端框架 使用感触
感触: 不搜不知道,一搜吓一跳!经常百度很重要. 美国有gitgub:https://github.com/search?q=vue-element-admin 中国有码云:https://gitee ...
- python相关软件安装
一. python 3 安装 Python官网 在官网下载对应系统的安装包 安装步骤 注意:有的时候安装完后会出现"Disable path length limit"的按钮,如果 ...
- MyBatis之Oracle、Mysql批量插入
Mybatis中Dao层 public interface UsersMapper { public void insertEntitys(List<UserEntity> users); ...
- Linux kernel启动选项(参数)
在Linux中,给kernel传递参数以控制其行为总共有三种方法: 1.build kernel之时的各个configuration选项. 2.当kernel启动之时,可以参数在kernel被GRUB ...
- TODO的作用及如何使用
https://blog.csdn.net/jerry11112/article/details/82966142 文章标题:[C#]TODO的作用 可以方便后续找到要做的功能点.
- python蟒蛇绘制的代码以及目前还不知道怎么用的RGB颜色对照表
#PythonDraw.py import turtle#引入海龟库 turtle.setup(650,350,200,200)#确定窗口大小,长650,高350,确定窗口位置,距离电脑左上角200, ...
- jmeter生成html报告详解
Jmeter Dashboard详解 结果面板主要分为Dashboard和Charts两部分.Dashboard对信息进行汇总展示,Charts展示更多详细指标数据. Dashboard Test a ...
- keras模块之-优化器(optimizers)--笔记
本笔记由博客园-圆柱模板 博主整理笔记发布,转载需注明,谢谢合作! 优化器是调整每个节点权重的方法,如: model = Sequential() model.add(Dense(64, init=' ...
- Sql中的left函数、right函数
DB2中left()函数和right()函数对应oracle中的substr()函数 DB2 LEFT.RIGHT函数 语法:LEFT(ARG,LENGTH).RIGHT(ARG,LENGTH) LE ...