[java] getAttribute ()와 getParameter ()의 차이점

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



답변

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

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


답변

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

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

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


답변

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

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

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

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


답변

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


답변

의 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에 있으며 항상 객체를 반환합니다.


답변

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

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

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

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