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