JavaWeb_瑞吉外卖_项目优化Day12-前后端分离

news2024/9/22 7:59:39

JavaWeb_瑞吉外卖_项目优化Day12-前后端分离

  • 前后端分离开发
    • 介绍
    • 开发流程
    • 前端技术栈
  • Yapi
  • Swagger
    • 介绍
    • 使用方式
    • 常用注解
  • 项目部署
    • 部署架构
    • 部署环境说明
    • 部署前端项目
    • 部署后端项目
  • 来源

前后端分离开发

介绍

开发流程

前端技术栈

  • 开发工具
    • Visual Studio Code
    • hbuilder
  • 技术框架
    • nodejs: 前端开发基石
    • VUE: 前端开发框架
    • ElementUI: 提供UI组件
    • mock: 前端测试工具, 提供数据
    • webpack: 前端打包工具

Yapi

需要本地部署

Swagger

介绍

  • 使用Swagger你只需要按照它的规范去定义接口及接口相关的信息,再通过Swagger衍生出来的一系列项目和工具, 就可以做到生成各种格式的接口文档,以及在线接口调试页面等等.
  • knife4j是Java MVC框架集成Swagger生成Api文档的增强解决方案.

使用方式

  1. 导入knife4j的maven坐标
    <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>knife4j-spring-boot-starter</artifactId>
        <version>3.0.2</version>
    </dependency>
    
  2. 导入knife4j相关配置类
    ...
    @EnableSwagger2
    @EnableKnife4j
    public class WebMvcConfig extends WebMvcConfigurationSupport {
    
        ...
    
        @Bean
        public Docket createRestApi() {
            // 文档类型
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.itheima.reggie.controller"))
                    .paths(PathSelectors.any())
                    .build();
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("瑞吉外卖")
                    .version("1.0")
                    .description("瑞吉外卖接口文档")
                    .build();
        }
    }
    
  3. 设置静态资源,否则接口文档页面无法访问
    ...
    public class WebMvcConfig extends WebMvcConfigurationSupport {
    
        /**
        * 设置静态资源映射
        * @param registry
        */
        @Override
        protected void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
            registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
            ...
        }
    
        ...
    }
    
  4. 在LoginCheckFilter中设置不需要处理的请求路径
    // 定义不需要处理的请求路径
    String[] urls = new String[]{
            ...
            "/doc.html",
            "/webjars/**",
            "/swagger-resources",
            "/v2/api-docs"
    };
    

常用注解

注解说明
@Api用在请求的类上, 例如Controller, 表示对类的说明
@ApiModel用在类上, 通常是实体类, 表示一个返回响应数据的信息
@ApiModelProperty用在属性上, 描述响应类的属性
@ApiOperation用在请求的方法上, 说明方法的用途, 作用
@ApiImplicitParams用在请求的方法上, 表示一组参数说明
@ApiImplicitParam用在@ApiImplicitParams注解中, 指定一个请求参数的各个方面

项目部署

部署架构

在这里插入图片描述

部署环境说明

服务器:

  • 192.168.174.133(服务器A)
    • Nginx: 部署前端项目, 配置反向代理
    • Mysql: 主从复制结构中的主库
  • 192.168.174.134(服务器B)
    • jdk: 运行Java项目
    • git: 版本控制工具
    • maven: 项目构建工具
    • jar: Spring Boot项目打成jar包基于内置Tomcat运行
    • Mysql: 主从复制结构中的从库
  • localhost(服务器C)
    • Redis: 缓存中间件

部署前端项目

  1. 将dist目录上传到Nginx的html目录下
  2. 修改Nginx配置文件nginx.conf
    server {
      listen 80;
      server_name localhost;
    
      location / {
        root html/dist;
        index index.html;
      }
    
      # 反向代理配置
      location ^~ /api/ {
        rewrite ^/api/(.*)$ /$1 break;
        proxy_pass http://192.168.174.134:8080;
      }
    }
    

