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開始。 –