Установить уведомление как атрибут запроса, который должен отображаться после sendRedirect
Я создал два набора сервлетов: Представления и Контроллеры / Обработчики
Просмотры: Выполнять простое чтение и пересылать данныеJSPsКонтроллеры: Выполните обновления или вставки базы данных и отправьте уведомлениеJSP или сервлет типа ViewУведомление здесь является статусным сообщением для пользователя. Пример: "Вы успешно обновили бла ..."
Если я используюrequestDispatcher.forward()
в контроллерах, и пользователь обновляет (после того, как контроллер передал управление для просмотра / jsp) страницу, подтверждая повторную отправку, есть вероятность выполнения дублирующихся действий
Если я используюresponse.sendRedirect()
Я не могу отправить какие-либо уведомления без установки их в сеансе
Есть ли здесь хорошая практика проектирования? Мы будем благодарны за любую хорошую ссылку на MVC для java без платформ, которая обрабатывает этот конкретный сценарий.
Я не использую Spring или Struts - просто старые HTTPServlets
Пример - Контроллер:
public XServlet extends HttpServlet{
public void processRequest(request, response) throws ...{
//Do some stuff here
if(success){
setUserMessage("Hooray ur profile pic is uploaded!");
} else {
setUserMessage("Oh no! We couldn't upload that file its too biG!");
}
//Send the notification
request.setAttribute("status", getUserMessage());
request.getRequestDispatcher("editProfile.jsp").forward(request, response);
}
}
Это означает, что если пользователь попытается обновить страницу, элемент управления снова перейдет на этот контроллер, и некоторые действия могут быть повторены без необходимости.
Однако, если я используюsendRedirect()
тогда я не могу показать сообщение о состоянии, не прибегая к атрибуту сеанса или не добавляя его к URL-адресу.