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

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

10 ответов


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

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


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

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

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

очень важно знать, что атрибуты не параметры.

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

кроме того,нет определенных атрибутов сервлета и нет параметры сессии.

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


запрос.getParameter()

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

запрос.getAttribute ()

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

например, рассмотрим сначала.jsp,

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

и второе.jsp:

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

из браузера, запустить первый.jsp?Клиент=вы и вывод в вашем браузере

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

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


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


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

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

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

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


-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", которое является"клиентским параметром". Затем он распечатает его, поэтому вы должны увидеть "клиент Param" на экране. Так запрос.getParameter () получит значение, которое отправил клиент. Вы получите значение на стороне сервера.

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


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

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

на destination.jsp, вы можете получить доступ к userName такой:

request.getParameter("userName")

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

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

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

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

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


основная разница между getAttribute () и getParameter() является типом возврата.

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