??xml version="1.0" encoding="utf-8" standalone="yes"?> 一?span style="font: 7pt 'Times New Roman'"> 问题描述Q?/span> 1. 技术?/span>Ext2.0 Q?/span>struts2.0 2. 在一?/span>form表单中,有一个参Cؓ(f)urlQ这?/span>url是维护在数据库中的,代表一个业务数据显C的面Q当用户选择此业务进行处理时Q就需要蟩转到此业务类型的面q行昄Q同时还需要传输过M些数据;׃传输的数据量也是不定的,可能?x)超q?/span>1024Q所以?/span>javaScript?/span> window.location q行跌{Q参C递可能有问题Q所以需要更改ؓ(f)post的方式将数据传递过厅R?/span> 二?span style="font: 7pt 'Times New Roman'"> Ext2.0 form ?/span> Ext 中的form表单提交Q默认的情况下ؓ(f)ajax方式Q也是说当你点?/span>form?/span>submit按钮Ӟ面不进行蟩转,只是q回处理l果Q成功或者失败)(j)?/span> 但是Ext q提供了(jin)?/span>ajax的方式提交,只是需要额外的配置Q?/span> onSubmit : Ext.emptyFn, submit : function() { submitForm.getForm().getEl().dom.method = 'post'; submitForm.getForm().getEl().dom.action = rootPath + "elecbill/common/unTask_goBusiPage.action"; submitForm.getForm().getEl().dom.submit(); } 在上面的配置中蓝色的部分是form表单的非ajax提交方式Q然后再指定其数据传输方式?#8216;post’方式?/span> 三?span style="font: 7pt 'Times New Roman'"> Struts2?/span>Chain Result介绍 ?/span>struts2中配|请求的跌{Q都是在struts.xml中指?/span>action?/span><result>节点Q默认我们都是蟩转到×××.jsp面Q但是有时候我们要跌{到其他h已经写好?/span>action中进行处理,q时候就需要用?/span> Chain Result?/span>Chain Result的配|如?/span>: <package name="public" extends="webwork-default"> <action name="login" class="..."> <result type="chain"> <param name="actionName">dashboard</param> <param name="namespace">/secure</param> </result> </action> </package> <package name="secure" extends="webwork-default" namespace="/secure"> <action name="dashboard" class="..."> <result>dashboard.jsp</result> </action> </package> 注意蓝色部分Q就是表?/span>login的蟩转将使用 /secure下的dashboard?/span>actionq行处理Q最l将跌{?/span>dashboard.jsp面 四?span style="font: 7pt 'Times New Roman'"> 问题解决Ҏ(gu) 1. 通过上面介绍?/span>Ext form的非ajax方式?/span>struts2?/span>Chain Result的处理方式?/span> 2. 我们先设计一个业务蟩?#8220;中{?#8221;Q此中{站的功能主要是接收用户选择相应的业务处理之后,Ҏ(gu)参数中的urlQ蟩转到对应的业务显C页面中?/span> 3. ?/span>Ext中的form表单配置为非Ajax方式Q?/span>action指向“中{?#8221;?/span>action submitForm.getForm().getEl().dom.action = rootPath + "elecbill/common/unTask_goBusiPage.action" 4. 然后在中转站中解析传递的url参数Q将namespace 的名U和action的名U取出ƈ且保存ؓ(f)String actionName ?/span> Sting nameSpace ?/span> ?/span>struts.xml文g中配|如下:(x) <result name="goBusiPage" type="chain"> <param name="actionName">${actionName}</param> <param name="namespace">${namespace}</param> </result> q样可以就实现?jin)动态蟩转了(jin)Q?/span>
]]>
]]>
Lombok是一个开源项目,可以用来消除Java代码的冗?/span>
详细介绍参看http://www.ibm.com/developerworks/opensource/library/os-lombok/index.html
下面介绍Lombok如何消除Java代码的冗ѝ?/span>
1.
首先?/span>http://projectlombok.org/
. 下蝲lombok.jar ?/span>
2.
如果?/span>windows操作pȝQ可以直接双?/span> Lombok.jar 文g使用打开q行安装Q?/span>
选择你准备安装的eclipse版本。(在这里安装主要是Z(jin)使用eclipse~辑java文g时方便查看)(j)?/span>
3.
安装完成后,打开eclipse创徏一?/span>java工程Q然后开始进?/span>java代码~写
通过上面的代码大家是不是发现?/span>JavaBean了(jin)很多代码Q只要在class前增?/span> @Data ׃(x)直接里面的U有字段字段生getQ?/span>setҎ(gu)?/span>toStringQ)(j)Q?/span>equalsQ)(j)Q?/span>hashCodeQ)(j)Ҏ(gu)?/span>
Q安装过lombok之后?/span> outline中可以看见)(j)
4.
如果一?/span>get或?/span>setҎ(gu)不想公开
?/span>name属性前增加@GetterQ?/span>AccessLevel.PROTECTEDQ注解,getName()的访问权限发生变化?/span>
5.
Lombok提供?/span>toString()
Ҏ(gu)?x)列出类名以及(qing)所有的属性名和|中间以逗号分割Q如果想忽略某个属?/span>
在类上面增加注解@ToString(exclude=”name”)
q样name属性就不会(x)输出
6.
修改hashCodeQ?/span>equalsҎ(gu)
在类上面增加@EqualsAndHashCode(exclude="name")
7.
消除ry/catch/finally 代码?/span>
?/span>InputStream
前增?/span>@clearup 注解Q消除了(jin) try/catch/finally 块,q且关闭?jin)开放流?/span>
ȝQ?/span> Lombok 让我们的代码看v来整z了(jin)很多Q减了(jin)冗余Q有利于后期的维?/span>
如要转蝲h明出处?/span>
在项目初期需求分析完成之后,需要将数据模型设计出来Q一般我们进行数据模型设计时QL惛_的是设计的数据模型尽量符?#8220;W三范式”。但是经q本人多个项目的实践之后Q在设计数据模型时不能只是考虑要符?#8220;W三范式”Q过意的考虑规范?x)导致效率?qing)性能的问题,因此更应该根据品或者项目中的具体功能来考虑?/span>
在项目需求分析阶D,寚w求进行分c,分析需求中哪些信息l常q行增加Q删除,修改操作Q哪些需求多q行查询操作Q将q些q行分类主要是在设计数据库的时候考虑哪些数据可以q行冗余Q哪些需要遵循范式。例如:(x)大多数项目中都有“用户理”Q?#8220;机构理”Q?#8220;菜单理”{基q_信息的功能,而这些功能又?x)被目中其它功能用到Q然而对q些数据的操作往往在项目上U初期数据的操作主要是增加,删除Q修改,上线E_之后对这些数据的操作大部分集中在查询功能Q而像业务信息则正好相反,上线初期对业务信息数据的操作压力很小Q但是系l逐渐E_之后Q业务信息数据量׃(x)q速增ѝ?/span>
Ҏ(gu)数据操作的特Ҏ(gu)设计数据模型。例如:(x)pȝ理数据Q这些数据大多是用户信息的维护,权限的维护,部门的维护等{;q些数据׃只是在系l用初期频J的q行增加Q删除,修改Q系l稳定后大部分是查询操作Q所以这部分的数据模型设计经可以多考虑一些数据冗余,数据一致性由E序q行保证Q这样在以后的查询时׃必ؓ(f)?jin)显C某个字D信息而多兌很多表。而像“业务信息理”q样的功能,׃整个pȝE_之后数据的操作主要在此,可以按照“W三范式”q行设计Q以后的优化攚w等也比较方ѝ?/span>