在线购物系统权限模块

    1)部门模块
        1)设计实体/数据库表(领域建模/数据库建模) 
        2)设计业务bean(DAO层)
            有些项目有Service层和DAO层,这样主要是为了解决有多个数据库来源。
            一般的项目有service层就够了,不然70%的代码都是重复的。
            不管有没有DAO层,事物一定要在业务层打开。
        3)完成相应业务的action/jsp
    2)员工模块
        a)员工的分页列表
        b)员工的添加【ajax校验用户名是否存在】/离职设置/改
    3)权限定义与权限组模块
        1>对系统的所有功能定义相应的权限。
        2>由网管针对不同部门不同员工分配权限组,在分配权限组时,可以选择该组具有的权限
        3>把权限组分配给某个员工,这个员工就会具备该组下的所有权限。
    4)权限拦截模块 A粗粒度(Filter)    B细粒度(AOP)

细粒度的权限设置有两种方案:
1:创建一个permission表(这种方案改起来比较麻烦,而且在应用初始化的时候必须加载表中的数据)
class        method            [module privilegeValue]
2:JDK5的注解(这种方案要求必须使用JDK1.5以上的版本)
注解的作用实际上等价于xml,起到了一个配置的作用。

项目用的是Struts1和Spring2,这时遇到了问题:
继承Action的类中的方法能被拦截到,而继承DispatchAction的类中的方法不能被拦截到
原因:Spring的bug/动态代理技术的问题
Spring不能对通过反射技术调用的方法应用上通知(advice)
如果没有实现接口的话,Spring使用cglib为action生成一个代理对象,
cglib是通过继承目标类,并非重写所有非finanl的方法来实现
Spring只会为在本类定义的方法应用通知,但是继承DispatchAction的类的execut方法用的是父类的方法。
他调用的是目标对象的方法,而不是代理对象的方法。

我们可以自己写一个Permission的Annotation来实现。

posted @ 2012-04-07 22:14  jerry_xing8  阅读(5434)  评论(0编辑  收藏  举报