1. 程式人生 > >人人快速開發平臺開發文件 純個人手擼 跟官網的不一樣

人人快速開發平臺開發文件 純個人手擼 跟官網的不一樣

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了