文章目錄
- 軟件開發整體介紹
- 軟件開發流程
- 角色分工
- 軟件環境
- 外賣平臺項目介紹
- 項目介紹
- 定位
- 功能架構
- 產品原型
- 技術選型
- 開發環境搭建
- 整體結構:前后端分離開發
- 前后端混合開發缺點
- 前后端分離開發
- 前端環境搭建
- Nginx
- 后端環境搭建
- 熟悉項目結構
- 使用Git進行版本控制
- 數據庫環境搭建
- 登錄功能
- 分析代碼特點
- Nginx反向代理和負載均衡
- 會話跟蹤技術方案
- JWT介紹
- JWT生成測試
- JWT校驗測試
- 應用jwt令牌登錄和校驗
- 密碼加密
- 導入接口文檔
- 前后端開發流程
- 操作步驟
- Swagger
- 介紹
- 使用方式
- 常用注解
軟件開發整體介紹
軟件開發流程
- 需求分析:需求規格說明書、產品原型
- 設計:UI設計、數據庫設計、接口設計
- 編碼:項目代碼、單元測試
- 測試:測試用例、測試報告
- 上線運維:軟件環境安裝、配置
角色分工
- 項目經理:對整個項目負責,任務分配,把控進度
- 產品經理:進行需求調研,輸出需求調研文檔、產品原型等
- UI設計師:根據產品原型輸出界面效果圖
- 架構師:項目整體架構設計、技術選型等
- 開發工程師:代碼實現
- 測試工程師:編寫測試用例,輸出測試報告
- 運維工程師:軟件環境搭建、項目上線
軟件環境
- 開發環境(development):開發人員在開發階段使用的環境,一般外部用戶無法訪問
- 測試環境(testing):專門給測試人員使用的環境,用于測試項目,一般外部用戶無法訪問
- 生成環境(production):即線上環境,正式提供對外服務的環境
外賣平臺項目介紹
項目介紹
定位
專門為餐飲企業(餐廳、飯店)定制的一款軟件產品
管理端–外賣商家使用
用戶端–點餐用戶使用
功能架構
體現項目中的業務功能模塊
產品原型
用于展示項目的業務功能,一般由產品經理進行設計
管理端
用戶端
技術選型
展示項目中使用到的技術框架和中間件等
開發環境搭建
整體結構:前后端分離開發
前后端混合開發缺點
- 溝通成本高
- 分工不明確
- 不便管理
- 不便維護擴展
前后端分離開發
當前最為主流的開發模式:前后端開發 分開部署運行
特點:解耦,便于管理、維護和擴展
前端環境搭建
前端工程基于Nginx運行
Nginx
介紹:Nginx是一款輕量級的Web服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。
特點:占有內存少,并發能力強,在各大型互聯網公司都有非常廣泛的使用
官網:https://nginx.org/
啟動Nginx:雙擊nginx.exe即可啟動nginx服務,訪問端口號為80
注意事項:
- Nginx默認占用80端口號,如果80端口號被占用,可以在nginx.conf中修改默認端口號(netstat -ano | findStr 80)
- 修改了nginx.conf配置文件,需要重啟nginx服務器(關閉然后再開,可以通過kill nginx.bat結束nginx,然后再次雙擊nginx.exe)
后端環境搭建
后端工程基于maven進行項目構建,并且進行分模塊開發
熟悉項目結構
- sky-common子模塊存放的是一些公共類,可以供其他模塊使用
- sky-pojo子模塊中存放的是一些entity、dto、vo
pojo:plain old java object
- sky-server子模塊中存放的是 配置文件、配置類、攔截器、controller、service、mapper、啟動類等
使用Git進行版本控制
- 創建Git本地倉庫
- 創建Git遠程倉庫
- 將本地文件推送到Git遠程倉庫
數據庫環境搭建
通過數據庫建表語句創建數據庫表結構
登錄功能
分析代碼特點
后端的初始工程中已經實現了登錄功能,直接進行前后端聯調測試即可
- @Builder注解的作用
lombok提供的注解,給類提供了builder()鏈式構建對象方式
EmployeeVO.builder().id(employee.getId()).build();
- @Slf4j注解的作用
lombok提供的注解,用于輸出日志,打印信息完整,包含時間、所在類完整名等
log.info(“輸出info日志”);
log.error(“輸出error錯誤日志”);
- 使用的是什么會話技術
session
Nginx反向代理和負載均衡
Nginx反向代理:就是將前端發送的動態請求由nginx轉發到后端服務器
反向代理的好處:
- 提高訪問速度
- 進行負載均衡
- 保證后端服務安全
所謂負載均衡,就是把大量的請求按照我們指定的方式均衡的分配給集群中的每臺服務器
nginx反向代理的配置方式
nginx負載均衡的配置方式
nginx負載均衡策略
默認是輪詢方式;使用weight方式,需要在每個server 192.168.100.***:8080 加上weight = 數字;使用剩下4個策略,需要在server上面加載ip_hash;即可
會話跟蹤技術方案
跨域:跨域區分三個維度:協議、IP/域名、端口
JWT介紹
全稱:JSON Web Token
官網:https://jwt.io/
介紹:定義了一種簡潔的、自包含的格式,用于在通信雙方以json數據格式安全的傳輸信息。由于數字簽名的存在,這些信息是可靠的
組成:
- 第一部分:Header(頭),記錄令牌類型、簽名算法等
- 第二部分:Payload(有效載荷),攜帶一些自定義信息、默認信息等
- 第三部分:Signature(簽名),放置Token被篡改,確保安全性。將header、payload,并加入指定密鑰,通過指定簽名算法計算而來
場景:登錄驗證
- 登錄成功后,生成令牌,并返回給前端
- 后續每個請求,都要攜帶JWT令牌,系統在每次請求處理之前,先校驗令牌,通過后,再處理
JWT生成測試
JWT校驗測試
注意事項:
- jwt校驗時使用的簽名密鑰,必須和生成jwt令牌時使用的密鑰是配套的
- 如果jwt令牌解析校驗時報錯,則說明jwt令牌被篡改或失效了,令牌非法
應用jwt令牌登錄和校驗
生成jwt
校驗jwt
密碼加密
問題:員工表中的密碼是明文存儲,安全性太低
方法:使用MD5加密方式對明文密碼加密
導入接口文檔
前后端開發流程
操作步驟
使用YApi
Swagger
介紹
使用Swagger你只需要按照它的規范去定義接口及接口相關信息,就可以做到生成接口文檔,以及在線接口調試頁面
官網:https://swagger.io/
Knife4是為Java MVC框架集成Swagger生成Api文檔的增強解決方案
使用方式
- 導入knife4的maven坐標
- 在配置類中加入knife4相關配置
- 設置靜態資源映射,否則接口文檔頁面無法訪問
接口文檔訪問路徑為localhost:8080/doc.html
問題:通過Swagger就可以生成接口文檔,那么就不需要YApi了?
- YApi是設計階段使用的工具,管理和維護接口
- Swagger是在開發階段使用的框架,幫助后端開發人員做后端的接口測試
常用注解
通過注解可以控制生成的接口文檔,使接口文檔擁有更好的可讀性,常見注解如下: