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

  • 相关阅读:
    牛客网-练习题
    牛客网-趋势科技-2020届校园招聘上机考试-1
    976. Largest Perimeter Triangle--Easy
    812. Largest Triangle Area--Easy
    123. Best Time to Buy and Sell Stock III--Hard
    1131. Maximum of Absolute Value Expression--Medium
    1103. Distribute Candies to People--Easy
    满足高并发的I/O Reactor线程模型 (附图,附代码)
    最简洁易懂的方式介绍I/O模型
    从鸿蒙OS的特性看华为应对封锁的策略
  • 原文地址:https://www.cnblogs.com/jerryxing/p/2436625.html
Copyright © 2011-2022 走看看