getAttribute ()와 getParameter ()의 차이점


282

수업 내에서 getAttribute()getParameter()방법 의 차이점은 무엇입니까 HttpServletRequest?


1
어떤 클래스 / 패키지 / API? 관련 메소드에 대한 JavaDoc을 읽으려고 했습니까?
Andrew Thompson


속성은 HTTP에 대한 서블릿 함께 작동하는 데 도움 요청입니다
bitfishxyz

답변:


328
  • getParameter()http 요청 매개 변수를 리턴합니다. 클라이언트에서 서버로 전달되었습니다. 예를 들면 http://example.com/servlet?parameter=1. 반환 만 가능String

  • getAttribute()서버 측 전용입니다. 동일한 요청 내에서 사용할 수있는 속성으로 요청을 채 웁니다. 예를 들어-서블릿에서 속성을 설정하고 JSP에서 읽습니다. 문자열뿐만 아니라 모든 객체에 사용할 수 있습니다.


3
나는 당신 ${attrName}이 jsp 페이지 와 같은 것을 사용할 때 그것들이 사용하는 속성 이라고 가정한다 request.getSession().setAttribute().
ha9u63ar

요청 속성이 서버 측에 저장되므로 서버 간 사후 리디렉션 요청에 대한 요청 속성을 설정할 수 있습니까? 리디렉션 요청의 속성을 통해 JSF의 한 서버에서 다른 서버로 정보를 보내려고합니다. 현재 POST 요청을 통해 보낼 수 있습니다.
user2918640

이 경우 "Parameter"는 "query string"과 동의어 인 것 같습니다
BTRUE

getAttribute()예를 들어 jsp 페이지에서 프론트 엔드의 속성 데이터를 가져
와서

49

일반적으로, 매개 변수는 클라이언트에서 서버로 전송되고 (예 : 양식 게시) 서블릿 요청 에서 검색되는 것으로 가장 일반적으로 알려진 문자열 값입니다 . 이에 대한 실망스러운 예외 는 web.xml에 구성되고 서버에 존재하는 문자열 매개 변수ServletContext 초기 매개 변수입니다.

속성은 지정된 범위 내에 존재하는 서버 변수입니다.

  • application전체 애플리케이션 수명 동안 사용 가능
  • session세션 수명 동안 사용 가능
  • request요청 수명 동안 만 사용 가능
  • page (JSP 만), 현재 JSP 페이지에서만 사용 가능

"일반적으로 매개 변수는 문자열 값입니다." 문자열 이외 무엇을 보낼 수 있습니까?
Honey

^ request.setAttribute의 경우와 같은 객체
Arijit

37

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 오브젝트를 추출하고, 다른 쪽은 문자열 값을 제공한다는 것이다. 두 경우 모두 이름 (문자열 또는 Java Bean)을 찾아서 추출 할 수 있도록 이름이 제공됩니다.


4
이것은 좋은 예였습니다. 이것은 정답입니다. 받아 들여진 대답은 정확하지만 새로운 이민자들에게는 예가 모든 것을 분명히했습니다. 감사합니다.
CapturedTree

26

속성매개 변수 가 아님 을 아는 것이 중요합니다 .

속성의 반환 유형은 Object 이고 매개 변수의 반환 유형은 String 입니다. getAttribute(String name)메소드를 호출 할 때 속성을 캐스트해야합니다.

또한 서블릿 특정 속성 이없고 세션 매개 변수 가 없습니다 .

이 게시물은 다른 사람들에게 유용한 추가 정보로 @Bozho의 응답을 연결하기 위해 작성되었습니다.


9

getAttribute와 getParameter의 차이점은 getParameter가 HTML 양식으로 제출되었거나 조회 문자열에 포함 된 매개 변수의 값을 리턴한다는 것입니다. getAttribute는 요청에서 설정 한 객체를 반환하며이를 사용할 수있는 유일한 방법은 RequestDispatcher와 함께 사용하는 것입니다. RequestDispatcher를 사용하여 요청을 다른 자원 (JSP / 서블릿)으로 전달하십시오. 따라서 요청을 전달하기 전에 다음 자원에서 사용 가능한 속성을 설정할 수 있습니다.


5

- 의 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"이 표시됩니다. 따라서 request.getParameter ()는 클라이언트가 제출 한 값을 검색합니다. 서버 측에서 가치를 얻을 수 있습니다.

- getAttribute를 () : request.getAttribute() 이 모두 완료 서버 측이다. 요청에 속성을 추가하고 다른 리소스에 요청을 제출하면 클라이언트는 이에 대해 알지 못합니다. 따라서 이것을 처리하는 모든 코드는 일반적으로 servlets.getAttribute에 있으며 항상 객체를 반환합니다.


4

getParameter -고객의 HTML 페이지에서 필요한 정보를 얻는 데 사용됩니다

getAttribute -다른 또는 동일한 JSP 또는 서블릿 페이지에서 이전에 설정된 매개 변수를 가져 오는 데 사용됩니다.

기본적으로 하나의 jsp / 서블릿에서 다른 jsp / 서블릿으로 전달하거나 전달하는 경우 원하는 정보를 Object에 넣고 set-attribute를 사용하여 Session 변수에 저장하지 않으면 원하는 정보를 얻을 수있는 방법이 없습니다.

getAttribute를 사용하면 Session 변수를 검색 할 수 있습니다.


3

에서 http://www.coderanch.com/t/361868/Servlets/java/request-getParameter-request-getAttribute

"매개 변수"는 클라이언트에서 서버로 전송되는 이름 / 값 쌍입니다 (일반적으로 HTML 양식에서). 매개 변수는 문자열 값만 가질 수 있습니다. 때때로 (예를 들어 GET 요청을 사용하여) URL로 직접 인코딩 된 것을 볼 수 있습니다 (? 뒤에 각각, name = value 형식으로, 각 쌍은 &로 구분됨). 다른 경우에는 POST와 같은 메소드를 사용할 때 요청 본문에 포함됩니다.

"속성"은 서버-로컬 스토리지 메커니즘입니다. 명시 적으로 지정하지 않으면 범위가 지정된 특성에 저장된 것은 서버 외부로 전송되지 않습니다. 속성에는 문자열 이름이 있지만 객체 값은 저장합니다. 속성은 Java에만 적용되며 (Java 객체 저장) 매개 변수는 플랫폼에 독립적입니다 (일반 바이트로 구성된 형식화 된 문자열 만 해당).

"page"(JSP 및 태그 파일에만 해당), "request"(현재 클라이언트 요청으로 제한됨, 요청이 완료된 후 삭제됨), "session"(클라이언트 세션에 저장 됨)의 총 4 가지 속성 범위가 있습니다. 세션이 종료 된 후) "응용 프로그램"(응용 프로그램의 전체 배포 수명 동안 모든 구성 요소에 액세스 할 수 있음).

결론은 클라이언트에서 데이터를 가져올 때 매개 변수를 사용하고 응용 프로그램에서만 내부 용으로 서버에 개체를 저장할 때 범위가 지정된 특성을 사용하는 것입니다.


3

사용해야하는 또 다른 경우 .getParameter()는 jsp에서 매개 변수를 전달할 때입니다.

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

에서 다음 과 같이 destination.jsp액세스 할 수 있습니다 userName.

request.getParameter("userName")

-6

getAttribute ()getParameter ()의 기본 차이점 은 반환 유형입니다.

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

2
당신은 이것에 대해 비웃지 않습니다.
Bogdan M.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.