J-Hi平臺在考慮到開發時與發布后對信息、安全、效率等方面的要求不同,從而提供了設置開發模式與發布模式的開關。這個開關配置在src下的hiFrameworkConfig.properties文件中。
信息內容
1)菜單中“權限”、“權限資源”將不在顯示,因為一旦將做好的項目發布后,這些信息是不能讓客戶維護的。
2)菜單中“觸發器”、“消息管理”將不可見,因為一旦定時服務設定好,一般來說客戶很少會調整,即使是調整也應該是由開發人員來調整觸發的周期與頻率。對于消息管理也是一樣。
3) 整個“國際化”菜單項全部不顯示,這其中包括“多語言參數”、“語言編碼”、“時區”,原因這些內部均應該在開發過程中將信息內容一并編輯完成。比如有一個語言編碼就要有一套多語言參數與之對應,因些一旦系統上線,所有國際化部分的維護功能也應該同時完成。
4)“應用配置”列表中,“刪除”圖標將不再顯示,因為如果系統上線,系統中的一些基礎配置項是不能刪除,而只能更改的
對于這個功能的控制,是在main.jsp中,加入一個變量,代碼如下
安全
如果采用了發布模式后,頁面提交的URL將會被加密,而開發模式URL則是以明文顯示,開關則試前后URL的效果如下:
效率
1)如果是發布模式,DWZ版的所有js文件將采用壓縮的文件,而非一個一個的離散文件,這樣系統的傳輸的內容會更少,具體的方式參見styles.jsp文件
2)如果是發布模式,系統在啟動時一次性加載枚舉實體、枚舉值、多語言參數、應用配置這些常量性的信息進入緩存,在取這些信息時系統會自動從緩沖中取而并非每都要查詢數據庫。舉例來說,性別是一個下拉的枚舉,如果是發布模式只直接從緩沖區中取數據,而如果是開發模式它就會去數據庫中取數據,如果是一個人員列表,那么有幾個要顯示枚舉的地方就要去數據庫取幾次。因此開發模式的運行效率要遠遠低于發布模式,但開發模式更有實效性,只要數據有任何變化都可以實體的反應出來,即使是在同一個事務中,而發布模式只能在一個事務完成之后再能做數據同步處理(即內存與數據庫之間的數據同步)
hi.depolyment.published=true
下面讓我們就這個開關項做如下分析,如果值為true,也就是發布模式,它到底會影響哪些東西:信息內容
1)菜單中“權限”、“權限資源”將不在顯示,因為一旦將做好的項目發布后,這些信息是不能讓客戶維護的。
2)菜單中“觸發器”、“消息管理”將不可見,因為一旦定時服務設定好,一般來說客戶很少會調整,即使是調整也應該是由開發人員來調整觸發的周期與頻率。對于消息管理也是一樣。
3) 整個“國際化”菜單項全部不顯示,這其中包括“多語言參數”、“語言編碼”、“時區”,原因這些內部均應該在開發過程中將信息內容一并編輯完成。比如有一個語言編碼就要有一套多語言參數與之對應,因些一旦系統上線,所有國際化部分的維護功能也應該同時完成。
4)“應用配置”列表中,“刪除”圖標將不再顯示,因為如果系統上線,系統中的一些基礎配置項是不能刪除,而只能更改的
對于這個功能的控制,是在main.jsp中,加入一個變量,代碼如下
<%// 是否已發布的開關,其目的是如果為true則關閉那些對終端用戶不可見的功能按鈕 %>
<ws:set name="published" value="@org.hi.framework.HiConfigHolder@getPublished()" />
建議大家以后在自己采用J-Hi開發的系統中也可以采用該方式來控制頁面,這樣就可以做到即不影響開發,而在項目提交給用戶時同樣保證某些只在開發時才能用到的按鈕或功能,只要改變一個開關就可以控制。 <ws:set name="published" value="@org.hi.framework.HiConfigHolder@getPublished()" />
安全
如果采用了發布模式后,頁面提交的URL將會被加密,而開發模式URL則是以明文顯示,開關則試前后URL的效果如下:
http://localhost:8080/hiUserEdit.action?hiUser.id=1
http://localhost:8080/hiUserEdit.action?cf4a9619dd97fc2689fb63048237404f
由此可以看出URL問號后的參數部分全部通過了加密處理,這樣使您做出的系統更安全,通過使別人URL分析不出你要獲取的信息參與也推導不出系統的結構http://localhost:8080/hiUserEdit.action?cf4a9619dd97fc2689fb63048237404f
效率
1)如果是發布模式,DWZ版的所有js文件將采用壓縮的文件,而非一個一個的離散文件,這樣系統的傳輸的內容會更少,具體的方式參見styles.jsp文件
2)如果是發布模式,系統在啟動時一次性加載枚舉實體、枚舉值、多語言參數、應用配置這些常量性的信息進入緩存,在取這些信息時系統會自動從緩沖中取而并非每都要查詢數據庫。舉例來說,性別是一個下拉的枚舉,如果是發布模式只直接從緩沖區中取數據,而如果是開發模式它就會去數據庫中取數據,如果是一個人員列表,那么有幾個要顯示枚舉的地方就要去數據庫取幾次。因此開發模式的運行效率要遠遠低于發布模式,但開發模式更有實效性,只要數據有任何變化都可以實體的反應出來,即使是在同一個事務中,而發布模式只能在一個事務完成之后再能做數據同步處理(即內存與數據庫之間的數據同步)