仓酷云
标题:
了解下JAVA的AOP下的权限把持完成
[打印本页]
作者:
柔情似水
时间:
2015-1-18 11:23
标题:
了解下JAVA的AOP下的权限把持完成
有了这样一个呼声:让java代替C语言成为基本语言。这些足以说明java简单易学的这个优点。其次,java的功能强大,前面我也提到了,EJB3.0的推出使java成为了大型项目的首选。
OOP使用开辟面对的成绩
面向对象手艺很好地办理了软件体系中脚色分别的成绩。借助于面向对象的剖析、计划和完成手艺,开辟者能够将成绩范畴的“名词”转换成软件体系中的对象,从而很天然地完成从成绩到软件的转换。
可是,成绩范畴的某些需求却恰恰不是用如许的“名词”来形貌的。好比碰到如许的成绩:必要对体系中的某些办法举行权限查验,这类必要权限查验的办法分布在40多个类中。面临这类需求,应当怎样办呢?最间接的举措就是:创立一个起类(或接口),将权限查验的功效放在个中,并让一切必要权限查验的类承继这个起类(或接口).假如这个需求是前期提出的.必要修正的中央就会分离在40多个文件中。如许年夜的修正量,无疑会增添堕落的概率,而且加年夜体系保护的难度。
人们熟悉到,传统的程序常常体现出一些不克不及天然地合适单个程序模块大概几个严密相干的程序模块的举动比方权限查验、日记纪录、对高低文敏感的毛病处置、功能优化和计划形式等等、我们将这类举动称为“横切存眷点(crosscuttingconcern)”,由于它超过了给定编程模子中的典范职责界线。假如利用过用于横切存眷点的代码,您就会晓得缺少模块性所带来的成绩。由于横切举动的完成是分离的,开辟职员发明这类举动难以作逻辑头脑、完成和变动。
AOP的基础头脑
AOP是AspectOrientedProgramming的缩写,意义是面向方面编程,一种新兴的编程手艺。AOP实践是GoF计划形式的持续,计划形式废寝忘食寻求的是挪用者和被挪用者之间的解耦,AOP能够说也是这类方针的一种完成。它能够办理OOP和历程化办法不克不及够很好办理的横切(crosscut)成绩,如:事件、平安、日记等横切存眷。当将来体系变得愈来愈庞大,横切存眷点就成为一个年夜成绩的时分,AOP就能够很轻松的办理横切存眷点这个成绩。
登录/注册后可看大图
131JST3-0.jpg
(14.32 KB, 下载次数: 6)
下载附件
保存到相册
了解下JAVA的AOP下的权限把持完成
2015-1-18 11:23 上传
<br>
把模块作为一批存眷点来完成
一般,为满意全部企业使用某方面得需求,开辟者(架构师)必要收拾出体系得存眷点。抽象地形貌了存眷点,它可以从AOPAspect角度对待体系。好比,耐久化、日记、使用的营业逻辑一般被以为是使用必要办理的成绩。因而,他们一般作为存眷点对待。从全部体系角度思索,它常常是由大批的存眷点组成的。
我们把AOP看做是OOP的持续,而不是合作敌手。OOP在一般的场所下事情得很好,但在特定的范畴里却有所完善:举例来讲,假如我们必需为多个对象和办法使用不异的事件举动,我们必要将一样的代码剪切/粘贴到每个办法里。AOP让我们能够把这类成绩封装到方面(aspect)中,从而更好地完成模块化。AOP界说了“切进点”(pointcut)的观点,闪开发者能够从另外一个角度来思索程序的布局,从而填补了OOP的某些缺点:假如必要对一组办法施加横切的举动,就应当拦阻这些办法。
在J2EE使用开辟中,我们次要用到AOP的拦阻(interception)才能,它为我们供应了“在任何对象的办法挪用前/后到场自界说举动”的才能,这使得我们能够处置企业使用中的横切(crosscutting)存眷点(即:同时感化于多个对象的存眷点),而且仍旧坚持强范例(不必要改动办法署名)。
权限把持的使用程序完成
关于权限办理的做法,在WEB完成上,有以下几种:
⑴使用Filter,对一切进进的URI举行剖析,并获得事先Session中的User信息,然后经由过程RBAC的机制,将此链接必要的权限与用户具有的权限举行对照,然落后行响应的处置。这类做法有良多优点:复杂,简单完成,而且对体系侵进性也不强。这里URL就是RBAC中的资本了。如许做的弱点是一切对数据的操纵必需经由过程URL来表现,这一点在古代的程序中不太好完成。假如接纳Struts,XWork大概Tapestry,接纳统一个URL(扫瞄器看来)举行处置多项义务已不是甚么希奇的事。
⑵使用一个BaseServlet(Servlet+Jsp典范形式)大概BaseAction(Struts形式)大概BasePage(Tapestry形式)大概BaseController(SpringMVC形式),对一切的哀求先辈行过滤举行权限操纵,然后再处置。略微看一下就晓得这类形式跟Filter并没有实质分歧。优弱点同上。
那末,假如要完成更加仔细的权限操纵,准确到某个办法的权限,典范的做法以下:
publicsomeFunciton(){
//权限判别
Useruser=context.getUser();
if(user.canExecuteThisFunction()){
//dothebusinessmethod
//...
}else{
thrownewPermissionDeniedException();
}
}
<p>
为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。
作者:
变相怪杰
时间:
2015-1-20 23:26
是一种语言,用以产生「小应用程序(Applet(s))
作者:
不帅
时间:
2015-1-21 14:11
Java 编程语言的风格十分接近C、C++语言。
作者:
山那边是海
时间:
2015-1-30 17:35
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者:
仓酷云
时间:
2015-2-5 09:20
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者:
活着的死人
时间:
2015-2-5 15:25
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
作者:
小妖女
时间:
2015-2-12 12:45
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者:
精灵巫婆
时间:
2015-2-26 11:53
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
作者:
小魔女
时间:
2015-2-27 10:51
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
作者:
因胸联盟
时间:
2015-3-2 17:47
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
作者:
金色的骷髅
时间:
2015-3-6 12:29
是一种为 Internet发展的计算机语言
作者:
莫相离
时间:
2015-3-8 00:15
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者:
admin
时间:
2015-3-15 17:31
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
作者:
爱飞
时间:
2015-3-22 02:10
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2