使用springboot、mybatisplus、vue、axios做一个前后端分离的注册登录项目,并写出代码和解释
时间: 2023-11-03 09:04:50 浏览: 37
好的,非常感谢您的问题。以下是一个代码实现示例和详细的解释:
前端采用Vue.js框架,使用Axios库与后端Spring Boot框架进行通信。后端数据持久化采用MyBatis-Plus插件。
前端代码:
<template>
<div class="login-container">
<h2>用户登录</h2>
<form>
<div class="form-group">
<label for="username">用户名:</label>
<input type="text" name="username" v-model="username" />
</div>
<div class="form-group">
<label for="password">密码:</label>
<input type="password" name="password" v-model="password" />
</div>
<button type="button" @click="login()">登录</button>
</form>
</div>
</template>
<script>
import axios from "axios";
export default {
name: "Login",
data() {
return {
username: "",
password: ""
};
},
methods: {
login() {
axios
.post("/api/login", {
username: this.username,
password: this.password
})
.then(response => {
console.log(response.data);
alert("登录成功!");
})
.catch(error => {
console.log(error);
alert("登录失败!");
});
}
}
};
</script>
后端代码:
@RestController
@RequestMapping("/api")
public class UserController {
@Autowired
private IUserService userService;
@PostMapping("/login")
@ResponseBody
public ResponseBody login(@RequestBody UserParams params) {
User user = userService.findUserByUsernameAndPassword(
params.getUsername(),
params.getPassword()
);
if (user == null) {
return ResponseBody.error("用户名或密码错误!");
} else {
return ResponseBody.success(user);
}
}
}
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User>
implements IUserService {
@Autowired
private UserMapper userMapper;
@Override
public User findUserByUsernameAndPassword(
String username,
String password
) {
QueryWrapper<User> queryWrapper =
new QueryWrapper<User>().eq("username", username).eq("password", password);
return userMapper.selectOne(queryWrapper);
}
}
以上代码实现了一个后端API,它可以验证用户的用户名和密码并返回用户信息(如果验证通过)。在Vue.js前端页面中,我们使用Axios发送请求,然后根据API响应来判断登录是否成功。此外,我们使用MyBatis-Plus插件对用户数据进行持久化。