目录
前言
记录一下项目创建的全流程,以及我在创建的过程中遇到的千奇百怪的问题
提示:以下是本篇文章正文内容,下面案例可供参考
一、环境搭建-spring
1.1 IDEA环境搭建
具体搭建过程,略
1.1.1 创建项目配置
URL: https://start.aliyun.com
1.1.2 选择Springboot版本
说明: 其中选择web包 表示添加spring/springmvc等jar包文件
1.1.3 项目设置
一些基本设置
1.1.4 导入pom.xml文件
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--mybatis依赖包-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!--spring整合mybatis-plus -->
<!-- <dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>-->
<!--jdbc依赖包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--添加lombok的包-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
1.1.4 导入src文件
说明: 下载码云中的后端项目,导入src文件即可
1.1.5项目启动测试
二. 用户登录实现
2.1.1 user表说明
2.1.2 编辑User POJO
1. 编辑父级POJO
2. 编辑User 的POJO
2.2.1 前后端项目说明
- localhost:8000 是VUE UI客户端工具的路径
- localhost:8080 是前端项目的路径
- localhost:8091 是后端项目的路径
2.2.2 前后端调用说明
2.3.1封装SysResult对象
package com.jt.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor //vo 与web前端与后端交互的对象
public class SysResult implements Serializable {
private Integer status; //200成功 201失败
private String msg; //提示信息
private Object data; //服务器返回值数据
public static SysResult fail(){
return new SysResult(201,"业务调用失败!!",null);
}
public static SysResult success(){
return new SysResult(200,"业务调用成功!!",null);
}
public static SysResult success(Object data){
return new SysResult(200,"业务调用成功!!",data);
}
public static SysResult success(String msg,Object data){
return new SysResult(200,msg,data);
}
}
2.3.2 业务接口文档
- 请求路径: /user/login
- 请求方式: POST
- 请求参数
参数名称 | 参数说明 | 备注 |
---|---|---|
username | 用户名 | 不能为空 |
password | 密码 | 不能为空 |
- 响应数据 SysResult对象
参数名称 | 参数说明 | 备注 |
---|---|---|
status | 状态信息 | 200表示服务器请求成功 201表示服务器异常 |
msg | 服务器返回的提示信息 | 可以为null |
data | 服务器返回的业务数据 | 返回密钥token信息 |
返回值格式如下:
{"status":200,"msg":"服务器调用成功!","data":"1e893a97634847b3a8b499b173bea620"}
2.3.3 MD5加密算法
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致.
核心做法: 限定次数!!!
2.3.4 编辑UserController
package com.jt.controller;
import com.jt.pojo.User;
import com.jt.service.UserService;
import com.jt.vo.PageResult;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.sql.SQLException;
import java.util.List;
@RestController
@RequestMapping("/user")
@CrossOrigin //前后端进行跨域操作
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/findAll")
public List<User> findAll(){
return userService.findAll();
}
/**
* 业务需求: 实现用户登录操作
* URL地址: /user/login
* 请求类型: post
* 参数: username/password json串
* 返回值: SysResult对象(token密钥)
*/
@PostMapping("/login")
public SysResult login(@RequestBody User user){
String token = userService.login(user);
//判断token是否为null
if(token == null){
return SysResult.fail(); //表示用户登录失败!!
}
return SysResult.success(token);//表示用户登录成功!!
}
}
2.3.5 编辑UserService
1. 编辑接口
public interface UserService {
List<User> findAll();
String login(User user);
}
2. 编辑实现类
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAll() {
return userMapper.findAll();
}
/**
* 业务思维能力: 用户登录操作
* 登录业务逻辑:
* 1.将用户的密码进行加密处理
* 2.根据用户名和密码进行数据库查询
* 查到了: 用户名和密码正确 返回token密钥
* 没查到: 用户名和密码错误 返回null
*
* @param user
* @return
*/
@Override
public String login(User user) {
//1.将密码加密处理
String password = user.getPassword();
String md5Pass = DigestUtils.md5DigestAsHex(password.getBytes());
user.setPassword(md5Pass);
//2.根据用户名和密码查询数据库
User userDB = userMapper.findUserByUP(user);
if(userDB == null){
//用户名或者密码错误
return null;
}
//密钥:该密钥是用户登录的唯一的标识符,特点:独一无二
String token = UUID.randomUUID().toString()
.replace("-", "");
return token;
}
}
2.3.6 编辑UserMapper
1. 编辑Mapper接口
public interface UserMapper {
List<User> findAll();
User findUserByUP(User user);
}
2. 编辑xml映射文件
<select id="findUserByUP" resultType="User">
select * from user
where username=#{username}
and password=#{password}
</select>
2.3.7 关于前后端报错说明
1. 检查请求路径
2. 检查请求参数
3. 检查响应结果
2.4 关于前端路由说明
2.5 左侧菜单列表展现
2.5.1 关于rights表说明
说明: 通过parent_id 控制父子关系.