2013-06-07 3 views
0

Я пишу веб-приложение, использующее JSP, с базой данных mysql, которая отслеживает всех пользователей. На веб-странице я использую форму, позволяющую пользователям регистрироваться.На каком уровне я должен проверить правильность поля формы?

В моей базе данных, например, имя пользователя у пользователя не более 20 символов, так что я бы не стал позволять пользователю регистрироваться с именем пользователя длиной более 20. В моем приложении Я строго разделяю все уровни , поэтому существует сильное разделение между службами, бизнес-логикой, бизнес-потоками и уровнем представления, выполненным с помощью JSP-страниц.

Моя забота о том, где я должен проверить, что какое-либо данное поле является правильным. В бизнес-логике я реализую класс, который абстрагирует концепцию пользователя, позволяя создать нового пользователя и вставить его в мою базу данных. В бизнес-потоках (это beans) я могу разработать все полученные параметры HTTP, поэтому я знаю все значения полей. Я мог бы сделать это на моей странице JSP, даже если javascript анализирует каждое вставленное поле и условно представляет форму, в компонентах или в моем «пользовательском» классе. Какой из них был бы самым правильным?

ответ

1

Предполагая, что вы используете шаблон близко к MVC

Проверка ввода имеет отношение к контроллер часть. Контроллер обрабатывает данные, а затем отображает удобное для пользователя сообщение об ошибке, передавая сообщение об ошибках вашему представлению. Любая обработка должна выполняться в контроллере, и проверка данных обрабатывается.

В любом случае, дополнительная безопасность на модели не так уж плоха, но в этом случае она абсолютно бесполезна, потому что механизм базы данных будет обрезать (или выбросить ошибку), если вы вставляете более 20 символов, поэтому безопасность все уже на месте.

Модели предназначены только для доступа и хранения данных, а не для проверки! (За исключением некоторых редких случаев, когда хранение данных требует проверки и когда структура базы данных не проверяет целостность сама по себе).

Но опять же, это просто концепции, вы можете принимать концепции так, как вам нравится. Пока вы совместимы в своем приложении (не делайте некоторые проверки в моделях, некоторые в контроллерах, и почему не некоторые из них видны, если мы на это!)

0

Я бы сделал это в классе модели.

То, что вы не должны делать это Doong проверки с JavaScript на клиенте, так как пользователь может отключить JS