SpringBoot+Vue全栈开发(图书商城项目回顾)

2023-11-12

参考资料:1天搞定SpringBoot+Vue全栈开发


后端

开发框架:SpringBoot + Mybatis

开发工具:IDEA + Navicat

所有文件
BookSystem-webservice/src/main/java/booksystem/
src/main/java/booksystem/

pom.xml(Project Object Model,项目对象模型,该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等。):

史上最全的 pom.xml 文件详解

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>booksystem</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>booksystem</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>

    <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>
        </dependency>

        <!-- 这里省略了大部分依赖 -->

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

BookSystemApplication.java(相当于项目的启动程序):

package booksystem;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class BooksystemApplication {

    public static void main(String[] args) {
        SpringApplication.run(BooksystemApplication.class, args);
    }

}

AddressController.java:

package booksystem.controller;

import booksystem.pojo.Address;
import booksystem.service.AddressService;
import booksystem.service.Impl.AddressServiceImpl;
import booksystem.utils.Result;
import booksystem.utils.ResultEnum;
import booksystem.utils.TokenUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.util.List;

@CrossOrigin(origins="*",maxAge = 3600)
@RestController
public class AddressController {
    @Autowired
    AddressService addressService;

    //根据user_id获取所有地址
    @RequestMapping("/user/address/getAll")
    public Result getAllAddress(ServletRequest request){
        String token=((HttpServletRequest)request).getHeader("token");
        String username= TokenUtils.parseToken(token).get("username").toString();
        return Result.ok().put("data",addressService.getAllAddress(username));
    }

    //删除一个地址
    @DeleteMapping("/user/address/delete")
    public Result deleteAddress(@RequestParam("addressId") String addressId){
        addressService.deleteAddress(addressId);
        return Result.ok(ResultEnum.SUCCESS.getMsg());
    }

    //省略其他功能

}

 可以将数据放在请求体或url中。


前端

开发框架:vue 2.6.14

开发工具:VSCode

依赖管理:yarn(也可使用npm)

项目构建:VueCli

VueCli是官方提供的构建工具,通常称为脚手架。

用于快速搭建一个带有热重载(在代码修改后不必刷新页面即可呈现修改后的效果)及构建生产版本等功能的单页面应用。

VueCli基于webpack构建,也可以通过项目内的配置文件进行配置。

安装:npm install -g @vue/cli

Nodejs是一个基于Chrome V8引擎的JS运行时环境。

Node中包含了npm包管理工具。

package.json文件记录依赖信息,一般下载的项目都没有node_modules文件夹,即依赖,使用 npm/yarn install 下载依赖。

创建vue项目:在cmd中输入vue create <项目名>

xxx.vue:vue的组件(components),由三部分构成,包括template(可包含html标签及其他组件)、script(JS代码)、style(样式)。 

 组件的嵌套:①import ②注册 ③标签

组件间的传值:组件可以由内部的Data提供数据,也可以由父组件通过prop的方式传值。兄弟组件之间可以通过Vuex等统一数据源提供数据共享。

第三方组件elementUI:导入和注册

第三方图标库(本项目未使用):font awesome

Axios简介

在实际项目开发中,前端页面所需要的数据往往需要从服务器端获取,这必然
涉及与服务器的通信。

Axios是一个基于promise网络请求库,作用于node.js 和浏览器中。

Axios在浏览器端使用XMLHttpRequests发送网络请求,并能自动完成JSON数据的转换。

跨域问题解决

CORS (Cross-Origin Resource Sharing)是由W3C制定的一-种跨域资源共享技术标准,其目的就是为了解决前端的跨域请求。

CORS可以在不破坏即有规则的情况下, 通过后端服务器实现CORS接口,从而实现跨域通信。

CORS将请求分为两类:简单请求和非简单请求,分别对跨域通信提供了支持。

VueRouter

Vue路由vue-router是官方的路由插件,能够轻松的管理SPA项目中组件的切换。

Vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。

