Передача параметра без использования HTML-форм в JSP

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

мой вопрос: Можно ли передать параметр между страницами JSP, если параметр не был установлен в HTML <form> теги?

3 ответов


страница JSP не может определить разницу между URL-адресом GET, созданным вручную, например:

<a href="/foo.jsp?bar=baz">Go to the next JSP page</a>, против чего-то вроде:

<form method="get" action="/foo.jsp">
<input name="bar" value="baz">
</form>

в любом случае к нему можно получить доступ через getParameter или getParameterValues

ты об этом спрашиваешь?


существует несколько способов передачи информации с одной страницы JSP на другую.

1. Скрытые значения.

просто напишите данные в поле ввода в форме с типом "скрытый", например

<input type="hidden" name="mydata" value="<%=thedata%>">

данные, написанные таким образом, будут отправлены обратно, когда соответствующая форма будет отправлена. Это может быть полезным способом "переноса" информации, поскольку пользователь заполняет ряд диалогов, поскольку все состояние является стороной пользователя, а кнопки назад и вперед будут работать как ожидаемый.

2. URL-адрес записи.

прикрепите параметры к URL-адресам в ссылках на странице, например

<a href="another.jsp?mydata=<%=thedata>>Go!</a>

Это также поддерживает состояние с клиентом, удаляя необходимость отправки элемента формы.

3. Cookies.

должен говорить сам за себя.Состояние по-прежнему является пользовательской стороной, но теперь обрабатывается файлом cookie. Более хрупким в некотором смысле, так как некоторые люди отключают cookies. Также кнопки назад и вперед могут делать неожиданные вещи если вы не будете осторожны

4. Серверная сторона (сеанс)

наконец, вы можете сохранить данные в переменной сеанса на одном JSP и получить его на следующем, например

session.setAttribute(String key, Object value)

и

session.getAttribute(String key)

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

он, однако, имеет то преимущество, что информация никогда не отправляется клиенту и, таким образом, является более безопасным и более надежным.


вы обычно передаете данные между страницами servlet / JSP или JSP в атрибутах области (в запросе, сеансе или приложении). Е. Г. request.setAttribute("key", data) можно установить атрибут" ключ " в одном JSP, и request.getAttribute("key") получает эти данные в другом JSP (если несколько JSP обрабатывают один и тот же запрос).

можно создать поддельные параметры, обернув ваш запрос и переопределив getParameter и аналогичный метод, если это то, что вам действительно нужно.

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