(1)@Retention(RetentionPolicy.SOURCE)代表@Permission注解只保留在源代码阶段。@Retention(RetentionPolicy.CLASS)代表@Permission注解既要保留在源代码上面也要保留在编译后的Class文件上面。@Retention(RetentionPolicy.RUNTIME)代表@Permission注解既要保留在源代码上面也要保留在编译后的Class文件上面,并且随着类被装载到虚拟机的时候@Permission注解也要被装载到虚拟机内部。
(2)@Target(ElementType.METHOD)代表@Permission注解只能标注在方法上面。默认情况可以不用这个注解。
(3)@Permission注解属性前面不用加public,在不同包下一样可以访问@Permission注解。属性名后面加();
@Retention(RetentionPolicy.RUNTIME)//代表Permission注解保留在的阶段
@Target(ElementType.METHOD)
public
String
String
}
(4)struts-config.xml在文件中最后内容更换成红色字体部分
<controller><set-property
</controller>
(5)继承DelegatingRequestProcess
package
public
@Override
protected
HttpServletResponse
ActionMapping
(6)只对办公平台中的action进行校验
if(WebUtil.getRequestURI(request).startsWith("/control/"))
request.setAttribute("message",
request.setAttribute("urladdress",
return
}
}
return
}
Method
(11)判断方法上是否有自定义的权限注解
if(method!=null
(12)得到方法上的注解
Permission
SystemPrivilege
Employee
for(PrivilegeGroup
if(group.getPrivileges().contains(methodPrivilege))
return
}
}
return
}
return
}
private
String
(7)判断DispatchAction是否是action.getClass()的父类。
Class1.isAssignableFrom(Class2)这个方法在如下情况下返回true
(8)action.getClass()请求的action类
if(DispatchAction.class.isAssignableFrom(action.getClass()))
(9)取得由请求参数指定的方法名称
request.getParameter(mapping.getParameter());
}
try
(10)取得被拦截Method方法。如果用户在地址栏给method参数乱输入一个字符串,就会报错,返回值为null。
Return
}
}
return
}
}
联系客服