前言

因为工作原因,需要从C/S开发转到B/S开发,搞了10几年C/C++开发,现在需要从头开始学习B/S,好在我也是一个喜欢迎接挑战的人。B/S架构选择前后端分离开发的vue+springboot框架。从本篇开始,我将以一个入门新手的角色结合实战来详细记录vue+springboot的学习过程,供vue+springboot入门者参考。


一、springboot简介

目前B/S架构比较流行vue+springboot框架,前端使用vue开发,后端使用springboot开发,上手快,开发效率高,而且vue和springboot都能支持很多插件。我们先从springboot开始构建一个可运行的demo。
以往,Java开发者们为了构建一个项目常常需要将许多的框架组合起来使用,例如Hibernate和Spring等,这个过程复杂且耗时。这也就是Spring Boot应运而生的原因。
Spring Boot是由Pivotal团队提供的全新框架,其设计目标是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义模板化的配置。Spring Boot集成了大量常用的第三方库配置,比如jackson、jdbc、druid、tomcat等,Spring Boot应用中这些第三方库几乎可以零配置的使用。

二、构建一个demo

1.开发环境搭建

1)首先从IDEA官网下载ideaIU-2024版本安装
https://www.jetbrains.com/idea/download/?section=windows
这个版本只有30天试用期,需要破解的话可以自行百度一下。
2)安装MySQL,由于我的系统是windows11,从MySQL官网下载的安装包无法安装成功,如果MySQL安装包能够安装成功,可以忽略下面步骤。
可以从以下地址下载MySQL压缩包。
https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.44-winx64.zip
解压把mysql-5.7.44-winx64里面文件拷贝到C:\Program Files\MYSQL\mysql-5.7.44目录中
并在该目录编写my.ini

[mysql]
# 设置mysql客户端默认字符编码形式
default-character-set=utf8mb4

[mysqld]
#跳过密码登录
skip-grant-tables
#设置端口号,默认3306
port = 3306
# 设置mysql的安装目录
basedir=C:\Program Files\MYSQL\mysql-5.7.44
# 设置mysql数据库的数据存放目录
datadir=C:\Program Files\MYSQL\mysql-5.7.44\data
# 设置最大连接数
max_connections=200
# 允许连接失败的次数
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password

[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4

打开cmd,在C:\Program Files\MYSQL\mysql-5.7.44\bin目录执行

mysqld --install "MySql" --defaults-file="C:\Program Files\MYSQL\mysql-5.7.44\my.ini"
mysqld --initialize
net start mysql

MySQL服务就成功启动了。

2.创建数据表

1)打开cmd,按以下步骤在MySQL中创建数据表users(当然也可以把MySQL设置到环境变量中)

cd C:\Program Files\MySQL\mysql-5.7.44\bin
mysql -uroot -proot
create database testdb;
use testdb;
CREATE TABLE users (id int NOT NULL,userName varchar(64) NOT NULL,password varchar(64) NOT NULL,sex varchar(16),telephone varchar(32),PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

如下图:
在这里插入图片描述
2)插入数据
ideaIU提供了连接数据库工具,可以直接在ideaIU上连接数据库进行操作。在ideaIU右侧点击"Database"图标,然后点"+“,选择Data Source为MySQL,如下图:
在这里插入图片描述
然后会弹出MySQL的配置页面,输入User:root,Password:root,Database:testdb,其它可以不动,如下图:
在这里插入图片描述
点击“Test Connection”按钮测试连接数据库,显示连接成功。如下图:
在这里插入图片描述
然后选择"users"数据表,弹出users数据表操作界面,点击”+"增加记录,填写记录内容后点击"Submit"提交,如下图:
在这里插入图片描述

3.创建项目

点击ideaIU左上角"Main Menu"新建项目
在这里插入图片描述