部署后端项目

  1. 安装jdk, git, maven, mysql, 使用git clone将git远程仓库的代码克隆下来
  2. 上传reggieStart.sh文件, 通过chmod设置执行权限
  3. 执行reggieStart.sh脚本文件, 自动部署项目
  4. 修改图片资源路径

来源

黑马程序员. 瑞吉外卖项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/740004.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【全栈开发指南】VUE前端路由设计及配置

我们在使用Vue.js时&#xff0c;创建单页面应用一定会用到路由&#xff0c;Vue Router 是 Vue.js 官方的路由管理器&#xff0c;我们在开发框架中过程中&#xff0c;需要结合Vue Router路由管理器提供的功能&#xff0c;设计和实现系统中菜单的配置。 一、实现原理 一级菜单r…

idea创建webapp文件夹

结果的图片&#xff1a; 第一步&#xff1a; file-》project structure 第二步&#xff1a; 修改路径&#xff0c;点击右侧“Deloyment descriptors”下面的笔进行修改。 // 增加了src\main // web修改为了webapp C:\Users\www12\Desktop\huwantiku2\src\main\webapp\WEB-IN…

计算机图形学 3D 渲染 笔记(二)

一、阴影 判断一个点是否被遮住&#xff0c;可以从该点像光源方向发射射线&#xff08;P tL&#xff09;&#xff0c;若射线被与物体发生相交&#xff0c;则说明它在阴影中。而这个物体由于要在 P 和 光源之间&#xff0c;在方向光场景下&#xff0c; t 的取值范围是 0 < …

vue3+vite+Ts 基于Antv/x6 绘制流程图

需求效果&#xff1a; 需求&#xff1a; 实现一个流程图&#xff0c;双击可对相应的组件进行一些功能操作&#xff1b; 工具栈&#xff1a; 这里使用antv/x6&#xff0c; 基于vue3vitets进行开发 官网地址&#xff1a; https://x6.antv.antgroup.com/examples/showcase/pra…

港联证券|dmi指标的用法和实战技巧?

DMI指标是一种技术分析工具&#xff0c;可用于评估股票、期货和外汇市场的趋势强度。DMI指标由三条线组成&#xff0c;分别是DI&#xff08;上升方向指标&#xff09;、-DI&#xff08;下降方向指标&#xff09;和ADX&#xff08;平均趋向指数&#xff09;。在使用DMI指标之前&…

Unity DOTS纯ECS实现虚拟摇杆Joystick控制角色移动

上篇已经实现了ECS框架下的IBeginDragHandler、IDragHandler、IEndDragHandler这几个拖动事件&#xff0c;使得可以任意给ECS框架下的UI(2D entity)响应拖动事件。本篇分享下在前篇实现的功能的基础上再实现一个常用的摇杆控制角色移动的功能。 需要注意的一点&#xff0c;目前…

[数据分析与可视化] 基于matplotlib和plottable库绘制精美表格

plottable是一个Python库&#xff0c;用于在matplotlib中绘制精美定制的图形表格。plottable的官方仓库地址为&#xff1a;plottable。本文主要参考其官方文档&#xff0c;plottable的官方文档地址为&#xff1a;plottable-doc。plottable安装命令如下&#xff1a; pip install…

猿人web学刷题18

1.第十八题 jsvmp - 猿人学 问题: 1.第一页请求正常能返回数据 2.第二页开始之后出现{"error": "Unexpected token/Validation failed"} 分析&#xff1a; 1.第二页开始&#xff0c;有带加密参数&#xff0c;直接重发请求无果&#xff0c;应该带了时间戳…

尚硅谷Docker实战教程-笔记11【高级篇,Docker网络】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址&#xff1a;尚硅谷Docker实战教程&#xff08;docker教程天花板&#xff09;_哔哩哔哩_bilibili 尚硅谷Docker实战教程-笔记01【基础篇&#xff0c;Docker理念简介、官网介绍、平台入门图解、平台架构图解】…

