分享
 
 
 

项目实践点点滴滴

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

1) 先HTML再JSP

web application对客户来说就是一堆html的集合,做出一个html样本既能让客户及早调整需求,也易于将来用html+struts转化

2) Reusable Design

可以把很多共同特性写成可复用系统,它们有超于当前项目的地位,由高手负责设计实现和维护,这样的模块可以找到很多,比如内部搜索(含底层的sql search engine也可复用),角色资源权限系统

3) Don't reinvent the wheel

Jarkata Commons项目拥有众多出色的实用jar,从出名的digester,BeanUtils,DBCP,Collections到Codec,IO,Net,FileUpload,HTTPClient能利用的资源太多了,好好学习非常受用

4) 显式的和分层次的异常声明

如果一个method可能抛出DaoException,NoDataFoundException,AppException,UnexpectedException,那么需要全部列出不能在方法声明出直接写 throw Exception { ... } 另外我觉得j2ee项目,每一个层次需要定义两层exception(在逻辑上,非必要),一层是内部使用,一层与上下层交互,比如java.rmi.RemoteException就是一种较高层次的异常,所有细节层次的异常在出这个层的时候应该用exception的initCause()方法包装再抛出。

以上所说的分层次也并非必需,但在大部分情况下一个完整的exception体系需要建立,如web app有一个叫ApplicationException作为所有被这个application内部抛出的异常的super class,这样在某个层次,如果必要,程序就可以catch appException继而完全避免这些可预见的异常,当然与此对应的unexpectedException当然就不需要application处理。常见的ApplicationException有InvalidParameterException, DaoException, NoDataFoundException, TooLargeResultsetException, OptimisticLockingException等等

5) VO/DTO的应用(Value Object, Data Transfer Object)

就我的理解VO/DTO的作用并不在于简化程序,倒在于降低耦合。其实有些时候VO的使用挺烦的,它的好处在接口要改动时才会体现,使得一个人不用通读另一个的代码而只要照着VO/DTO更改即可。我现在的项目VO主要用于Action<-->EJB之间,总的来说没什么大的问题。我不清楚应用了hibernate后会怎样,只是当前在我们的ibatis实践中,专门加了对于主要entity的VO,让ibatis将数据库获取的结果直接映射进VO entity再返回,用处不小

6) 事务处理

EJB容器可以自行管理事务,那么每个EJB Call都将是一个Transaction,这个特性实在吸引人。

下面是一个ejb-jar.xml的片断

<session>

<display-name>AccountCodeMgr</display-name>

<ejb-name>AccountCodeMgr</ejb-name>

<home>com.medlog.business.parasetting.AccountCodeMgrHome</home>

<remote>com.medlog.business.parasetting.AccountCodeMgr</remote>

<ejb-class>com.medlog.business.parasetting.AccountCodeMgrEJB</ejb-class>

<session-type>Stateless</session-type>

<transaction-type>Container</transaction-type>

</session>

在没有ejb的时候,以ibatis为例,可以用以下方法在baseDAO里实现Transaction处理

constructor() { sqlMap = SqlMapUtil.getInstance().getSqlMap(); }

startTransaction() { sqlMap.startTransaction(); }

endTransaction() { sqlMap.commitTransaction(); sqlMap.endTransaction(); }

rollbackTransaction() { sqlMap.endTransaction(); }

剩下的就好处理了。

7) Fast Lane Reader Pattern for DAO 外交快速通道??

EJB的初始化,jndi查找以及事务管理都附带一笔额外的开销,所以在前端只需浏览而不需改变数据库内容的时候,我们应用了Fast Lane Reader模式,action照样把业务交予Business Delegate处理,而BizDelegate根据是否改变数据库做出判断,如果答案肯定,它会将请求交给EJB处理,但若只是view,BizDelegate会直接唤醒dao执行select操作,从而绕过ejb层加快速度

8) BusinessDelegate和EJB的参数检查

还是因为EJB有overhead,经常在bizDelegate层就要进行一次参数检查,如果有错直接返回InvalidParameterException, 不浪费EJB资源,但是还存在这样一种可能,EJB_A called EJB_B with a set of invalid inputs, 这样的情况使得EJB层还需要再复查参数,虽然这样会有重复,但这种overhead毕竟不可避免

9) WebKey的应用

定义一些公用的jsp+actionrequest/session的attributeName,.让程序可读性更高,因为大部分情况下一个请求都不需要用到5个以上的attributes,所以我们可以有:

USER_VO_KEY,USER_ROLE_LIST存用户信息,MENU_ITEM_LIST存菜单项,SEARCH_CRITERIA_ONE(~FIVE)存搜索条件,SEARCH_RESULT_LIST_ONE(~FIVE)存结果,LIST_ONE(~FIVE)和OBJECT_ONE(~FIVE)存其他信息。毫无疑问代码可读性大大提高,只是我还在考虑是否有更好的方法,毕竟webkey还是摆脱不了初级程序员随便乱加/乱给各object赋值的恶梦

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有