자바(Java)/JAVA 2EE

요청 정보 객체 (javax.servlet.http.HttpServletRequest)

본클라쓰 2008. 12. 22. 16:07

 

JSP에서 request 객체와 response 객체에 대해 알려면 우선 웹이 어떻게 작동하는가 아는게 중요합니다. 웹에서는 서버와 클라이언트 두 장치가 HTTP 프로토콜을 사용하여 정보를 주고 받습니다. 웹 서버는 클라이언트가 보낸 정보를 분석하고 처리하여 처리한 결과를 클라이언트로 다시 돌려보내 줌으로써 정보가 교환되고 처리됩니다.

 

클라이언트는 웹 서버로 데이터를 전송할 때 HTTP 메소드(명령어)를 사용하여 데이터를 전송합니다. 이런 요청 정보는 클라이언트의 기본정보와 요청에 대한 정보를 담고 있는 객체가 request 객체입니다.

 

request 객체는 클라이언트의 웹 브라우저의 정보를 가지고 있으며 클라이언트가 전송한 요청 파라미터와 요청 헤더, 쿠키 등을 담고 있습니다. 즉, 클라이언트가 전송한 요청 정보를 제공하는 객체가 request 객체입니다. 


  

 

request 객체 메소드

String getServerName()

서버의 도메인 이름을 반환합니다.

 

String getServerPort()

서버의 포트 번호를 반환합니다.

 

String getRequestURI()

요청된 URL에서 URI 경로를 반환합니다. 

 

String getQueryString()

요청 쿼리 문장을 반환합니다. 

 

String getRemoteAddr()

클라이언트의 주소를 반환합니다. 

 

String getProtocol()

클라이언트가 요청한 프로토콜을 반환합니다.

 

String getMethod()

클라이언트의 요청방식(get or post)을 반환합니다. 

 

String getCharacterEncoding()

요청 메시지의 인코딩 형식을 반환합니다. 

 

void setCharacterEncoding()

요청 메시지의 인코딩 형식을 지정합니다. 

 

long getContentLength()

요청 메시지 중 데이터의 길이를 반환합니다. 

 

String getContentType()

요청 메시지의 콘텐츠 타입을 반환합니다. (MIME 타입을 반환) 

 

   

 

request 내장 객체 예제

<%@ page contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>


<body>
 프로토콜 : <%=request.getProtocol() %><p/>
 서버의 이름 : <%=request.getServerName() %></p>
 서버의 포트번호 : <%=request.getServerPort() %><p/>
 사용자의 컴퓨터 주소 : <%=request.getRemoteAddr() %><p/>
 사용자의 컴퓨터 이름 : <%=request.getRemoteHost() %><p/>
 사용 method : <%=request.getMethod() %></p>
 요청경로(URL) : <%=request.getRequestURL() %><p/>
 요청경로(URI) : <%=request.getRequestURI() %><p/>
 현재 사용하는 브라우저 : <%=request.getHeader("User-Agent") %></p>
 브라우저가지원하는 매체(media)의 타입 : <%=request.getHeader("Accept") %><p/>
 


</body>

</html>

 

 

 


 

 

HTML 폼과 요청 파라미터 처리

 

 웹 브라우저는 폼에 입력한 값을 웹서버에 파라미터로 전송합니다. 이 전송한 파라미터를 읽어올 수 있는 기능을 제공하는 것이 request 객체입니다. request 객체는 아래와 같이 파라미터를 처리하는 메소드들을 제공하고 있습니다.

 

 

파라미터 메소드

String getParameter(String name)

텍스트 필드나 라이오 버튼과 같이 단일 값을 갖는 형태의 파라미터의 값을 반환합니다. 

 

String[] getParametervalues()

체크박스나 다중 선택 박스와 같이 여러 개의 값을 갖는 형태의 파라미터 값을 문자열 배열로 반환합니다. 

 

java.util.Map getParameterMap()

파라미터 이름과 값의 쌍으로 이루어진 MAP 객체를 반환합니다.

 

java.util.Enumeration getParameterNames()

전달된 파라미터의 이름 집합을 Enumeration 객체로 반환합니다.

 

 

getParameterNames() 메소드 사용 예제

Enumeration param = request.getParameterNames();

 

while(param.hasMoreElements()) {

    ... 코드 ...

}

  

 

 


※ 참고

 request, session, application, pageContext 내장 객체는 속성(attribute) 값을 저장하고 읽을 수 있는 메소드인 setAttribute() 메소드와 getAttribute() 메소드를 제공합니다. 해당 객체의 스코프와 같은 영역에서 작용을 하며 다음과 같습니다.

 

void setAttribute(String key, Object value)

 해당 객체의 속성값을 설정하는 메소드로, 속성명에 해당하는 key 변수에 속성값에 해당하는 value 변수를 지정

 

Enumeration getAttributeNames()

 해당 객체의 속성명을 읽어오는 메소드로, 모든 속성의 key 값을 반환합니다. 

 

Object getAttribute(String key)

 해당 객체의 속성값을 읽어오는 메소드로, 주어진 key 변수에 해당하는 속성값을 반환합니다. 

 

void removeAttribute(String key)

 해당 객체의 속성을 제거하는 메소드입니다.