我正在学习struts,我创建了一个dispatchAction
来检查用户权限,然后转发到正确的页面。
这是代码:
public class UserCheck extends DispatchAction {
private static String role = "";
public class UserAction extends DispatchAction {
public ActionForward checPrivileges(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
boolean isAdmin;
//check if admin and put outputin in isAdmin
//check if user is admin
if (isAdmin) {
role = "admin";
} else {
role = "user";
}
//forwared based on role
}
}
此代码是否会导致竞争条件,因为属性角色是静态的并且在UserCheck
的所有实例之间共享?
答案 0 :(得分:1)
是的,如果出现以下情况,将导致竞争条件:
1。您有多个UserAction实例。
2。当您只有一个UserAction实例时,但checPrivileges不是同步方法。