В чем разница между getAttribute()
и getParameter()
методы внутри HttpServletRequest
класса?
В чем разница между getAttribute()
и getParameter()
методы внутри HttpServletRequest
класса?
Ответы:
getParameter()
возвращает параметры http-запроса. Те, которые передаются от клиента к серверу. Например http://example.com/servlet?parameter=1
. Могу только вернутьString
getAttribute()
только для использования на стороне сервера - вы заполняете запрос атрибутами, которые вы можете использовать в том же запросе. Например - вы устанавливаете атрибут в сервлете и читаете его из JSP. Может использоваться для любого объекта, а не только для строки.
${attrName}
на странице JSP, эти атрибуты вы устанавливаете request.getSession().setAttribute()
?
getAttribute()
не только для использования на стороне сервера: вы можете получить данные атрибута на
Обычно параметр - это строковое значение, которое чаще всего известно как отправка от клиента на сервер (например, публикация формы) и извлечение из запроса сервлета . Разочаровывающим исключением из этого являются начальные параметры ServletContext, которые являются строковыми параметрами, которые настроены в web.xml и существуют на сервере.
Атрибут - это серверная переменная, которая существует в указанной области, т.е.
application
, доступный для жизни всего приложенияsession
, доступный для жизни сессииrequest
, доступно только для жизни запросаpage
(Только JSP), доступно только для текущей страницы JSP 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-бин) можно было искать и извлекать.
Важно знать, что атрибуты не являются параметрами .
Тип возвращаемого значения для атрибутов - Объект , тогда как тип возвращаемого значения для параметра - Строка . При вызове getAttribute(String name)
метода имейте в виду, что атрибуты должны быть приведены.
Кроме того, отсутствуют специфичные для сервлета атрибуты и отсутствуют параметры сеанса .
Этот пост написан с целью подключения к ответу @ Bozho, как дополнительная информация, которая может быть полезна для других людей.
Разница между getAttribute и getParameter заключается в том, что getParameter будет возвращать значение параметра, который был отправлен в форме HTML или был включен в строку запроса. getAttribute возвращает объект, который вы установили в запросе, единственный способ использовать его в сочетании с RequestDispatcher. Вы используете RequestDispatcher для пересылки запроса другому ресурсу (JSP / Servlet). Поэтому, прежде чем переслать запрос, вы можете установить атрибут, который будет доступен для следующего ресурса.
- 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». Затем он распечатает его, поэтому вы должны увидеть «Client Param» на экране. Поэтому request.getParameter () будет получать значение, которое отправил клиент. Вы получите значение на стороне сервера.
- getAttribute ():
request.getAttribute()
все это делается на стороне сервера. ВЫ добавляете атрибут к запросу и ВЫ отправляете запрос на другой ресурс, клиент не знает об этом. Таким образом, весь код, обрабатывающий это, обычно будет в servlets.getAttribute всегда возвращать объект.
getParameter
- Используется для получения необходимой информации со страницы HTML Клиента.
getAttribute
- Это используется для получения параметров, установленных ранее на другой или той же странице JSP или сервлета.
По сути, если вы пересылаете или просто переходите от одного jsp / servlet к другому, нет способа получить нужную информацию, если вы не решите поместить ее в Object и использовать атрибут set для хранения в переменной Session.
Используя getAttribute, вы можете получить переменную Session.
от http://www.coderanch.com/t/361868/Servlets/java/request-getParameter-request-getAttribute
«Параметр» - это пара имя / значение, отправляемая клиентом на сервер - обычно из формы HTML. Параметры могут иметь только строковые значения. Иногда (например, с помощью GET-запроса) вы увидите, что они закодированы непосредственно в URL (после?, Каждый в форме name = value, и каждая пара разделена символом &). В других случаях они включаются в тело запроса при использовании таких методов, как POST.
«Атрибут» - это механизм локального хранения сервера - ничего, хранящегося в атрибутах с областью действия, никогда не передается за пределы сервера, если вы явно не сделаете этого. Атрибуты имеют строковые имена, но хранят значения объектов. Обратите внимание, что атрибуты специфичны для Java (они хранят объекты Java), в то время как параметры не зависят от платформы (они представляют собой только отформатированные строки, составленные из общих байтов).
Всего имеется четыре области действия атрибутов: «страница» (только для JSP и файлов тегов), «запрос» (ограничен текущим запросом клиента, уничтожен после завершения запроса), «сеанс» (сохранен в сеансе клиента, аннулирован после завершения сеанса) «приложение» (существует для доступа всех компонентов в течение всего развернутого времени жизни вашего приложения).
Суть в следующем: используйте параметры при получении данных от клиента, используйте атрибуты области при хранении объектов на сервере для внутреннего использования только вашим приложением.
Другой случай, когда вы должны использовать .getParameter()
это при пересылке с параметрами в JSP:
<jsp:forward page="destination.jsp">
<jsp:param name="userName" value="hamid"/>
</jsp:forward>
В destination.jsp
, вы можете получить доступ к userName
этому:
request.getParameter("userName")
Основное различие между getAttribute () и getParameter () заключается в типе возвращаемого значения.
java.lang.Object getAttribute(java.lang.String name)
java.lang.String getParameter(java.lang.String name)