Blog

15 search results for:

1

权限控制的实现

/ in Boke / by jin.pan
权限管理,一般指通过在系统中设置的安全策略,用户可以访问而且只能访问自己被授权的系统资源,不多不少。权限管理几乎出现在任何系统里面,只要有用户和密码的系统。 因此很多人,常将“用户身份认证”、“密码加密”、“系统管理”等概念与权限管理概念混淆。 本篇文章主要说的是网站的权限管理实现,通过过滤URL或控制方法执行来进行限制。 通过利用Filter,对所有进入的URI进行解析,并取得当时Session中的User信息,然后通过RBAC的机制,将此链接需要的权限与用户拥有的权限进行比较,然后进行相应的处理。这种做法有很多好处:简单,容易实现,并且对系统侵入性也不强。这里URL就是RBAC中的资源了。 这样做的缺点是所有对数据的操作必须通过URL来体现,这一点在现代的程序中不太好实现。如果采用Struts, XWork或者Tapestry,采用同一个URL(浏览器看来)进行处理多项任务已不是什么稀奇的事。这时候同一个url里功能对应的角色不同,就不能通过URL过滤了。 通过AOP控制,在上一篇中就有提到,通过使用AOP可以精确控制到每一个执行方法的权限,也就是说小到一个按钮触发的业务也可以进行控制,并且由于AOP的切面管理可以对每一个细节功能做到方便的调配。不过AOP无法做到像Filter那样对网页进行过滤,只能对网页中的每一个细节功能进行控制,所以某种程度上来说Filter和AOP结合可以让权限管理得到最大的灵活度。
2

浅谈面向切面编程

/ in Boke / by jin.pan
Aspect Oriented Programming(AOP),即面向切面编程,是前段时间比较是一个比较热门的话题,在学校老师给我们讲OOP的时候,就经常提到它。面向切面编程主要实现的目的是针对业务处理过程中的切面提取,它所面对的是某个步骤或阶段的统一处理过程,以获得逻辑过程中各部分之间低耦合性的隔离效果。比如我们上星期完成的日志记录和权限管理就采用了这一技术。 我们举个简单的列子,我们现在提供一个服务修改订单信息的,但是我们希望记录有谁进行了这个操作。那我们实现了一个订单的服务接口和其实现类,同时为了要进行记录的话,那我们在实现类中就要添加其实现记录的过程。 这样的话,假如我们要实现的服务有多个呢?那就要在每个实现的类都添加这些类似且重复的记录过程。这样做的话就会有点繁琐,而且每个实现类都与记录服务日志的行为紧耦合,违反了面向对象的规则。 那么怎样才能把记录服务的行为与业务处理过程中分离出来呢?看起来好像就是修改订单的服务自己在进行,但却是背后日志记录对这些行为进行记录,并且修改订单的服务不知道存在这些记录过程,这就是我们要讨论AOP的目的所在。 下面介绍一些AOP的概念,方面(Aspect):一个关注点的模块化,这个关注点实现可能另外横切多个对象。事务管理是J2EE应用中一个很好的横切关注点例子。方面用Spring的Advisor或拦截器实现。连接点(Joinpoint):程序执行过程中明确的点,如方法的调用或特定的异常被抛出。 通知(Advice):在特定的连接点,AOP框架执行的动作。各种类型的通知包括“around”、“before”和“throws”通知。通知类型将在下面讨论。许多AOP框架包括Spring都是以拦截器做通知模型,维护一个“围绕”连接点的拦截器链。切入点(Pointcut):指定一个通知将被引发的一系列连接点的集合。 AOP框架必须允许开发者指定切入点,例如,使用正则表达式。引入Introduction):添加方法或字段到被通知的类。Spring允许引入新的接口到任何被通知的对象。目标对象:包扩连接点的对象,也被称作被通知或被代理对象。 切入点的概念是AOP的关键,它使AOP区别于其他使用拦截的技术。 切入点使通知独立于OO的层次选定目标, 拦截器也由此应运而生,目前我们使用的是基于JAVA的集成到Spring 中的 SpringAOP,用此来实现了日志和权限的统一管理。
3

primefaces 学习心得

/ in Boke / by jin.pan
做了挺长一段jsf的开发了,这期间,我们用jsf的PrimeFaces实现了我们以前不敢想的UI,不得不说PrimeFaces给我们带来了意想不到的福音。 PrimeFaces是一个用于提高JSF Web应用程序开发效率的开源类库,通过它,可以让UI直接和后台对接,它提供了丰厚的ui库,简单易学的案例,方便上手,而且还省去了css和图片的设计时间,是一个很强大的开源类库。 PrimeFaces主要由三个模块组成:第一个是UI Components,PrimeFaces的 UI模块提供了拥有Rich Web用户体验的各种JSF组件,如可即时编辑的datatable、绚丽的日期选择器、便利炫彩的上传下载控件等等,如果要用javascript去实现,必当要花相当多的时间,有了FacesTrace模块,我们可以轻松的使用这些UI。 PrimeFaces使用Yahoo UI库做为默认的客户端框架。PrimeFaces提供的JSF组件能够处理JavaScript Rendering,并且处理如何在服务器端与JSF集成,实现点对点连接。PrimeFaces UI组件还包括:HtmlEditor、ImageCropper、Dialog、AutoComplete、Flash based Chart等。 基本上页面需要的控件都有了,最重要都是,它还支持通过Ajax更新页面,这在性能上,和用户体验上可以说是相当重要的。第二个模块是Optimus,Optimus提供简化JSF开发的解决方案。 Optimus提供基于Google Guice IOC容器的注释来代替XML配置和一个XML-less Navigation Handler能够让你减少基于XML配置JSF Navigation的需要,只需要简简单单的注解,你就可以实现对页面的控制。 此外Optimus还支持利用JPA实现数据持久化;只需几个标签,你就可以将DataTable的内容导出成Excel与PDF。而且它支持安全扩展。 第三个FacesTrace模块,因为目前我们做的项目对FacesTrace模块还不是非常了解,这里只做简单介绍,FacesTrace模块提供跟踪JSF Web应用程序的各种工具包括:JSF LifeCycle可视化查看器;性能跟踪器; Log4J适配器;FacesMessage监听器;组件树可视化查看器等。 虽然PrimeFaces相当出彩,可惜使用的人视乎很少,很难找到资料学习,现在基本上都是靠自己用官网的资料来学习,有不少兼容性的问题,项目结束以后在和大家分享。
4

