Day01 項目概述,環境搭建

軟件開發整體介紹

軟件開發流程

需求分析:需求規格說明書、產品原型

設計:UI 設計、數據庫設計,接口設計

編碼:項目代碼、單元測試

測試:測試用例、測試報告

上線運維:軟件環境安裝、配置

角色分工

項目經理:對整個項目負責,任務分配,把控進度

產品經理:進行需求調研,輸出需求調研文檔,產品原型等

UI 設計師:根據產品原型輸出界面效果圖

架構師:項目整體架構設計,技術選型等

開發工程師:代碼實現

測試工程師:編寫測試用例,輸出測試報告

運維工程師:軟件環境搭建,項目上線

軟件環境

開發環境(development):開發人員在開發階段使用的環境,一般外部用戶無法訪問

測試環境(testing):專門給測試人員使用的環境,用于測試項目,一般外部用戶無法訪問

生產環境(production):即上線環境,正式提供對外服務的環境

蒼穹外賣項目介紹

項目介紹

定位:專門為餐飲企業(餐廳,飯店)定制的一款軟件產品

功能架構:體現項目中的業務模塊

產品原型

產品原型:用于展示項目的業務功能,一般由產品經理進行設計

技術選型

技術選型:展示項目中使用到的技術框架和中間件等

開發環境搭建

前端環境搭建

因為這個項目的重點是后端的開發,所以前端的代碼已經開發好,我們只要把前端項目運行起來,直接使用前端環境就可以了

前端工程基于 nginx 運行

注意:Nginx 目錄必須放在沒有中文的目錄中才能正常運行!!

后端環境搭建

后端工程基于 maven 進行項目構建,并且進行分模塊開發

用 idea 打開初始工程,了解項目的整體結構

使用 Git 進行項目代碼的版本控制,具體操作:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 創建 Git 本地倉庫? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 創建 Git 遠程倉庫? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 將本地文件推送到 Git 遠程倉庫

首先創建本地倉庫

如果它彈出窗口提示我們有錯誤不用管,直接點擊 “commit” 即可

然后創建遠程倉庫

最后將本地文件推送到 Git 遠程倉庫

數據庫環境搭建

通過數據庫建表語句創建數據庫表結構

前后端聯調測試

后端的初始工程中已經實現了登錄功能,直接進行前后端聯調測試即可

首先在 idea 中確認編譯通過

然后直接啟動啟動類

不要忘了將 yml 文件里的數據庫密碼修改成你自己的密碼!!!

完善登錄功能

問題:員工表中的密碼是明文存儲,安全性太低

措施:

? ? ? ? 1:將密碼加密后存儲,提高安全性

? ? ? ? 2:使用 MD5 加密方式對明文密碼加密

注意這個過程是單向的。

步驟:

? ? ? ? 1:修改數據庫中明文密碼,改為 MD5 加密后的密文

? ? ? ? 2:修改 Java 代碼,前端提交的密碼進行 MD5 加密后再跟數據庫中密碼對比

