我應該在哪裏找到用於驗證將通過我的應用程序輸入多個HTML表單的員工ID(徽章)的代碼?Java Web應用程序數據輸入驗證方法位置
目前我在STKUserForm.java中使用它,當人們登錄(authenticateUser)或請求他們的密碼(requestPassword)時使用它。迄今爲止,這很有效。我必須非常感謝BalusC。到目前爲止,我的許多工作都是基於他的DAO/Servlets博客。感謝BalusC !!!!!!!!!!
但是現在,除了登錄之外,我還創建了另一個用例,其中主管通過輸入員工的徽章來爲任務分配任務(CommitmentItemForm.java)。我寧願不復制我的業務邏輯(有一天有效的徽章可能有7位數字),所以我覺得我需要將它移出STKUserForm。
STKUserForm.java - 從登錄頁面(通過servlet)調用,上面提到的兩個方法調用processBadge,然後調用validateBadge方法。
public final class STKUserForm extends Form {
public STKUser authenticateUser(STKUser LoginUser) {
<snip>
processBadge(LoginUser.getBadge());
<snip>
return authenticatedUser;
}
public void requestPassword(STKUser loginUser) {
<snip>
processBadge(LoginUser.getBadge());
<snip>
}
public void processBadge(String badge) throws DAOException {
try {
validateBadge(badge);
} catch (ValidatorException e) {
setError(FIELD_USERBADGE, e.getMessage());
}
}
public void validateBadge(String badge) throws ValidatorException, DAOException {
if (badge != null) {
if (!FormUtil.isBadge(badge)) {
throw new ValidatorException("Please enter valid badge (6 digits, numbers only, and no 'E').");
} else if (!STKUserDAO.isValidEmployee(badge)) {
throw new ValidatorException("This is not a valid badge of any EB Employee.");
}
}
}
}
那麼我應該在哪裏移動validateBadge方法? STKUser bean? FormUtil ???其他一些實用程序類?我不確定,因爲它打電話給STKUserDAO。我想通過此應用程序和其他應用程序驗證許多用例的員工徽章。
也許,但是在我擊中數據庫之前調用FormUtil.isBadge(徽章)來檢查它是否形成了良好的徽章。如果他們在數字前面意外地鍵入了'E'(我們寧願不打電話給數據庫)(這裏的一些傳統應用程序需要E +徽章號碼) – jeff 2010-08-05 16:33:10
只需將代碼放入STKUserDAO並不意味着您需要撥打數據庫。您可以在啓動數據庫連接之前進行FormUtil.isBadge(徽章)調用,如果失敗,則退出帶有例外的方法,並且不會創建數據庫調用。 – BruteForce 2010-08-06 08:39:07
我做了一些重構,到目前爲止你的建議工作還不錯。 – jeff 2010-08-09 19:17:19