JSP, Java, JSTL и сервлеты для реализации PRG в веб-приложении MVC Management с входом / выходом из системы - PullRequest
0 голосов
/ 28 апреля 2011

Я использую JSP, Java, JSTL и сервлеты для реализации базового веб-приложения менеджера магазина.

Я пытаюсь реализовать шаблон PRG (POST-Redirect-GET) поверхШаблон MVC (Model-View-Controller).

Я не уверен, что PRG будет работать для того, что я хочу.

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

Проблема возникает при регистрации-in пользователь переходит на страницу только для входа .response.sendRedirect(urlInStringForm) убивает все параметры запроса.Конечно, вы можете хранить вещи в сеансе HTTP, но если у вас есть один сервлет PageController, то этот сервлет наверняка будет искать указанные данные сеанса ... и пользователь попадает на ту же страницу, если он щелкает назад или вперед (при условии, что впередпереходит к другому ресурсу, который перенаправляется на PageController).Я хотел бы сохранить подход 1-PageController, если это возможно.

Похоже, ситуация проигрышная.Есть обходные пути?

1 Ответ

2 голосов
/ 28 апреля 2011

Спасибо комментатору, BalusC, думаю, я понял это.Это супер базовый подход:

  • Использовать JSP для представлений.
  • Использовать сервлеты Java в качестве контроллеров (да, несколько контроллеров), и ВСЕГДА использовать response.sendRedirect(<url string>);, за которым следует return;.
    • Когда пользователю необходимо отправить что-то для обработки, используйте POST.Никогда не отправляйте в другое представление.Всегда публиковать в сервлете (контроллере).
    • Если пользователю просто нужно перейти к другому представлению без обработки, используйте GET.
  • Используйте HttpSession или кукихранить временные данные связи.Вы даже можете поместить объекты Java в атрибуты HttpSession.
  • Использовать Java Beans для модели;используйте JSTL для доступа к их качеству внутри JSP.
  • Используйте один выделенный класс Java или модуль выделенных классов Java (возможно, bean-компоненты) для взаимодействия с любыми базами данных, которые вы можете включать.
  • Используйтессылка, предоставленная BalusC ниже, чтобы узнать, что нужно сделать для предотвращения кэширования в определенных браузерах.Таким образом, вы можете устранить те неприятные случаи, когда нажатие кнопки «Назад» в браузере может показать информацию только для входа в систему после выхода из системы.
  • При необходимости используйте HTTPS.

"Head First Servletsи JSP "- хорошее чтение для новичков.«Java-сервлеты Murach и JSP, 2-е издание» тоже хороши.

...