Разница между getAttribute() и getParameter()

В чем разница между методами getAttribute() и getParameter() в классе HttpServletRequest?

Ответ 1

  • getParameter() возвращает параметры http-запроса. Они передаются от клиента к серверу. Например http://example.com/servlet?parameter=1. Может возвращать только String

  • getAttribute() используется только для использования на стороне сервера - вы заполняете запрос атрибутами, которые вы можете использовать в рамках одного запроса. Например, вы устанавливаете атрибут в сервлет и читаете его из JSP. Может использоваться для любого объекта, а не только для строки.

Ответ 2

Как правило, параметр представляет собой строковое значение, которое наиболее часто известно для отправки от клиента на сервер (например, сообщение формы) и извлекается из запрос сервлета. Исключительным исключением является начальные параметры ServletContext, которые являются строковыми параметрами, которые настроены в web.xml и существуют на сервере.

Атрибут - это переменная сервера, которая существует в пределах определенной области i.e.:

  • application, доступный для всего приложения.
  • session, доступный для жизни сеанса
  • request, доступный только для срока действия запроса
  • page (только JSP), доступный только для текущей страницы JSP

Ответ 3

Очень важно знать, что атрибуты не являются параметрами.

Тип возврата для атрибутов - Объект, тогда как тип возвращаемого значения для параметра - Строка. При вызове метода getAttribute(String name) помните, что атрибуты должны быть отброшены.

Кроме того, нет атрибутов сервлета, и нет параметров сеанса.

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

Ответ 4

request.getParameter()

Мы используем request.getParameter() для извлечения параметров запроса (т.е. данных, отправленных путем размещения html-формы). request.getParameter() всегда возвращает значение String, и данные поступают от клиента.

request.getAttribute()

Мы используем request.getAttribute(), чтобы получить объект, добавленный в область запроса на стороне сервера, то есть используя request.setAttribute(). Вы можете добавить любой тип объекта, который вам нравится здесь, Strings, Пользовательские объекты, фактически любой объект. Вы добавляете атрибут в запрос и пересылаете запрос другому ресурсу, клиент не знает об этом. Таким образом, вся обработка кода обычно будет в JSP/сервлетах. Вы можете использовать request.setAttribute() для добавления дополнительной информации и переадресации/перенаправления текущего запроса на другой ресурс.

Например, рассмотрим вопрос о first.jsp,

//First Page : first.jsp
<%@ page import="java.util.*" import="java.io.*"%>
<% request.setAttribute("PAGE", "first.jsp");%>
<jsp:forward page="/second.jsp"/>

и second.jsp:

<%@ page import="java.util.*" import="java.io.*"%>
From Which Page : <%=request.getAttribute("PAGE")%><br>
Data From Client : <%=request.getParameter("CLIENT")%>

В вашем браузере запустите first.jsp? CLIENT = вы и вывод в вашем браузере

From Which Page : *first.jsp*
Data From Client : you

Основное различие между getAttribute() и getParameter() заключается в том, что первый метод извлекает (сериализованный) объект Java, а другой предоставляет значение String. В обоих случаях указывается имя, чтобы его значение (будь то строка или java bean) можно было искать и извлекать.

Ответ 5

Разница между getAttribute и getParameter заключается в том, что getParameter вернет значение параметра, который был отправлен HTML-формой или включен в строку запроса. getAttribute возвращает объект, который вы задали в запросе, единственный способ использовать его в сочетании с RequestDispatcher. Вы используете RequestDispatcher для пересылки запроса на другой ресурс (JSP/Servlet). Поэтому перед отправкой запроса вы можете установить атрибут, который будет доступен для следующего ресурса.

Ответ 6

getParameter - используется для получения необходимой информации с HTML-страницы клиента

getAttribute - Это используется для получения параметров, установленных ранее на другой или той же странице JSP или Servlet.

В принципе, если вы пересылаете или просто переходите от одного jsp/сервлета к другому, нет никакой возможности получить нужную информацию, если вы не захотите разместить их в объекте и использовать атрибут set для хранения в Переменная сеанса.

Используя getAttribute, вы можете получить переменную Session.

Ответ 7

- getParameter():

<html>
<body>
<form name="testForm" method="post" action="testJSP.jsp">
<input type="text" name="testParam" value="ClientParam">
<input type="submit">
</form>
</body>
</html>

    <html>
    <body>
    <%
    String sValue = request.getParameter("testParam");
    %>
    <%= sValue %>
    </body>
    </html>

request.getParameter("testParam") получит значение из опубликованной формы окна ввода с именем "testParam", который является "Параметром клиента". Затем он распечатает его, поэтому на экране вы увидите "Client Param". Таким образом request.getParameter() будет получать значение, которое клиент отправил. Вы получите значение на стороне сервера.

- getAttribute():  request.getAttribute(), все это делается на стороне сервера. Вы добавляете атрибут к запросу, и вы отправляете запрос на другой ресурс, клиент не знает об этом. Таким образом, вся обработка кода, как правило, будет находиться в файле servlets.getAttribute всегда возвращать объект.

Ответ 8

Другим случаем, когда вы должны использовать .getParameter(), является пересылка с параметрами в jsp:

<jsp:forward page="destination.jsp">
    <jsp:param name="userName" value="hamid"/>
</jsp:forward>

В destination.jsp вы можете получить доступ к userName следующим образом:

request.getParameter("userName")

Ответ 9

из http://www.coderanch.com/t/361868/Servlets/java/request-getParameter-request-getAttribute

Параметр "Параметр" - это пара имя/значение, отправленная клиентом на сервер - как правило, из HTML-формы. Параметры могут иметь только значения String. Иногда (например, с использованием запроса GET) вы увидите эти закодирован непосредственно в URL-адрес (после символа?, каждый в форме name = value, и каждая пара разделяется символом &). В другое время они включенного в тело запроса, при использовании таких методов, как POST.

"Атрибут" - это механизм локального хранения на сервере - ничего не хранится в связанные с областью действия, передаются за пределами сервера, если только вы явно сделать это. Атрибуты имеют имена строк, но сохраняют Значения объектов. Обратите внимание, что атрибуты специфичны для Java (они хранят Java-объекты), а параметры не зависят от платформы (они только отформатированные строки, состоящие из общих байтов).

Всего четыре атрибута атрибутов: "страница" (для JSP и тега файлы), "запрос" (ограниченный текущим запросом клиента, уничтожается после завершения запроса), "сеанс" (хранится в клиентский сеанс, недействительный после завершения сеанса), "приложение" (существует для всех компонентов для доступа в течение всего развернутый срок службы вашего приложения).

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

Ответ 10

Основное отличие между getAttribute() и getParameter() - это тип возвращаемого значения.

java.lang.Object getAttribute(java.lang.String name)
java.lang.String getParameter(java.lang.String name)