盛格塾暑期公益课程《学活LINUX》

学习LINUX有很多种方法&#xff0c;本系列课程以动手试验为主&#xff0c;取一个活的LINUX系统&#xff08;GDK8&#xff09;作为目标&#xff0c;使用内核调试器&#xff08;挥码枪&#xff09;将其中断到调试器&#xff0c;在调试器的帮助下&#xff0c;观察调用过程、执行现…

【1++的Linux】之基础开发工具

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的Linux】 文章目录 一&#xff0c;Linux软件包管理管理器二&#xff0c;Linux编辑器--vim2.1 什么是vim2.2 vim的基本操作 三&#xff0c;gcc的使用四&#xff0c;gdb的使用五&#xff0c;项目…

课时7:Trustzone基础知识

快速链接: . 👉👉👉 个人博客笔记导读目录(全部) 👈👈👈 付费专栏-付费课程 【购买须知】:Secureboot从入门到精通-[目录] 👈👈👈目录 Trustzone安全扩展双系统架构Trustone架构多方位支持的安全

探索Gradio库中的Textbox模块及其强大功能

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

作用域、垃圾回收机制、闭包、构造函数

作用域 作用域规定了变量能够被访问的 ‘范围’&#xff0c;离开了这个范围变量便不能被访问 分为&#xff1a; 局部作用域 函数作用域块级作用域 let/const 全局作用域 作用域链 嵌套关系的作用域串联起来形成了作用域链 作用:作用域链本质上是底层的变量的查找机制 函…

简写MKL库windows安装以及python如何调用dll库

MKL安装: 最新MKL库下载地址 Donwload: Accelerate Fast Math with Intel oneAPI Math Kernel Library 64位以及32位我直接都安装了 之后配置各种包含目录以及环境变量&#xff1a;网上有很多配置vs的配置教程&#xff0c;这里就不贴了。 &#xff08;ps: 2023 在vs2019上&a…

nodejs高级编程-核心模块

一、path 1 获取路径中的基础名称 const path require(path)// console.log(__filename) // /Users/liuchongyang/Desktop/分享/网页读取本地文件/node.js// 1 获取路径中的基础名称 /*** 01 返回的就是接收路径当中的最后一部分 * 02 第二个参数表示扩展名&#xff0c;如果…

手把手教-单片机stm32基于w25q128使用文件系统

一、开发测试环境 ①野火stm32f407开发板 ②rtthread操作系统 W25Q128的电路原理图&#xff1a; 二、开发步骤 ①使能spi驱动。 ②使能spi bus/device 驱动&#xff0c;选择sfud驱动。 ③开启dfs功能&#xff0c;选择elm文件系统。 ④保存&#xff0c;重新生成工程。 ⑤下载到…

VueCli 脚手架使用

VueCli 脚手架 到目前为止&#xff0c;已经会了Vue基本使用&#xff08;去创建vue实例&#xff0c;创建之后再去挂载&#xff0c;挂载之后就去使用各种功能&#xff0c;挂载之后就可以使用其各种功能&#xff0c;data methods compute 以及各个生命周期&#xff0c;常用的属性以…

779. 最长公共字符串后缀

题面&#xff1a; 给出若干个字符串&#xff0c;输出这些字符串的最长公共后缀。 输入格式 由若干组输入组成。 每组输入的第一行是一个整数 NN。 NN 为 00 时表示输入结束&#xff0c;否则后面会继续有 NN 行输入&#xff0c;每行是一个字符串&#xff08;字符串内不含空白符&…

Redis深入 —— 持久化和事务

前言 最近的学习中&#xff0c;荔枝深入了解了Redis的持久化、Redis事务相关的知识点并整理相应的学习笔记&#xff0c;在这篇文章中荔枝也主要梳理了相应的笔记和基本知识&#xff0c;小伙伴们如果需要的话可以看看哈。 文章目录 前言 一、Redis持久化 1.1 RDB 1.1.1 Redi…