当前位置:   article > 正文

vue+springboot(前后端分离项目)_vue+springboot前后端分离项目

vue+springboot前后端分离项目

目录

JAVA后端项目

一、创建项目

1、使用aliyun的server url

2、初始化项目结构

3、添加依赖

4、创建文件夹

5、把mapper类交给spring容器管理

5.1、方法1

5.2、方法2

6、在yaml文件中配置数据库信息

7、在yaml文件中配置mapper的xml文件的路径

8、配置mapper的xml文件

二、编写程序

1、登录功能

1.1、编写UserController

1.2、编写UserserviceImpl

1.3、编写接口Userservice

1.4、编写mapper

1.5、编写xml

1.6、前端发请求


JAVA后端项目

一、创建项目

1、使用aliyun的server url
https://start.aliyun.com
2、初始化项目结构

3、添加依赖

4、创建文件夹

5、把mapper类交给spring容器管理
5.1、方法1

在每一个mapper类上加上注解@Mapper

  1. @Mapper
  2. public class UserMapper {
  3. }

缺点:每个mapper文件都得添加

5.2、方法2

在主程序启动类上添加扫描所有mapper

@MapperScan("com.example.goods_admin.mapper")

注意:路径可以是指定文件,或者文件夹。

6、在yaml文件中配置数据库信息
  1. server:
  2. port: 9090
  3. spring:
  4. datasource:
  5.   url: jdbc:mysql://localhost:3306/goods_admin?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
  6.   username: root
  7.   password: root
  8.   driverClassName: com.mysql.cj.jdbc.Driver
7、在yaml文件中配置mapper的xml文件的路径
  1. mybatis:
  2. mapper-locations: classpath:mapper/*.xml //classpath是resources文件夹

8、配置mapper的xml文件
  1. <!--XML头部(固定的)-->
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.example.goods_admin.mapper.UserMapper">
  5. <!--   结果映射:数据库字段与实体类字段的映射关系-->
  6.    <resultMap id="BaseResultMap" type="com.example.goods_admin.entity.User">
  7.        <id column="id" jdbcType="VARCHAR" property="id" />
  8.        <result column="userId" jdbcType="VARCHAR" property="userId" />
  9.        <result column="userName" jdbcType="VARCHAR" property="userName" />
  10.        <result column="password" jdbcType="VARCHAR" property="password" />
  11.        <result column="sex" jdbcType="TINYINT" property="sex" />
  12.        <result column="age" jdbcType="INTEGER" property="age" />
  13.        <result column="location" jdbcType="VARCHAR" property="location" />
  14.    </resultMap>
  15. </mapper>

二、编写程序

user实体类

  1. package com.example.goods_admin.entity;
  2. public class User {
  3. private String id;
  4. private String userId;
  5. private String userName;
  6. private String password;
  7. private String sex;
  8. private int age;
  9. private String location;
  10. //无参构造函数
  11. public User() {
  12. }
  13. //构造函数:用来实例化对象的
  14. //有参构造函数
  15. public User(String id, String userId, String userName, String password, String sex, int age, String location) {
  16. this.id = id;
  17. this.userId = userId;
  18. this.userName = userName;
  19. this.password = password;
  20. this.sex = sex;
  21. this.age = age;
  22. this.location = location;
  23. }
  24. public String getId() {
  25. return id;
  26. }
  27. public void setId(String id) {
  28. this.id = id;
  29. }
  30. public String getUserId() {
  31. return userId;
  32. }
  33. public void setUserId(String userId) {
  34. this.userId = userId;
  35. }
  36. public String getUserName() {
  37. return userName;
  38. }
  39. public void setUserName(String userName) {
  40. this.userName = userName;
  41. }
  42. public String getPassword() {
  43. return password;
  44. }
  45. public void setPassword(String password) {
  46. this.password = password;
  47. }
  48. public String getSex() {
  49. return sex;
  50. }
  51. public void setSex(String sex) {
  52. this.sex = sex;
  53. }
  54. public int getAge() {
  55. return age;
  56. }
  57. public void setAge(int age) {
  58. this.age = age;
  59. }
  60. public String getLocation() {
  61. return location;
  62. }
  63. public void setLocation(String location) {
  64. this.location = location;
  65. }
  66. }

1、登录功能

1.1、编写UserController
  1. @RestController
  2. //@RequestMapping用于将 HTTP 请求映射到控制器方法上
  3. @RequestMapping("/user")
  4. public class UserController {
  5.    @Autowired
  6.    Userservice userservice;
  7.    /*
  8.    **登录
  9.     */
  10.    @PostMapping("/login")
  11.    public Result login(@RequestBody User user){
  12.    return userservice.login(user);
  13.   }
  14. }
