J-Hi平台在考虑到开发时与发布后对信息、安全、效率等方面的要求不同,从而提供了设置开发模式与发布模式的开关。这个开关配置在src下的hiFrameworkConfig.properties文件中。
hi.depolyment.published=true
下面让我们就这个开关项做如下分析,如果值为true,也就是发布模式,它到底会影响哪些东西:
信息内容
1)菜单中“权限”、“权限资源”将不在显示,因为一旦将做好的项目发布后,这些信息是不能让客户维护的。
2)菜单中“触发器”、“消息管理”将不可见,因为一旦定时服务设定好,一般来说客户很少会调整,即使是调整也应该是由开发人员来调整触发的周期与频率。对于消息管理也是一样。
3) 整个“国际化”菜单项全部不显示,这其中包括“多语言参数”、“语言编码”、“时区”,原因这些内部均应该在开发过程中将信息内容一并编辑完成。比如有一个语言编码就要有一套多语言参数与之对应,因些一旦系统上线,所有国际化部分的维护功能也应该同时完成。
4)“应用配置”列表中,“删除”图标将不再显示,因为如果系统上线,系统中的一些基础配置项是不能删除,而只能更改的
对于这个功能的控制,是在main.jsp中,加入一个变量,代码如下
<%// 是否已发布的开关,其目的是如果为true则关闭那些对终端用户不可见的功能按钮 %>
<ws:set name="published" value="@org.hi.framework.HiConfigHolder@getPublished()" />
建议大家以后在自己采用J-Hi开发的系统中也可以采用该方式来控制页面,这样就可以做到即不影响开发,而在项目提交给用户时同样保证某些只在开发时才能用到的按钮或功能,只要改变一个开关就可以控制。
安全
如果采用了发布模式后,页面提交的URL将会被加密,而开发模式URL则是以明文显示,开关则试前后URL的效果如下:
http://localhost:8080/hiUserEdit.action?hiUser.id=1
http://localhost:8080/hiUserEdit.action?cf4a9619dd97fc2689fb63048237404f
由此可以看出URL问号后的参数部分全部通过了加密处理,这样使您做出的系统更安全,通过使别人URL分析不出你要获取的信息参与也推导不出系统的结构
效率
1)如果是发布模式,DWZ版的所有js文件将采用压缩的文件,而非一个一个的离散文件,这样系统的传输的内容会更少,具体的方式参见styles.jsp文件
2)如果是发布模式,系统在启动时一次性加载
枚举实体、
枚举值、
多语言参数、
应用配置这些常量性的信息进入缓存,在取这些信息时系统会自动从缓冲中取而并非每都要查询数据库。举例来说,性别是一个下拉的枚举,如果是发布模式只直接从缓冲区中取数据,而如果是开发模式它就会去数据库中取数据,如果是一个人员列表,那么有几个要显示枚举的地方就要去数据库取几次。因此开发模式的运行效率要远远低于发布模式,但开发模式更有实效性,只要数据有任何变化都可以实体的反应出来,即使是在同一个事务中,而发布模式只能在一个事务完成之后再能做数据同步处理(即内存与数据库之间的数据同步)