package com.sky.service.impl;import com.sky.constant.MessageConstant;
import com.sky.constant.StatusConstant;
import com.sky.dto.EmployeeLoginDTO;
import com.sky.entity.Employee;
import com.sky.exception.AccountLockedException;
import com.sky.exception.AccountNotFoundException;
import com.sky.exception.PasswordErrorException;
import com.sky.mapper.EmployeeMapper;
import com.sky.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;@Service
public class EmployeeServiceImpl implements EmployeeService {@Autowiredprivate EmployeeMapper employeeMapper;/*** 員工登錄** @param employeeLoginDTO* @return*/public Employee login(EmployeeLoginDTO employeeLoginDTO) {String username = employeeLoginDTO.getUsername();String password = employeeLoginDTO.getPassword();//1、根據用戶名查詢數據庫中的數據Employee employee = employeeMapper.getByUsername(username);//2、處理各種異常情況(用戶名不存在、密碼不對、賬號被鎖定)if (employee == null) {//賬號不存在throw new AccountNotFoundException(MessageConstant.ACCOUNT_NOT_FOUND);}//密碼比對//進行md5加密,然后再進行比對password = DigestUtils.md5DigestAsHex(password.getBytes());if (!password.equals(employee.getPassword())) {//密碼錯誤throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);}if (employee.getStatus() == StatusConstant.DISABLE) {//賬號被鎖定throw new AccountLockedException(MessageConstant.ACCOUNT_LOCKED);}//3、返回實體對象return employee;}}

注意看第 43 行,Java 中有現成的 md5 方法,我們直接調用即可

導入接口文檔

前后端分離開發流程

操作步驟

將課程資料中提供的項目接口導入 YApi

因為 YApi 官網我進不去,我直接用 Apifox

Swagger

介紹

使用 Swagger 你只需要按照它的規范定義接口及接口相關的信息,就可以做到生成接口文檔,以及在線接口調試頁面。

官網:API Documentation & Design Tools for Teams | Swaggerhttps://swagger.io/

Knife4j 是為 Java MVC 框架集成 Swagger 生成 Api 文檔的增強解決方案。

使用方式

1:導入 knife4j 的 maven 坐標

2:在配置類中加入 knife4j 相關配置

3:設置靜態資源映射,否則接口文檔頁面無法訪問

這里都是比較固定的

package com.sky.config;import com.sky.interceptor.JwtTokenAdminInterceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;/*** 配置類,注冊web層相關組件*/
@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {@Autowiredprivate JwtTokenAdminInterceptor jwtTokenAdminInterceptor;/*** 注冊自定義攔截器** @param registry*/protected void addInterceptors(InterceptorRegistry registry) {log.info("開始注冊自定義攔截器...");registry.addInterceptor(jwtTokenAdminInterceptor).addPathPatterns("/admin/**").excludePathPatterns("/admin/employee/login");}/*** 通過knife4j生成接口文檔* @return*/@Beanpublic Docket docket() {log.info("準備生成接口文檔...");ApiInfo apiInfo = new ApiInfoBuilder().title("蒼穹外賣項目接口文檔").version("2.0").description("蒼穹外賣項目接口文檔").build();Docket docket1 = new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo).select()//指定生成接口需要掃描的包.apis(RequestHandlerSelectors.basePackage("com.sky.controller")).paths(PathSelectors.any()).build();return docket1;}/*** 設置靜態資源映射* @param registry*/protected void addResourceHandlers(ResourceHandlerRegistry registry) {log.info("開始進行靜態資源映射...");registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}
}

注意看上面的 url,就是我們配置類中映射的 url

通過 Swagger 就可以生成接口文檔,那么我們就不需要 Yapi 了?

1:Yapi 是設計階段使用的工具,管理和維護接口

2:Swagger 在開發階段使用框架,幫助后端開發人員做后端接口測試

常用注解

通過注解可以控制生成的接口文檔,使接口文檔擁有更好的可讀性,常用注解如下:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92616.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92616.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92616.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Perl Socket 編程

Perl Socket 編程 引言 Perl 語言作為一種強大的腳本語言,在系統管理和網絡編程領域有著廣泛的應用。Socket 編程是網絡編程的核心,它允許程序在網絡中進行數據傳輸。本文將詳細介紹 Perl 語言中的 Socket 編程,包括 Socket 的概念、創建、通信以及一些高級應用。 Socket…

3 種簡單方法備份 iPhone 上的短信 [2025]

短信通常承載著我們工作和私人生活中有價值的信息和美好的回憶,以及我們不想丟失的特別對話。這就是為什么備份 iPhone 短信如此重要的原因。如果出現問題,比如意外刪除或系統問題,備份意味著你可以輕松地恢復短信。在本指南中,我…

Linux庫路徑三劍客:/usr/lib、/usr/local/lib、~/.local/lib 詳解與避坑指南

在Linux的世界里,/usr/lib、/usr/local/lib和~/.local/lib這三個路徑看似只是簡單的文件夾,實則是軟件包管理和開發環境的基石。理解它們的區別,不僅能讓你的pip install、make install等命令得心應手,更能避免ImportError、comma…

python 之 autogen-core《二》代理運行環境、應用程序堆棧、代理生命周期

支持兩種類型的運行時環境:獨立式和分布式 獨立代理運行時 獨立運行時適用于單進程應用程序,其中所有代理均使用同一種編程語言實現并在同一進程中運行。在 Python API 中,獨立運行時的一個示例是SingleThreadedAgentRuntime。 在這里&…

歐姆龍PLC CP1H在視覺檢測產線中的應用:以太網模塊實現上位機實時采樣與觸摸屏報警聯動

一、行業痛點與解決方案概述以某汽車零部件制造企業的生產線檢測系統為例,該企業原本使用歐姆龍CP1H PLC作為主控制器。由于CP1H PLC本身不具備以太網接口,只能通過串口(如RS232或RS485)進行通訊。這種通訊方式存在傳輸距離短、傳…

快速找到兩個 Word 文檔之間文字的區別

要快速找到兩個 Word 文檔之間文字的區別,可以使用 Microsoft Word 自帶的“比較(Compare)”功能,步驟如下: ? 方法一:使用 Microsoft Word 的“比較”功能 打開 Microsoft Word。 點擊頂部菜單欄中的 “…

ZK首次連接失敗,第二次連接成功的問題解決方案

問題 項目中配置zk后,啟動時zk第一次鏈接總是失敗,過一會后又會鏈接成功。異常如下: "C:\Program Files\Java\jdk1.8.0_291\bin\java.exe" -agentlib:jdwptransportdt_socket,address127.0.0.1:58217,suspendy,servern -XX:TieredS…

OpenCV cv2.flip() 函數詳解與示例

本文介紹了 OpenCV 中 cv2.flip() 函數的用法,該函數可實現圖像的水平、垂直及雙向翻轉。通過設置 flipCode 參數為 0、1 或 -1,用戶可分別獲得上下顛倒、左右鏡像或 180 旋轉的效果。文中提供了詳細的參數說明、示例代碼以及三種翻轉模式的效果對比&…

負氧離子監測站:守護清新空氣的科技衛士

負氧離子監測站:守護清新空氣的科技衛士 柏峰【BF-FLZ】在公園漫步,在森林中穿梭,或者靠近瀑布傾聽水流的轟鳴,我們常常會感嘆 “空氣真清新”。這種清新的感覺,很大程度上要歸功于空氣中的負氧離子。負氧離子&#xf…

智慧交通場景下 mAP↑28%:陌訊多模態融合算法實戰解析

原創聲明本文為原創技術解析,技術參數及架構設計參考自《陌訊技術白皮書》,禁止未經授權的轉載與商用。一、行業痛點:智慧交通的檢測困境智慧交通系統作為城市基建的核心組成,正面臨著復雜環境下的檢測精度瓶頸。據《中國智慧交通…

內容分發機制研究:實測一款多源短視頻聚合App

還在為刷短視頻總是看到重復內容而煩惱嗎?今天阿燦給大家推薦一款安卓用戶專屬的短視頻神器,賞顏悅色 ,聽名字就應該知道這神器差不了!02軟件介紹這款app只有2.1版本,但功能已經相當強大了。它最大的特點就是多接口隨機…

OpenAI 的 GPT-5 來了

OpenAI 推出了新的旗艦 AI 模型 GPT-5,它將為該公司的下一代 ChatGPT 提供支持。 https://openai.com/index/introducing-gpt-5/ GPT-5 于周四發布,是 OpenAI 首個“統一”AI 模型,它將O 系列模型的推理能力與GPT 系列的快速響應能力相結合…

Spring AMQP 入門與實踐:整合 RabbitMQ 構建可靠消息系統

Spring AMQP 入門與實踐:整合 RabbitMQ 構建可靠消息系統 一、Spring AMQP 是什么? Spring AMQP(Application Messaging Protocol)是 Spring 官方提供的對 AMQP 協議的封裝,其核心模塊有兩個: spring-am…

圖像處理控件Aspose.Imaging教程:使用 C# 將 SVG 轉換為 EMF

Aspose.Imaging for .NET是一款深受 .NET 開發人員喜愛的圖像處理 SDK,因為它靈活且易于開發人員使用。EMF 圖像文件格式提供出色的打印質量和可擴展性。此外,這種圖像文件格式還節省存儲空間。Aspose.Imaging for .NET 能夠使 SVG 到 EMF 的轉換變得簡…

網絡編程——套接字

目錄 一、Socket套接字 (一)概念 (二)分類 1.流套接字: 2.數據報套接字 3.原始套接字 二、TCP協議VSUDP協議 (一)有連接VS無連接 (二)可靠傳輸VS不可靠傳輸 &a…

Git 基礎操作筆記(速查)

1. 初始化倉庫git init在當前文件夾初始化一個新的 Git 倉庫。2. 克隆倉庫git clone <倉庫地址>從遠程倉庫復制項目到本地。3. 查看文件狀態git status查看工作區和暫存區的文件狀態。4. 添加文件到暫存區git add <文件名> git add . # 添加所有改動文件5. 提…

【并查集】P3367 【模板】并查集

P3367 【模板】并查集 題目背景 本題數據范圍已經更新到 1≤N≤21051\le N\le 2\times 10^51≤N≤2105&#xff0c;1≤M≤1061\le M\le 10^61≤M≤106。 題目描述 如題&#xff0c;現在有一個并查集&#xff0c;你需要完成合并和查詢操作。 輸入格式 第一行包含兩個整數 N,MN,M…

MyBatis流式查詢詳解

MyBatis 流式查詢詳解&#xff1a;ResultHandler 與 Cursor 在業務中&#xff0c;如果一次性查詢出百萬級數據并返回 List&#xff0c;很容易造成 OOM 或 長時間 GC。 MyBatis 提供了 流式查詢&#xff08;Streaming Query&#xff09; 能力&#xff0c;讓我們可以邊讀邊處理&a…

1Panel Agent 證書繞過實現遠程命令執行漏洞復現(CVE-2025-54424)

免責申明: 本文所描述的漏洞及其復現步驟僅供網絡安全研究與教育目的使用。任何人不得將本文提供的信息用于非法目的或未經授權的系統測試。作者不對任何由于使用本文信息而導致的直接或間接損害承擔責任。如涉及侵權,請及時與我們聯系,我們將盡快處理并刪除相關內容。 前…

kettle插件-kettle http post plus插件,輕松解決https post接口無法調用文件流下載問題

場景&#xff1a;小伙伴在使用kettle調用https post接口過程中無法正常調用&#xff0c;程序出錯問題&#xff0c;今天演示下用自研插件輕松解決這個問題。1、使用openssl 生成自簽名證書openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 3652、…