最近換了一家公司,項目要求必須用人人快速開發平台寫代碼,這個平台是可以前后端分離的,剛開始不懂,整個過程痛苦的感覺頭發稀少了一大半,后來不停的在網上找關於這方面的資料,下來我就把我最近找的資料分享一下;
這塊有一個官方能給的具體一點的開發文檔:https://www.renren.io/guide/#func
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了