У чому різниця між методами getAttribute()
та getParameter()
методами в HttpServletRequest
класі?
У чому різниця між методами getAttribute()
та getParameter()
методами в HttpServletRequest
класі?
Відповіді:
getParameter()
повертає параметри запиту http. Ті перейшли від клієнта до сервера. Наприклад http://example.com/servlet?parameter=1
. Повернутися можна лишеString
getAttribute()
призначено лише для серверного використання - ви заповнюєте запит атрибутами, які ви можете використовувати в межах одного запиту. Наприклад - ви встановлюєте атрибут в сервлет і читаєте його з JSP. Може використовуватися для будь-якого об'єкта, а не лише рядка.
${attrName}
сторінки jsp, це атрибути, які ви встановили request.getSession().setAttribute()
?
getAttribute()
не тільки для серверного використання: ви можете отримати дані атрибутів на передній панелі - наприклад, на jsp-сторінках, і відобразити їх
Як правило, параметр - це рядкове значення, яке найбільш відоме за тим, що надсилається від клієнта на сервер (наприклад, форма форми) та отримується з запиту сервлета . Розчаровуючим винятком цього є початкові параметри 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 = ви та вихід у вашому браузері
From Which Page : *first.jsp*
Data From Client : you
Основна відмінність між getAttribute()
і getParameter()
полягає в тому, що перший метод витягує (серіалізований) об’єкт Java, а другий надає значення String. В обох випадках ім'я дається таким чином, щоб його значення (будь то струна або квасоля Java) можна було шукати та витягувати.
Важливо знати, що атрибути не є параметрами .
Тип повернення для атрибутів - Object , тоді як тип повернення для параметра - String . Викликаючи getAttribute(String name)
метод, майте на увазі, що атрибути повинні бути передані.
Крім того, немає специфічних атрибутів сервлету , а також немає параметрів сеансу .
Цей пост написаний з метою підключення до відповіді @ Божо, як додаткової інформації, яка може бути корисною для інших людей.
Різниця між 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", яке є "Параметр клієнта". Потім він буде роздруковувати його, тому на екрані ви побачите "Параметр клієнта". Тому request.getParameter () отримає значення, яке подав клієнт. Ви отримаєте значення на стороні сервера.
- getAttribute ():,
request.getAttribute()
це все зроблено на стороні сервера. ВИ додаєте атрибут до запиту, і ви подаєте запит на інший ресурс, клієнт про це не знає. Таким чином, весь код обробки цього, як правило, знаходиться в servlets.getAttribute завжди повертається об'єктом.
getParameter
- Використовується для отримання потрібної інформації зі сторінки HTML Клієнта
getAttribute
- Це використовується для отримання параметрів, встановлених раніше на іншій або тій же сторінці JSP або Servlet.
В основному, якщо ви пересилаєте або просто переходите з одного jsp / servlet на інший, немає жодної можливості мати потрібну інформацію, якщо ви не вирішите помістити їх у Object і не використовувати атрибут set для зберігання в змінній Session.
Використовуючи getAttribute, ви можете отримати змінну Session.
від http://www.coderanch.com/t/361868/Servlets/java/request-getParameter-request-getAttribute
"Параметр" - пара імен / значень, що надсилаються від клієнта на сервер - як правило, з форми HTML. Параметри можуть мати лише рядкові значення. Іноді (наприклад, використовуючи GET-запит) ви побачите їх, закодовані безпосередньо в URL-адресу (після?, Кожен у формі name = значення та кожну пару, розділену знаком &). В іншому випадку вони включаються в тіло запиту під час використання таких методів, як POST.
"Атрибут" - це локальний механізм зберігання сервера - нічого, що зберігається в масштабних атрибутах, ніколи не передається за межі сервера, якщо ви прямо не зробите це. Атрибути мають назви рядків, але зберігають значення Object. Зауважте, що атрибути специфічні для 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)