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