vue-router目前有3.x的版本和4.x的版本,vue-router 3.x只能结合vue2进行使用,vue-router 4.x只能结合vue3进行使用。

导航守卫

导航守卫可以控制路由的访问权限。

全局导航守卫会拦截每个路由规则,从而对每个路由进行访问权限的控制。

你可以使用router .beforeEach注册一个全局前置守卫。

Vuex

对于组件化开发来说,大型应用的状态往往跨越多个组件。在多层嵌套的父子组件之间传递状态已经十分麻烦,而Vue更是没有为兄弟组件提供直接共享数据的办法。
基于这个问题,许多框架提供了解决方案一使用全局的状态管理器, 将所有分散的共享数据交由状态管理器保管,Vue也不例外。
Vuex是一个专为Vue.js应用程序开发的状态管理库,采用集中式存储管理应用的所有组件的状态。
简单的说,Vuex用于管理分散在Vue各个组件中的数据。

Mock.js

Mock.js是一款前端开发中拦截Ajax请求再生 成随机数据响应的工具,可以用来模拟服务器响应。

优点是非常简单方便,无侵入性,基本覆盖常用的接口数据类型。

支持生成随机的文本、数字、布尔值、日期、邮箱、链接、图片、颜色等。

vue-element-admin

vue-element-admin 是一个后台前端解决方案,它基于vue和element-ui实现。

内置了i18国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件。可以快速搭建企业级中后台产品原型。

JSON Web Token(JWT)

JSON Web Token (简称JWT)是一个token的具体实现方式,是目前最流行的跨域认证解决方案。

JWT 的原理是,服务器认证以后,生成一个JSON对象,发回给用户。

用户与服务端通信的时候,都要发回这个JSON对象。服务器完全只靠这个对象认定用户身份。

为了防止用户篡改数据,服务器在生成这个对象的时候,会加上签名。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot+Vue全栈开发(图书商城项目回顾) 的相关文章