Java在翻译中需注意的问题

/ in Boke / by jin.pan
首先先说说Java关键字,是电脑语言里事先定义的,有特别意义的标识符,通常使用的关键字,一般和前后单词不会构成有意义的语句,如 代码 char cat; , 其中char是关键字,char cat从字面翻译无意义。类似的关键字还有: abstract assert Boolean break byte case catch char class continue default double else enum extends final finally float for if implements import instanceof…
5

浅谈组件化开发

/ in Boke / by jin.pan
这段时间开始新项目的开发,这次开发我们使用的是组件化开发,把每一个功能模块分成不同的组件,实现即插即拔的效果。 目前的组件技术主要以Activex、Corba、VCL、EJB为代表,他们都实现了可拔插、可替换的功能,提供了分布式计算服务,甚至可视化控件,大大提高了开发效率和维护性。 通过引入组件化的思想,安业务需求分成各个实现单元,然后将其包装成可独立部署的组件,通过组件的灵活组装,达到最大化的复用,并可以快速的应对需求变化。同时通过组件化降低系统内部的耦合度,组件化为系统运行维护期的可管理性和可维护性提供技术上的支持。 很多行业的发展都与当时的技术背景和发展状况有着直接或间接的关系,但是 软件就其本身特征而言更加具有复杂性,它从一开始应用于简单计算到现在渗透 到各行各业,与传统行业相比,无论从外延还是解决问题的复杂性,都有它的独特性。 业界的技术发展在几十年经历了面向机器、面向过程、面向对象、面向组 件的发展历程,每个阶段较前一个阶段在关注点和思维层次上都有一定的升华, 都解决了某类问题,为当时的软件发展起到了重要作用。 下面说说组件化的特点: 1)组织和过程 为保证技术组件的通用性、适合度和质量,需要建立组件评审机制,负责对 技术组件的验证、评审。在流程上,需要建立技术组件立项、研发、测试、评审、 入库、推广的过程管理。 2)应用场景 在新应用系统丌发前,设计师需要根据项目特点,从技术组件库中检索出适 合的技术组件,并确定技术组件的版本,导出组件包,统一在项目中使用。为了 提高组件重用率,设计师应优先使用技术组件库提供的组件包,而不是采用代码 级复用的方式。 针对新丌发的技术组件,组件设计和开发者必须按照技术组件规范要求,提 供技术组件的源代码、二进制组件包以及自描述信息,包括适用范围、功能描述、 版本、作者、依赖关系、接口描述等。并按技术组件开发过程的要求,提交到技 术组件库中。 3)技术组件库 技术组件库是一套单独的应用,技术组件的管理是通过技术组件库来实现 的。 总之,通过组件化,可以极大的实现重用性, 提高开发效率,快速灵活应对业务需求,通过降低耦合度提升系统的可管理性, 从而降低维护成本,是一个高可靠的开发方案。 组件化开发模型
6

jsf的学习心得

/ in Boke / by jin.pan
学习了一段时间的jsf,感觉到jsf是一个非常好的框架,只可惜在国内却有非常少的资料提供学习,现在分享这段时间我学习jsf的一点心得 Jsf是组件式的开发,组件是Struts和JSF之间最大的区别。就像Swing一样,JSF提供丰富的底层构件去开发组件然后添加到标准的组件集。那些底层构件让你很容易的生成自己的组件并且和别人共享。现在我们到处都能看到自定义组件跳出来,比如说Oracle的ADF和MyFaces,两者都提供了丰富的组件集,就像javascript日历,tree等等。 当然,组件只是一部分。典型的是,组件都和一个独立的renderer对应,这给我们带来了真正的好处(看第3条)。但是和JSF中的很多东西一样,你不一定要墨守成规。只要你愿意,你可以实现render自己的组件,虽然这样你会失去给组件加入别的renderer的能力。 你有看过Struts的标签的源代码吗?它直接生成HTML。JSF组件标签什么都不生成,它和服务器上的一对component-renderer对应。Component维护组件状态,rendered负责获得视图。重点是renderers是可插拔的,即你可以根据自己需求实现然后替代掉默认实现。比如说我在NFJS上面的Felix谈话中举例说明了怎么去实现一个自定义的label renderer。你只需要配置你的renderer,JSF就会自动在你的应用程序里面使用他。 这使得开发非常的快速便捷。 Struts是一个开源产品,然而JSF是一个标准。这个细节常常被新的JSF学习者忽略,其实这是显而易见的,因为我们有多个JSF的实现。虽然JSF还很不成熟,但是我们已经有了2个优秀的JSF实现可以选择:Sun的参考实现和Apache的MyFaces。另一方面,我们只有一个Struts。

Need Translation Service?

Please enter your personal details and we will contact you shortly.