Разве процесс проверки не работает на стороне сервера в Struts 2?

Меня смущает концепция проверки в Struts. ActionSupport класс предоставляет метод validation()

public void validate(){}

который используется для проверки формы. Но разве этот процесс не работает на стороне сервера?

Если это так, значит ли это, что концепция валидации не соответствует действительности?


person Subodh    schedule 13.03.2014    source источник
comment
не проходит проверку? Хотите уточнить?   -  person Aleksandr M    schedule 13.03.2014
comment
Я думаю, вам нужно сначала узнать о проверках на стороне клиента и на стороне сервера.   -  person Gundamaiah    schedule 13.03.2014
comment
Вы должны быть более конкретными о том, что вы спрашиваете.   -  person Roman C    schedule 13.03.2014


Ответы (2)


Вопрос не ясен.

Да, метод validate() действия, очевидно, проверяется на стороне сервера.

Это хорошо, потому что данные должны проверяться на стороне сервера, независимо от того, происходит ли какая-либо проверка на стороне клиента. Рассмотрим (а) пользователей, у которых отключен JavaScript, и (б) ручные запросы, сделанные не через браузер. В то время как (а) встречается все реже, (б) представляет реальную опасность.

Вы не можете полагаться только на проверку JS.

person Dave Newton    schedule 13.03.2014
comment
Этот метод работает только при включенной программной проверке (по умолчанию true). - person Roman C; 13.03.2014
comment
Это означает, что мы должны проверить форму как на стороне клиента, так и на стороне сервера. - person Subodh; 13.03.2014
comment
@Subodh Нет, это не так, хотя в целом это лучший UX, если вы это сделаете. Но вы не можете пропустить проверку на стороне сервера. - person Dave Newton; 13.03.2014
comment
@RomanC Запрос Ajax — это такой же запрос, как и любой другой; они все еще должны быть проверены, ИМО. YMMV. - person Dave Newton; 13.03.2014
comment
@DaveNewton На самом деле я не согласен с YO, но это не имеет значения, потому что мне это не понравилось. - person Roman C; 13.03.2014
comment
@RomanC Какое оправдание для отказа от проверки данных веб-запроса? Данные есть данные; неважно, как он входит в систему. Если у вас есть поле, такое как, скажем, номер социального страхования, которое должно соответствовать определенному формату или шаблону, независимо от того, входит ли оно в виде поля формы или запроса Ajax, оно все равно должно соответствовать этому формату или шаблону. Как только он попадает на ваш сервер, вы не можете просто сказать «О, должно быть все в порядке», потому что он пришел из запроса Ajax, потому что любой может отправить запрос Ajax, если он использует ваше приложение. - person Dave Newton; 13.03.2014

Разве этот процесс не работает на стороне сервера?

Конечно, это проверка на стороне сервера. По умолчанию Struts 2 настроен на использование программной проверки независимо от декларативного способа.

Оба являются серверными, Struts2 также имеет проверку на стороне клиента, которая использует JavaScript. Правильная вещь, если вы используете проверку как на стороне клиента, так и на стороне сервера.

Если ваш класс действий расширяет ActionSupport, вы можете переопределить метод validate() для использования с программным методом проверки, используемым платформой. В теле метода вы можете реализовать собственную логику для проверки полей.

Метод validate() вызывается validation перехватчиком, который является частью стек перехватчика по умолчанию defaultStack.

Действие должно предоставлять результат INPUT для возврата ошибок действия или ошибок поля.

Подробнее о программной проверке с использованием validation interceptor вы можете узнать по этой ссылке.

person Roman C    schedule 13.03.2014