输入项目名称demo,Type选择Maven,JDK选择合适的,其它可以不变。
在这里插入图片描述
选择Web里的Spring Web
在这里插入图片描述
注意Spring Boot为3.3.0时MyBatis Framework无法选择,所以要把Spring Boot改为3.2.6,然后SQL里选择MyBatis Framework和MySQL Driver。
在这里插入图片描述
把resources文件夹下的application.properties改名为application.yml,右键点击application.properties文件如下图所示操作:
在这里插入图片描述
在这里插入图片描述
双击application.yml文件修改配置信息,可以把以下内容直接拷贝进去,注意testdb为数据库名,3306为MySQL端口,username为MySQL用户名,password为MySQL密码。

server:
  port: 8088

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/testdb?serverTimezone=Asia/Shanghai&characterEncoding=utf-8
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis:
  type-aliases-package: com.example.demo.bean

3.编写代码

右键点击"com.example.demo"文件夹,创建bean、controller、mapper、service四个Package。
在这里插入图片描述

分别在bean、controller、mapper、service下创建User.java、UserController.java、UserMapper.java、UserService.java、UserServiceImpl.java文件。
在这里插入图片描述
创建完成后目录结构如下:
在这里插入图片描述
我理解bean Package中应该是数据结构体类型定义,User.java跟users数据库内容保持一致,是users数据结构体类型定义,内容如下:

package com.example.demo.bean;

public class User {
    private String id;
    private String userName;
    private String password;
    private String sex;
    private String telephone;
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    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;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }
}

controller Package中应该是处理前端的交互请求,UserController.java只实现了一个响应前端get /usr/selectAll请求的过程,内容如下:

package com.example.demo.controller;

import com.example.demo.bean.User;
import com.example.demo.service.UserService;
import com.example.demo.service.UserServiceImpl;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import jakarta.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {
    @Resource
    private UserService userService = new UserServiceImpl();

    @RequestMapping(value = "/selectAll", method = RequestMethod.GET)
    public List<User> selectAll() {
        List<User> list = userService.selectAll();
        return list;
    }
}

mapper Package中应该是数据库的交互操作,比如增删改查,UserMapper.java只实现了查询users数据表记录,内容如下:

package com.example.demo.mapper;

import com.example.demo.bean.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface UserMapper {
    @Select({
            "select",
            "id, userName, password, sex, telephone",
            "from users"
    })
    List<User> selectAll();
}

service Package中应该是业务的处理过程,UserService.java是一个service接口基类,内容如下:

package com.example.demo.service;

import com.example.demo.bean.User;

import java.util.List;

public interface UserService {
    public List<User> selectAll();
}

UserServiceImpl.java是UserService的派生类,实现查询用户信息的业务,如果不是数据库交互场景,比如是从其它服务器获取数据,也应该在这个类中实现业务,内容如下:

package com.example.demo.service;

import com.example.demo.bean.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service("userService")
public class UserServiceImpl implements UserService{
    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> selectAll() {
        return userMapper.selectAll();
    }
}

3.测试验证

在resources的static目录下创建index.html文件,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .result{
            position: fixed;
            width: 100%;
            bottom: 0;
            left: 0;
            height: 300px;
            background-color: rgba(0,0,0,.8);
            color: white;
            text-align: center;
            letter-spacing: 2px;
            padding-top: 20px;
            font-size: 18px;
            line-height: 28px;
            overflow: scroll;
        }
    </style>
</head>
<body>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<button style="display: block;margin: 20px auto;width: 160px;height: 60px;" onclick="getAll()">查看用户信息</button>
<div class="result" id="result"></div>
<script>
    function getAll(){
        $.ajax({
            type: "get",
            url: "user/selectAll",
            data: {
            },
            success:function (data) {
                console.log(data)
                $("#result").empty()
                for(var i = 0;i < data.length;i++){
                    $("#result").append(JSON.stringify(data[i]) + "<br>")
                }
            },
        });
    }
</script>
</body>
</html>

运行项目,然后在浏览器中打开“http://localhost:8088/”,点击“查看用户信息”,能够查到数据库中的记录,如下图所示:
在这里插入图片描述
按照前面介绍的方法直接在users数据表中增加一条记录,然后再点击一下“查看用户信息”就可以查到两条记录。


总结

本篇只是先用springboot创建一个简单demo,后续我们将在这个demo基础上进一步完善它,在此过程中来加深理解vue+springboot框架。

GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