Отслеживание дефектов WebApp с использованием Spring MVC
Это экран входа в систему из моего весеннего веб-приложения mvc. Мне нужно отлавливать все возможные ошибки и сохранять их в database.like системе обнаружения ошибок.
например, если пользователь нажимает кнопку входа в систему без заполнения формы ошибки, условие ничего не должно сохранять в таблице ошибок.
и если он не предоставляет пароль, он должен сохранить пароль, не предоставленный.
@RequestMapping(value = { "/do-login" }, method = RequestMethod.POST)
public String login(@ModelAttribute(value = "user") User user) {
process(user);
return "success";
}
public void process(User user) {
List<User> users = userService.findAll();
for (User u : users) {
if (!u.getUserName().equals(user.getUserName())) {
IssueDetail detail = new IssueDetail();
detail.setSummary("user name");
detail.setDescription("wrong user name entered");
issueDetailService.save(detail);
} else if (!u.getPassword().equals(user.getPassword())) {
IssueDetail detail = new IssueDetail();
detail.setSummary("password");
detail.setDescription("wrong password entered");
issueDetailService.save(detail);
} else if (!u.getUserType().equalsIgnoreCase(user.getUserType())) {
IssueDetail detail = new IssueDetail();
detail.setSummary("user type");
detail.setDescription("wrong user type entered");
issueDetailService.save(detail);
}
}
}
я попробовал приведенный выше код.... когда вышеупомянутый цикл запускается, если пользователь не вводит ни одно из полей, цикл сохраняет 3 раза оператор if в базе данных.
Есть ли альтернативный способ сделать это.
ТЕСТОВЫЕ СЛУЧАИ
Username password type
-------------------------
N N N =NULL
Y N N = WRONG PASS & TYPE
Y Y N = WRONG TYPE.
N Y Y = WRONG USER.
N N Y = WRONG PASSWORD & TYPE.
1 ответ
Решение
Попробуйте строку кода ниже, внутри метода процесса вместо вашего цикла for.
List<User> users = userService.findAll();
boolean isUserNameExist = false;
boolean isPasswordExist = false;
boolean isUserTypeExist = false;
for (User u : users) {
if (u.getUserName().equals(user.getUserName())) {
isUserNameExist = true;
break;
}
}
for (User u : users) {
if (u.getPassword().equals(user.getPassword())) {
isPasswordExist =true;
break;
}
}
for (User u : users) {
if (u.getUserType().equalsIgnoreCase(user.getUserType())) {
isUserTypeExist = true;
break;
}
}
IssueDetail detail = new IssueDetail();
if(!isUserNameExist){
detail.setSummary("user name");
detail.setDescription("wrong user name entered");
}
if(!isPasswordExist){
detail.setSummary(detail.getSummary()+" password");
detail.setDescription(detail.getDescription()+" wrong password entered");
}
if(!isUserTypeExist){
detail.setSummary(detail.getSummary() +" user type");
detail.setDescription(detail.getDescription() +" wrong user type entered");
}
issueDetailService.save(detail);