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

В чем разница между getAttribute() и getParameter() в classе HttpServletRequest ?

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

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

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

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

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

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

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

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

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

request.getParameter ()

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

request.getAttribute ()

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

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

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

и second.jsp:

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

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

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

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

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

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

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

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

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

getParameter () :

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

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

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

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

    

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

 request.getParameter("userName") 

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

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

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

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

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

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

 java.lang.Object getAttribute(java.lang.String name) java.lang.String getParameter(java.lang.String name) 
  • почему бизнес-логика должна быть перенесена из JSP?
  • Метод getDispatcherType () не определен для типа HttpServletRequest
  • В чем разница между JSF, Servlet и JSP?
  • Как включить JSP-файл из другого проекта в мой проект
  • Загрузить плагин не вызывает Java Servlet
  • Как узнать, был ли запрос на сервлет выполнен с использованием HTTP или HTTPS?
  • Каково значение url-шаблона в web.xml и как настроить сервлет?
  • java.lang.LinkageError: javax.servlet.jsp.JspApplicationContext.getExpressionFactory
  • Предотвратить доступ пользователя к ранее посещаемой защищенной странице после выхода из системы
  • Скрыть скрытые параметры с помощью response.sendRedirect ()
  • Как вы храните объекты Java в HttpSession?
  • Давайте будем гением компьютера.