随机推荐

  • 耐人思考的“30秒法则”

    时间管理 30秒法则 也被称为 电梯法则 这个法则说得是 凡事要在最短的时间内把结果表达清楚 凡事要直奔主题 直奔结果 这个30秒法则 是由一个真实的故事引申出来的 美国知名咨询公司麦肯锡 有一位重要的大客户来公司洽谈 董事长因急事赶飞机
  • STM32毕业设计题目选题分享

    文章目录 1前言 2 STM32 毕设课题 3 如何选题 3 1 不要给自己挖坑 3 2 难度把控 3 3 如何命名题目 1前言 更新单片机嵌入式选题后 不少学弟学妹催学长更新STM32和C51选题系列 感谢大家的认可 来啦 以下是学长亲手
  • java 以流的形式从服务器下载文件并保存到本地

    1 基本实现流程 当我们想要下载网站上的某个资源时 我们会获取一个url 它是服务器定位资源的一个描述 下载的过程有如下几步 1 客户端发起一个url请求 获取连接对象 2 服务器解析url 并且将指定的资源返回一个输入流给客户 3 建立存
  • JavaScript设计模式读书笔记(五)=>架构型设计模式,MVC,MVP,MVVM

    全系列目录 JavaScript设计模式读书笔记 一 gt 创建型设计模式 JavaScript设计模式读书笔记 二 gt 结构型设计模式 JavaScript设计模式读书笔记 三 gt 行为型设计模式 JavaScript设计模式读书笔记
  • ] 2014找工作总结-机会往往留给有准备的人

    看了这篇文章 感觉到了震撼 如果早看到该有多好 我也是2014年的毕业生 我的找工作历程也基本上告一段落了 与本博文的原作者比起来 自己仿佛到现在也没有真正的为工作而准备 这也是自己没有规划的原因吧 所以在找工作的过程中只收到了一个offe
  • 电脑与云服务器传输文件,电脑与云服务器传输文件

    电脑与云服务器传输文件 内容精选 换一换 当创建文件系统后 您需要使用云服务器来挂载该文件系统 以实现多个云服务器共享使用文件系统的目的 本章节以Windows 2012版本操作系统为例进行CIFS类型的文件系统的挂载 同一SFS容量型文件
  • react map循环生成的button_【第1945期】彻底搞懂React源码调度原理(Concurrent模式)...

    前言 估计会懵逼 今日早读文章由成都 苏溪云投稿分享 正文从这开始 最早之前 React还没有用fiber重写 那个时候对React调度模块就有好奇 而现在的调度模块对于之前没研究过它的我来说更是带有一层神秘的色彩 色彩中朦胧浮现出两个字
  • ZIGBEE: Error[Pa045]: function "" has no prototype问题解决方法

    IAR CC2530的2个程序整合后 报错 而全部错误都是一个性质 Error Pa045 function has no prototype 去掉 Require prototype选项 重新编译即可 应该是一个编译顺序问题
  • 大屏三维地图怎么做?什么软件可以做室内地图?

    人们80 的活动时间是在室内 因此室内生成的数据量巨大且异常重要 在各类数据中 室内电子地图空间数据是非常重要的数据支撑 基于空间数据 一方面服务于C端客户 为C端客户的快速位置查询 了解室内地物分布及路径导航指引等提供服务 另一方面 地图
  • ng-alain 添加tinymce及tinymce图片上传功能模块

    tinymce的使用 tinymce中文文档 默认ng alain 已经内置了tinymc 查看共享模块是否加载了tinymce import NgxTinymceModule from ngx tinymce const THIRDMOD
  • 【牛客网练习题】Java专项练习(50题)含解析

    目录 1 运行结果 3 5 6 7 2 jdk1 8中 下面有关java 抽象类和接口的区别 说法错误的是 B D 3 在 applet 的方法中 可关闭小应用程序并释放其占用资源的是 D 4 对于构造方法 下列叙述正确的是 A C D 5
  • 从零开始使用Hexo搭建个人博客

    title Hexo Github搭建个人博客 date 2022 07 26 19 53 05 tags hexo 前往我的个人博客 阅读体验更佳本文链接 1 环境准备 1 1 安装Git 到Git 官网上下载安装 安装好后 使用命令查看
  • UNIAPP可视化设计工具 一键生成UNIAPP应用代码

    网址 DIY官网可视化工具 打造UNIAPP可视化一键生成导出
  • xman的思维导图快捷键_思维导图怎么做?

    推荐软件 微软的Mindmanager Xmind和imindmap 关于下载安装 浏览器搜索网址 https www xmind cn 网页导航栏选择Xmind8 Xmind有两种版本 一种体验版 即免费版 一种是需要购买的专业版 平时学
  • 傅里叶 方波 matlab,matlab实现方波傅立叶级数演示

    Square Wave Fourier Series Demo Square Wave Fourier Series Demo square wave fourier series demo m The user can design va
  • 重装系统后的一些环境配置

    重装系统后的一些环境配置 nvm 与 nodejs 配置 打开环境变量配置页面
  • Ubuntu 16.04安装libuvc

    安装依赖 sudo apt get intall libjpeg dev libusb 1 0 0 dev sudo ldconfig 安装libuvc git clone https github com ktossell libuvc
  • 搜索引擎技术简介

    搜索引擎技术简介 1 系统结构 抓取网页建立索引库在索引库中搜索结果排序主要的数据结构 倒排索引 inverted indexing list 这种数据结构广泛地应用在今天包括Web搜索引擎在内的各种信息检索系统中 其典型的总体结构 如下图
  • 基于MMX指令集的程序设计简介

    基于MMX指令集的程序设计简介 作者 Alex Farber出处 http www codeproject com cpp mmxintro asp MMX技术简介 Intel 公司的MMX 多媒体增强指令集 技术可以大大提高应用程序对二维
  • SpringBoot+Vue全栈开发(图书商城项目回顾)

    参考资料 1天搞定SpringBoot Vue全栈开发 后端 开发框架 SpringBoot Mybatis 开发工具 IDEA Navicat 所有文件 src main java booksystem pom xml Project O