工具:STS
后端结构:
开发步骤:
1.创建一个Springboot项目,不要引入任何东西,具体创建步骤还请去springboot官网,先不要引入其他不需要的东西,我的pom文件如下:
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.2.7.RELEASE
kwgc
comming2
0.0.1-SNAPSHOT
comming2
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.springframework.boot
spring-boot-maven-plugin
2.接着创建如下类,名字随便起哈
3.具体代码
HttpConfigure 这个暂时不需要,去掉
LoginController
package com.kwgc.comming.controller;
import javax.validation.Valid;
import com.kwgc.comming.pojo.vo.VueLoginInfoVo;
import com.kwgc.comming.result.Result;
import com.kwgc.comming.result.ResultFactory;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.Objects;
@Controller
public class LoginController {
/**
* 登录控制器,前后端分离用的不同协议和端口,所以需要加入@CrossOrigin支持跨域。
* 给VueLoginInfoVo对象加入@Valid注解,并在参数中加入BindingResult来获取错误信息。
* 在逻辑处理中我们判断BindingResult知否含有错误信息,如果有错误信息,则直接返回错误信息。
*/
@CrossOrigin
@RequestMapping(value = "/api/login", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
@ResponseBody
public Result login(@Valid @RequestBody VueLoginInfoVo loginInfoVo, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
String message = String.format("登陆失败,详细信息[%s]。", bindingResult.getFieldError().getDefaultMessage());
return ResultFactory.buildFailResult(message);
}
if (!Objects.equals("javalsj", loginInfoVo.getUsername()) || !Objects.equals("123456", loginInfoVo.getPassword())) {
String message = String.format("登陆失败,详细信息[用户名、密码信息不正确]。");
return ResultFactory.buildFailResult(message);
}
return ResultFactory.buildSuccessResult("登陆成功。");
}
}
VueLoginInfoVo
package com.kwgc.comming.pojo.vo;
import javax.validation.constraints.NotNull;
public class VueLoginInfoVo {
@NotNull(message="用户名不允许为空")
private String username;
@NotNull(message="密码不允许为空")
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Result
package com.kwgc.comming.result;
public class Result {
/**
* 响应状态码
*/
private int code;
/**
* 响应提示信息
*/
private String message;
/**
* 响应结果对象
*/
private Object data;
public Result(int code, String message, Object data) {
this.code = code;
this.message = message;
this.data = data;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
ResultCode
package com.kwgc.comming.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
package com.kwgc.comming.result;
public class ResultFactory {
public static Result buildSuccessResult(Object data) {
return buidResult(ResultCode.SUCCESS, "成功", data);
}
public static Result buildFailResult(String message) {
return buidResult(ResultCode.FAIL, message, null);
}
public static Result buidResult(ResultCode resultCode, String message, Object data) {
return buidResult(resultCode.code, message, data);
}
public static Result buidResult(int resultCode, String message, Object data) {
return new Result(resultCode, message, data);
}
}
总结
字数限制,还有一部分在下篇文章,如果有任何问题可以在底下留言,如果大家都不能成功需要源码,可以在github上提供,因为暂时不知道反馈情况,所以还是看留言的多少来定吧!