仓酷云

标题: 来看J2EE体系非常的处置原则 [打印本页]

作者: 再见西城    时间: 2015-1-18 11:13
标题: 来看J2EE体系非常的处置原则
其实你不用Struts,spring这些工具,直接用jsp,servlet能够很方便地写出来,而且,可以根据个人的水平、爱好,有很多方案。而struts,spring这些工具的出来。
非常的处置是每一个Java程序员经常面临的成绩,可是良多人没有准绳,碰到非常也不晓得怎样去向理,因而碰到反省非常就胡乱try...catch...一把,然后e.printStackTrace()一下了事,这类做法一般除调试排错有点感化外,没任何代价。关于运转时非常,则爽性充耳不闻。
缘故原由是良多开辟者缺少对非常的熟悉和剖析,起首应当分明Java非常系统布局,一种分层承继的干系,你必需对条理布局熟烂于心:
Throwable(必需反省)
                    Error(非必需反省)
                    Exception(必需反省)
                                    RuntimeException(非必需反省)
一样平常把Exception非常及其间接子类(除RuntimeException以外)的非常称之为反省非常。把RuntimeException和其子类的非常称之为非反省非常,也叫运转时非常。
关于Throwable和Error,则用的很少,一样平常会用在一些基本框架中,这里不做会商。
上面针对J2EE的分层架构:DAO层、营业层、把持层、展现层的非常处置做个剖析,并给出一样平常处置原则。
1、DAO层非常处置
假如你用了Spring的DAO模板来完成,则DAO层没有反省非常抛出,代码十分的文雅。可是,假如你的DAO接纳了原始的JDBC来写,这时候候,你不克不及不合错误非常做处置了,由于难以免的SQLException会跬步不离的随着你。对已这类DAO级其余非常,非常了你又能怎样呢?与其如许胡乱try...catch...,囫囵吞枣没落了非常不如让非常以别的一种非反省的体例向别传递。如许做优点有二:
1)、DAO的接口不被非常所净化,假定你抛出了SQLException,今后如果换了SpringDAO模板,那DAO接口就不再抛出了SQLException,如许,你的接口抛出非常就是对接口的净化。
2)、DAO非常向别传播给更高层处置,以便非常的毛病缘故原由不丧失,便于排查毛病或举行捕捉处置。
这里另有一个计划上经常使人困扰的成绩:良多人会问,那界说一个甚么样的非常抛出呢,大概是间接抛出一个throwRuntimeException(e)?关于这个成绩,必要分场所,假如体系小,你能够间接抛出一个throwRuntimeException(e),但关于一个复杂的多模块体系来讲,不要抛这类原生的非反省非常,而要抛出自界说的非反省非常,如许不仅利于排错,并且有益于体系非常的处置,一般针对每个模块,粗粒度的界说一个运转时DAO非常。好比:thrownewModelXxxDAORuntimeException(".....",e),关于msg信息,你可写也可不写,依据必要天真抛出。
这里罕见一个很屈曲的处置体例,为每一个DAO界说一个非常,呵呵,如许累不累啊,有多粗心义,在Service层中挪用时分,假如要捕捉,还要捕捉出一堆非常。如许致命的成绩是代码凌乱,保护坚苦,浏览也坚苦,DAO的非常应当是粗粒度的。
2、营业层非常处置
习气上把营业层称之为Service层大概服务层,Service层的代表的是营业逻辑,不要科学分太多太多层有多年夜优点,除非必要,不然别自觉分别不用要的层,层越多,效力越差,依据必要够用就好了。
Service接口中的每一个办法代表一个特定的营业,而这个营业必定是一个完全的营业,一般会看到一些傻X的做法,数据库事件设置在Service层,而Service的完成就是DAO的间接挪用,然后在把持层(Action)中,挪用了很多多少Service往完成一个营业,你气得已无语了,垂头找砖头往!!!
弄分明以上两个成绩后再回过火看非常怎样处置,Service层一般依附DAO,而Service层的一般也会由于挪用其余非反省非常办法而必需面临非常处置的成绩,这里和DAO层又有所分歧,彼一时,此一时嘛!
一样平常来讲一个小模块对应一个Service,固然大概有两个或多个,针对这个模块的Service界说一个非反省非常,以对付那些不成制止的非常反省,这个自界说非常能够复杂的定名为XxxServiceRuntimeException,将捕捉到的非常顺势转译为非反省非常后抛出。我喜好这么做,由于前台是J2EE使用,前台是web页面,它们的Struts2等框架会主动捕捉一切Service层的非常,并把非常交给开辟者往自在处置。
可是另有一种情形,因为一些特别的限定,假如某个非常一旦产生,必需做甚么甚么处置,而这类处置时硬性请求,大概挪用某个Service办法,必需反省处置甚么非常,也能够抛出非反省的自界说非常,常常呈现这类情形的是政治缘故原由。不推许这类做法,但也不排挤。
总之,关于接口,尽量不往用非常净化她!
<p>
前些天,在CSDN上看到了一个消息,说是ASP.NETAJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。
作者: 深爱那片海    时间: 2015-1-19 23:26
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.ckuyun.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
作者: 飘灵儿    时间: 2015-1-25 08:34
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
作者: 愤怒的大鸟    时间: 2015-1-25 11:08
是一种将安全性(Security)列为第一优先考虑的语言
作者: 不帅    时间: 2015-1-25 23:22
是一种语言,用以产生「小应用程序(Applet(s))
作者: 透明    时间: 2015-1-31 13:19
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
作者: 爱飞    时间: 2015-2-2 16:00
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
作者: 活着的死人    时间: 2015-2-8 00:24
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者: 小女巫    时间: 2015-2-23 18:55
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
作者: 海妖    时间: 2015-2-28 14:18
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
作者: 金色的骷髅    时间: 2015-3-7 02:49
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
作者: 仓酷云    时间: 2015-3-14 05:05
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者: 山那边是海    时间: 2015-3-21 00:26
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2