1
我在学习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
所有实例之间共享?
是的,它绝对会导致与您描述的完全相同的竞争状态。 – yole
同意。这将导致竞争状况。如果您需要访问角色某处的角色,请考虑将其存储在会话或请求属性中。我也相信struts/struts2可以将角色作为参数传递给您要转发的动作。 – Michal
*学习struts *? S1是EOL。从Struts2开始。 –