人人快速開發平臺開發文件 純個人手擼 跟官網的不一樣
阿新 • • 發佈:2019-02-15
1、配置
1) 從pom.xml 開始 parent 依賴包(包括springboot的所有依賴及Spring-Mybatis 的整合包,常用工具包);2)Java環境依賴 Java-version
3) 資料庫驅動包 MySQL包;
4) 任務排程依賴 quartz
5) 系統許可權框架依賴 shiro 框架整合
6) 配置檔案
(1)xml 檔案
MySQL 資料庫和實體的駝峰對映配置
日誌檔案輸出 Dev(開發環境) test(測試環境) pro(生產環境:俗稱正式環境)
(2)yml 檔案(SpringBoot 開始引入的一種json格式的配置檔案 功能類似於properties)
以生產環境為例(DEV)
首先配置資料庫驅動DataSource 分散式資料庫設計(這裡只使用一個)
整體yml 檔案開始
配置內建Tomcat 專案名,埠號,最大連線數等;
啟用dev.yml 配置檔案;
格式化輸出 jackson
指定靜態資源路徑(只針對靜態資源,不針對請求)
配置Mybatis *.xml 檔案掃描(可稱之為指定路徑)
2、專案開發
1)建立資料庫 -->MySQL 資料庫 指定主鍵ID
2)modules 檔案下建立包名(一般為業務名 如 business )
(1) 包括entity(實體) 對應MySQL 資料庫 和 resource 資料夾下 mapper 下的.xml 檔案
(2) Service (介面類) 對外暴露介面
(3) implements (介面實現類) 實現介面的方法
(4) dao (dao層介面) 對映mapper 檔案 介面實現介面的形式 去實現Service的 介面在實現類中呼叫
3) 控制器(拿出來另說)
(1) 請求處理、許可權管理、業務資料處理
(2) 基於註解形式
@Autowired 注入Service
@RestController 指定為控制器
@RequestMapping 或 @PostMapping 或 @GetMapping 指定資料介面路徑
@RequiresPermissions 指定 shiro 許可權 根據頁面配置的 許可權標識
(3) 返回實體基於 R (實體) 實現了Map介面 這裡的 HashMap也是實現了Map 介面 所以整體是實現了Map 介面
可以擴充套件 重寫 error 方法 或者 OK 方法
(4) 請求引數封裝
Query 將所有的param 在接受的時候 全部封裝在map 集合中 再整體封裝在Query中 (期間計算一些分頁所需資料)
(5) 請求過濾 ShiroConfig --> shirFilter 所有的請求都會在這個過濾器中過濾 filterMap 中的請求可以在無token時進行直接請求 無論是post還是get 否則會報401 許可權不足的錯誤
(6) 登入模組
驗證碼 隨機生成 IOUtils.closeQuietly(out); 輸出圖片
登入的時候驗證使用者名稱、密碼、和session中的驗證碼 通過使用者名稱(登入名) 取出 使用者密碼 再跟用Sha256Hash 加密演算法加密的字串進行比對
(7) token 所有的請求都會驗證token(除被ShiroConfig過濾掉的 ) AuthorizationInterceptor.preHandle(驗證token 然後轉發請求) token 會有一個過期時間 12個小時 判斷token是使用者請求的一個關鍵點,token在Header 中 不在請求的請求體中
(8) 重寫AuthenticatingFilter 中的方法 isAccessAllowed 這個方法直接廢掉 原來是在這裡面可以處理直接轉發請求 但是引入shiro 後則所有請求都首先經過onAccessDenied,獲取請求token,如果token不存在,直接返回401(從header中獲取token,如果header中不存在token,則從引數中獲取token)
4) 前端介面 前後端完全分離的情況 可以說用另外的一個web專案釋出所有的 html 檔案 來請求後臺也是OK的 HTML 作為靜態資源存在於專案中 HTML 程式碼比jsp的優點在於 純靜態 載入速度快 易於優化
(1) 新聞欄為例
整體構思: bootstrap 樣式 + jqgrid (表格) + Vue.js (物件資料) 讓你同學去了解一下VUEJS 的基本語法就OK了
頁面初始化的時候載入JS檔案 然後渲染出JqGrid 所繫結的 ID 對應的 Table (有點繞 你理解一下)
Vue 通過繫結 指定的引數賦值 指定的click 方法 指定的model 賦值或取值 等
至此 專案開發就OK了