Лучший способ проверить параметры URL на веб-сайте Spring MVC? - PullRequest
2 голосов
/ 29 января 2009

Я использую Spring MVC для создания своего веб-приложения, и у меня возник вопрос о проверке параметров, которые я получаю в URL. Каков наилучший способ обнаружения недопустимых параметров и отображения ошибок пользователю?

Предположим, у меня есть страница "Просмотр профиля пользователя". Отображаемый профиль основан на параметре идентификатора пользователя, указанном в URL. Я могу перейти по следующему адресу, чтобы просмотреть профиль пользователя с идентификатором 92:

http://www.somedomain.com/profile.html?id=92

Я создал объект ProfileControlller, который будет выполнять следующие действия:

  1. Получить параметр id из объекта request
  2. Загрузка объекта UserProfile из моей базы данных
  3. Добавление объекта UserProfile к модели
  4. Создайте ModelAndView с моей моделью и "Просмотр профиля пользователя" JSP

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

Так как я новичок в весне, я не уверен. Мне нравится, как классы Validator могут использоваться с FormController объектами, если это поможет.

Ответы [ 2 ]

5 голосов
/ 29 января 2009

Если DAO возвращает null, просто верните ModelAndView для страницы ошибки.

Пример:

UserProfile profile = userProfileDao.findUserProfileById(userId);
if (profile == null) {
    return new ModelAndView("Error", "message", "Invalid user ID");
} else {
    // process accordingly.
}

В дистрибутиве Spring 2.5 проверьте приложение jpetstore в каталоге примеров. Найдите простой пример с приложением org.springframework.samples.jpetstore.web.spring.SignonController.

0 голосов
/ 29 января 2009

Из-за желания избежать написания большого количества кода, способ, которым я это делаю, заключается в том, чтобы исключение вызывалось либо уровнем доступа к данным, либо уровнем обслуживания. Затем он генерируется веб-контроллером и переходит на страницу с общей ошибкой, которая была настроена в файле web.xml, в которой говорится что-то вроде «страница не найдена».

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

Но если вы ДЕЙСТВИТЕЛЬНО позволили пользователю, например, деактивировать свою учетную запись, вы, возможно, захотите использовать такой же подход, как yawmark, и показать более конкретное сообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...