수업 내에서 getAttribute()
와 getParameter()
방법 의 차이점은 무엇입니까 HttpServletRequest
?
수업 내에서 getAttribute()
와 getParameter()
방법 의 차이점은 무엇입니까 HttpServletRequest
?
답변:
getParameter()
http 요청 매개 변수를 리턴합니다. 클라이언트에서 서버로 전달되었습니다. 예를 들면 http://example.com/servlet?parameter=1
. 반환 만 가능String
getAttribute()
서버 측 전용입니다. 동일한 요청 내에서 사용할 수있는 속성으로 요청을 채 웁니다. 예를 들어-서블릿에서 속성을 설정하고 JSP에서 읽습니다. 문자열뿐만 아니라 모든 객체에 사용할 수 있습니다.
${attrName}
이 jsp 페이지 와 같은 것을 사용할 때 그것들이 사용하는 속성 이라고 가정한다 request.getSession().setAttribute()
.
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)을 찾아서 추출 할 수 있도록 이름이 제공됩니다.
- 의 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 변수를 검색 할 수 있습니다.
에서 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 가지 속성 범위가 있습니다. 세션이 종료 된 후) "응용 프로그램"(응용 프로그램의 전체 배포 수명 동안 모든 구성 요소에 액세스 할 수 있음).
결론은 클라이언트에서 데이터를 가져올 때 매개 변수를 사용하고 응용 프로그램에서만 내부 용으로 서버에 개체를 저장할 때 범위가 지정된 특성을 사용하는 것입니다.
getAttribute () 와 getParameter ()의 기본 차이점 은 반환 유형입니다.
java.lang.Object getAttribute(java.lang.String name)
java.lang.String getParameter(java.lang.String name)