1.2、编写UserserviceImpl
  1. @Service
  2. public class UserserviceImpl implements Userservice {
  3.    @Autowired
  4.    UserMapper userMapper;
  5.    @Override
  6.    public Result login(User user) {
  7.        /**
  8.         * 1、先根据账号查询,是否账号存在
  9.         * 2、不存在,显示该账户未注册,先注册再登录
  10.         * 3、存在,查询该账户的密码是不是数据库中的密码
  11.         * 4、如果传入的密码和数据库的密码不一样,说明密码错误,请重新输入密码
  12.         * 5、如果传入的密码和数据库的密码一样,说明账号密码都正确,显示登录成功,跳转到首页
  13.         */
  14.        //1、根据账号查询,是否账号存在
  15.        User user2 = userMapper.seleteUserByUserId(user.getUserId());
  16.        //2、不存在,显示该账户未注册,先注册再登录
  17.        if (user2 == null) {
  18.            return Result.failed("用户不存在,请注册");
  19.       } else {
  20.            //3、存在,查询该账户的密码是不是数据库中的密码
  21.            User user3 = userMapper.seleteUserByPassword(user);
  22.            if (user3 != null && user3.getPassword().equals(user.getPassword())) {
  23.                return Result.succeed("登录成功");
  24.           } else {
  25.                return Result.failed("密码错误");
  26.           }
  27.       }
  28.   }
  29.    
  30. }
1.3、编写接口Userservice
  1. public interface Userservice {
  2.    Result login(User user);
  3. }
1.4、编写mapper
  1. @Mapper
  2. public interface UserMapper {
  3.    User seleteUserByUserId(String userId);
  4.    void login(User user);
  5.  
  6. }
1.5、编写xml
  1. <select id="seleteUserByUserId" resultType="com.example.goods_admin.entity.User">
  2.       select * from user where userId=#{userId}
  3.    </select>
  4.    <select id="login">
  5.       select * from user where userId=#{userId}
  6.    </select>
1.6、前端发请求
  1.    login() {
  2.            if (this.userId === '') {
  3.                this.$message.error("请输入账号");
  4.                return;
  5.           } else if (this.password === '') {
  6.                this.$message.error("请输入密码");
  7.                return;
  8.           }
  9.            // 判断是否勾选协议
  10.            if (this.agreementChecked) {
  11.                // 发送登录请求
  12.                this.$axios({
  13.                    method: "post",
  14.                    url: "http://localhost:8080/api/user/login",
  15.                    data: {
  16.                        userId: this.userId,
  17.                        password: this.password,
  18.                   },
  19.               })
  20.                   .then((res) => {
  21.                        console.log(res);
  22.                        if (res.data.code == "200") {
  23.                            // 登录成功,显示成功提示信息
  24.                            this.$message({
  25.                                message: res.data.message,
  26.                                type: "success",
  27.                           });
  28.                            //1、储存token(令牌)   保存到浏览器
  29.                            window.sessionStorage.setItem("token", res.data.token);
  30.                            //2、储存user
  31.                            window.sessionStorage.setItem(
  32.                                "user",
  33.                                JSON.stringify(res.data.user)
  34.                           );
  35.                            //3、跳转到后台主页 (编程式导航)
  36.                            this.$router.push("./home"); //
  37.                       } else if (res.data.code == "500") {
  38.                            this.$message({
  39.                                message: res.data.message,
  40.                                type: "error",
  41.                           });
  42.                       }
  43.                   })
  44.                   .catch(() => {
  45.                        // 登录失败,显示提示信息
  46.                        this.$message({
  47.                            message: "该登录失败",
  48.                            type: "error",
  49.                       });
  50.                   });
  51.           } else {
  52.                // 未勾选协议,不执行登录逻辑
  53.                this.$message({
  54.                    message: "请同意用户协议和隐私政策!",
  55.                    type: "error",
  56.               });
  57.           }
  58.       },

注意:先解决跨域问题(vue.config.js文件)

  1. module.exports = {
  2.  devServer: {
  3.    proxy: {
  4.      '/api': {//表示拦截以/api开头的请求路径
  5.        target: 'http://localhost:9090',
  6.        changOrigin: true,//是否开启跨域
  7.        pathRewrite: {
  8.          '^/api': '' //重写api,把api变成空字符,因为我们真正请求的路径是没有api的
  9.       }
  10.     }
  11.   }
  12. }
  13. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/808487
推荐阅读
相关标签
  

闽ICP备14008679号