Разница между getAttribute () и getParameter () - PullRequest
262 голосов
/ 09 марта 2011

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

Ответы [ 10 ]

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

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

43 голосов
/ 09 марта 2011

Обычно параметр - это строковое значение, которое чаще всего известно как отправка с клиента на сервер (например, отправка формы) и извлечение из запроса сервлета .Разочаровывающим исключением является исходные параметры ServletContext , которые являются строковыми параметрами, которые настроены в файле web.xml и существуют на сервере.

Атрибут - это переменная сервера, которая существует в указанной областито есть:

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

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 = you , и вывод в вашем браузере будет

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

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

26 голосов
/ 28 ноября 2012

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

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

Кроме того, нет специфичных для сервлета атрибутов , и нет параметров сеанса .

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

9 голосов
/ 27 февраля 2013

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

5 голосов
/ 01 августа 2014

- 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 всегда возвращать объект.

4 голосов
/ 25 июля 2014

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

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

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

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

3 голосов
/ 08 августа 2017

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

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

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

request.getParameter("userName")
2 голосов
/ 01 марта 2016

от http://www.coderanch.com/t/361868/Servlets/java/request-getParameter-request-getAttribute

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

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

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

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

0 голосов
/ 05 сентября 2014

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

java.lang.Object getAttribute(java.lang.String name)
java.lang.String getParameter(java.lang.String name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...