Difference between getAttribute() and getParameter()
Разница между getAttribute() и getParameter()
В чем различия между getAttribute() и getParameter() методами в HttpServletRequest?
Переведено автоматически
Ответ 1
getParameter() возвращает параметры http-запроса. Они передаются от клиента серверу. Например http://example.com/servlet?parameter=1. Они могут возвращать только String.
getAttribute() предназначена только для использования на стороне сервера - вы заполняете запрос атрибутами, которые можете использовать в том же запросе. Например, вы устанавливаете атрибут в Servlet и считываете его из JSP. Они могут использоваться для любого объекта, а не только для строки.
Ответ 2
Как правило, параметр представляет собой строковое значение, которое чаще всего известно тем, что отправляется от клиента на сервер (например, сообщение формы) и извлекается из запроса сервлета. Неприятным исключением из этого является начальные параметры ServletContext, которые представляют собой строковые параметры, настроенные в web.xml и существующие на сервере.
Атрибут - это серверная переменная, которая существует в указанной области видимости, т.е.:
application доступно на протяжении всего срока службы всего приложения
session доступно в течение всего срока действия сеанса
request доступно только на время выполнения запроса
page (только JSP), доступно только для текущей страницы JSP
Ответ 3
request.getParameter()
Мы используем request.getParameter() для извлечения параметров запроса (т.Е. Данных, отправленных путем отправки html-формы). request.getParameter() Всегда возвращает String значение, а данные поступают от клиента.
request.getAttribute()
Мы используем request.getAttribute() для добавления объекта в область запроса на стороне сервера, т. е. с помощью request.setAttribute(). Вы можете добавить сюда любой тип объекта, который вам нравится, Strings, Пользовательские объекты, фактически любой объект. Вы добавляете атрибут к запросу и пересылаете запрос на другой ресурс, клиент об этом не знает. Таким образом, весь код, обрабатывающий это, обычно находится в JSP / сервлетах. Вы можете использовать request.setAttribute() для добавления дополнительной информации и пересылки текущего запроса на другой ресурс.
<%@ page import="java.util.*"import="java.io.*"%> From Which Page : <%=request.getAttribute("PAGE")%><br> Data From Client : <%=request.getParameter("CLIENT")%>
В вашем браузере сначала запустите.jsp?CLIENT= you и результат в вашем браузере будет следующим
From Which Page : *first.jsp* Data From Client : you
Основное различие между getAttribute() и getParameter() заключается в том, что первый метод извлекает (сериализованный) объект Java, а другой предоставляет строковое значение. В обоих случаях задается имя, чтобы можно было найти и извлечь его значение (будь то строка или java-компонент).
Ответ 4
Важно знать, что атрибуты не являются параметрами.
Тип возвращаемого значения для атрибутов - это объект, тогда как тип возвращаемого значения для параметра - это строка. При вызове getAttribute(String name) метода имейте в виду, что атрибуты должны быть приведены.
Кроме того, нет атрибутов, специфичных для сервлета, и нет параметров сеанса.
Этот пост написан с целью подключиться к ответу @Bozho в качестве дополнительной информации, которая может быть полезна другим людям.