JSP/Servlet | HTTPServletRequest 메소드
HTTP 요청을 하면서 전송한 값, 쿠키, 헤더 및 클라이언트 정보를 가져오는데 사용되는 것이 request이다.
이 Request 객체의 메소드에 대해서 정리를 해보았다.
시작하기 전
반환값 예는 아래와 같은 URL를 받았다고 가정하였다.
http://www.devkuma.com:8080/app/request.jsp?name=devkuma
주요 정보
메소드 | 반환값 예 | 설명 |
---|---|---|
request.getRequestURL() | http://www.devkuma.com:8080/app/request.jsp | |
request.getRequestURI() | /app/request.jsp | URL에서 스키마, 서버이름, 포트번호를 제외한 나머지 주소와 파라미터 |
request.getScheme() | http | http, https, ftp와 같은 프로토콜 |
request.getServerName() | www.devkuma.com | 서버 이름 |
request.getServerPort() | 8080 | 서버 포트 |
request.getContextPath() | /app | 컨테스트 경로 |
request.getMethod() | GET | GET/POST 등의 HTTP 메소드 |
request.isSecure() | false | SSL 보안 여부. https와 같은 보안 채널의 사용 여부 true/false |
request.getLocale() | ko_KR | 지역 정보 |
request.getProtocol() | HTTP/1.1 | 사용하는 프로토콜. 프로토콜/메이저버전.마이너버전 |
Local 기본 정보 (서버 정보)
메소드 | 반환값 예 | 설명 |
---|---|---|
request.getLocalAddr() | 127.0.0.1 | |
request.getLocalName() | localhost | |
request.getLocalPort() | 8080 |
Remote 정보 (클라이언트 정보)
메소드 | 반환값 예 | 설명 |
---|---|---|
request.getRemoteAddr() | 127.0.0.1 | |
request.getRemoteHost() | 127.0.0.1 | |
request.getRemotePort() | 60361 |
Session ID
메소드 | 반환값 예 | 설명 |
---|---|---|
request.getRequestedSessionId() | 39AE7AC19BC174D803C2A7BD8638E382 | 세션 ID |
request.getSession().getId() | 39AE7AC19BC174D803C2A7BD8638E382 | 세션 ID |
request.isRequestedSessionIdFromCookie() | true | session id가 쿠키로 제공되었는지 여부 |
request.isRequestedSessionIdFromURL() | false | session id가 URL의 일부로 제공되었는지 여부 |
request.isRequestedSessionIdValid() | true | session이 아직 유효한지 |
Parameter 정보
메소드 | 반환값 예 | 설명 |
---|---|---|
request.getParameterNames() | java.util.Enumeration | 모든 페라미터명을 반환한다. |
request.getParameter(name) | devkuma | 페라미터명으로 페라미터 값을 반환한다. |
모든 Parameter 값 표시
Enumeration params = request.getParameterNames();
while (params.hasMoreElements()) {
String name = (String) params.nextElement();
String value = request.getParameter(name);
logger.debug(name + "=" + value);
}
표시되는 반환 값은 아래와 같다.
name=devkuma
반환 값은 /app/request.jsp?name=devkuma
와 요청 했기에 위와 같이 표시되었다.
Cookie 정보
메소드 | 반환값 예 | 설명 |
---|---|---|
request.getCookies() | Array | 모든 쿠키 값을 반환한다. |
모든 Cookie 값 표시
Cookie cookies[] = request.getCookies();
for(int i = 0; i < cookies.length; i++) {
String name = cookies[i].getName();
String value = cookies[i].getValue();
logger.debug(name + "=" + value);
}
표시되는 반환 값은 아래와 같다.
JSESSIONID=39AE7AC19BC174D803C2A7BD8638E382
반환 예에서는 특별히 넣은 Cookie값이 없기 때문에 JSESSIONID만 표시된다.
Attribute
메소드 | 반환값 예 | 설명 |
---|---|---|
request.getAttributeNames() | Array | 모든 어트리뷰트 값을 반환한다. |
request.getAttribute(name) | … | 모든 어트리뷰트 값을 반환한다. |
모든 Attribute 값 표시
Enumeration<String> attrs = request.getAttributeNames();
while (attrs.hasMoreElements()) {
String name = (String)attrs.nextElement();
String value = (String)request.getAttribute(name);
logger.debug(name + " : " + value);
}
Header 정보
메소드 | 반환값 예 | 설명 |
---|---|---|
request.getHeaderNames() | java.util.Enumeration | 모든 헤더 명을 반환한다. |
request.getHeader(“user-agent”) | Mozilla/5.0 …. | 헤더명으로 헤더 값을 반환한다. |
모든 Header 값 표시
Enumeration<String> headers = request.getHeaderNames();
while (headers.hasMoreElements()) {
String name = (String) headers.nextElement();
String value = request.getHeader(name);
logger.debug(name + "=" + value);
}
표시되는 반환 값은 아래와 같다.
host=www.devkuma.com:8080
connection=keep-alive
cache-control=max-age=0
upgrade-insecure-requests=1
user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
accept-encoding=gzip, deflate
accept-language=ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,ja;q=0.6,es;q=0.5
cookie=JSESSIONID=26356CFACA2FFA1B4AA25C75D291E028
Request Body
Request Body로 넘어오는 데이터를 얻는 방법은 아래와 같다.
DataInputStream dis = new DataInputStream(request.getInputStream());
String str = null
while ((str = dis.readLine()) != null) {
logger.debug(new String(str.getBytes("ISO-8859-1"), "utf-8") + "/n");
// euc-kr로 전송된 한글은 깨진다.
}
최종 수정 : 2017-12-17