Отслеживание дефектов 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);
Другие вопросы по тегам