zoukankan      html  css  js  c++  java
  • 在线购物系统权限模块

        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来实现。

  • 相关阅读:
    根据实体中一个属性值查找实体数组中的所有实体并放到list中
    asp.net ajax 客户端框架未能加载 sys 未定义
    SYS_CONNECT_BY_PATH函数用法 ORACLE
    滚动条小结 平时容易忘记的小东西 JAVASCRIPT
    ORACLE 和 SQL 分别实现递归的方法
    JS 获取控件的绝对位置
    GridView内控件获取所在行的信息
    sql server 使用for xml path 将1列多行转换为字符串连接起来
    ORACLE 行转列 及函数定义
    子窗口刷新父窗口 javascript 并调用父窗口函数
  • 原文地址:https://www.cnblogs.com/jerryxing/p/2436625.html
Copyright © 2011-2022 走看看