У меня есть страница jsp, которая отображает все записи из базы данных. В каждом столбце есть кнопка удаления. Код сервлета, который удаляет запись.Несколько чрезвычайно коротких атрибутов сеанса в приложении
new userDao().get(User.Class,Long.parseLong("id")).delete();
// for some reasons I cannot use requestDispatcher, so I store the delete successful message in a session
request.getSession().setAttribute("message","Delete successful.");
// view.html is a servlet that gets all records
response.sendRedirect("view.html");
И в view.html сервлета
request.setAttribute("message",get the message attribute from HTTPSession);
request.getSession().removeAttribute("message");
// go back to jsp
request.getRequestDispatcher("view.jsp").forward(request,response);
Многие из моих страниц, как это. Я понимаю, что сеансы используются для данных, которые охватывают несколько запросов, но это то, что я делаю хорошо или плохо. Я делаю это неправильно?
'response.sendRedirect (" view.html? Message = "+ URLEncoder.encodeURL (" D ... "," UTF-8 "));' может быть? С помощью либо view.jsp (session = false, $ {para.message}), либо JavaScript –
@JoopEggen, если вы используете этот подход, будьте очень осторожны с атаками инъекций кода. –
Рамки называют эти «флэш-атрибуты» и стараются избегать проблем с параллелизмом между несколькими вкладками, которые они вызывают: http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-flash- атрибуты –