내 응용 프로그램을 통해 여러 html 양식에 입력되는 직원 ID (배지)의 유효성을 검사하는 코드는 어디에 있습니까?Java 웹 응용 프로그램 데이터 입력 유효성 검사 방법 위치
현재 사람들이 로그인 (authenticateUser)하거나 비밀번호 (requestPassword)를 요청할 때 사용되는 STKUserForm.java에 있습니다. 이것은 지금까지 훌륭하게 작동합니다. BalusC에게 많은 감사를 보내야합니다. 내가 지금까지 작업 한 많은 것들이 DAO/Servlets 블로그를 기반으로합니다. 감사합니다 BalusC !!!!!!!!!!
하지만 관리자가 배지를 입력하여 직원에게 작업 (CommitmentItemForm.java)을 할당하는 로그인 외에도 다른 사용 사례를 만들고 있습니다. 오히려 내 비즈니스 로직을 복제하지 않을 것입니다. 언젠가 유효한 배지는 7 자리를 가질 수 있습니다. 그래서 STKUserForm 밖으로 이동해야합니다.
STKUserForm.java - 서블릿에 의해 로그인 페이지에서 호출되며 위에서 언급 한 두 메소드 모두 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
STKUserDAO에 코드를 넣는 것만으로 꼭 필요한 것은 아닙니다. DB에 전화 해. db 연결을 시작하기 전에 FormUtil.isBadge (badge) 호출을 가질 수 있습니다. 실패 할 경우 예외가 발생하고 db 호출이 수행되지 않습니다. – BruteForce
저는 리팩토링을했는데 당신의 제안은 지금까지 꽤 잘 작동하고 있습니다. – jeff