Как получить строку запроса URL в jsp и передать ее сервлету? - PullRequest
0 голосов
/ 12 мая 2019

У меня есть страница jsp с некоторой табличной информацией, которая отображается на основе определенных параметров URL (например, ?page=4&sortby=1&rowsperpage=10). На странице есть кнопка, которая вызывает сервлет, который выполняет определенное действие с БД и перенаправляет обратно на jsp.

Теперь, после этого перенаправления я хотел бы вернуться к тому же представлению, то есть сохранить все параметры. Я думал, что сделаю это:

  1. Сохранить строку запроса в качестве атрибута сеанса, используя JSTL:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="queryString" value="${request.getQueryString()}" scope="session"/>
  1. Получить его обратно в сервлете:
if (req.getSession().getAttribute("queryString") != null) {
    queryString = (String) req.getSession().getAttribute("queryString");
}
  1. Перенаправить на тот же вид:
resp.sendRedirect("/users" + "?" + queryString);

Однако этот подход не работает. Отладка показывает, что атрибут queryString всегда равен нулю. Действительно, если я добавлю следующую строку в jsp сразу после установки атрибута сессии, на jsp ничего не будет напечатано:

<c:out value="${sessionScope.queryString}"/>

Может кто-нибудь сообщить, что не так с моим подходом / кодом?

UPDATE: Когда я пытаюсь достичь строки запроса через скриптлеты и подставить этот код для кода в пункте 1 выше, он работает отлично. Я озадачен.

<%
    String queryString = request.getQueryString();
    request.getSession().setAttribute("queryString", queryString);
%>

Спасибо.

...