[Servlet] HttpServletRequest
HttpServletRequest 역할
서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다. 그 후 결과를 HttpServletRequest
객체에 담아서 제공한다.
HTTP 요청 메시지
POST /save HTTP/1.1
Host: localhost:8080
Content-Type: applicaion/x-www-form-urlencoded
username=kim&age=20
- START LINE
- HTTP 메소드
- URL
- 쿼리 스트링
- 스키마, 프로토콜
- 헤더
- 헤더 조회
- 바디
- form 파라미터 형식 조회
- message body 데이터 직접 조회
임시 저장소 기능
- 해당 HTTP 요청이 시작부터 끝날 때 까지 유지되는 임시 저장소 기능
- 저장:
request.setAttribute(name, value)
- 조회:
request.getAttribute(name)
- 저장:
세션 관리 기능
request.getSession(create: true)
HTTPServletRequest - 기본 사용법
start-line 정보
System.out.println("request.getMethod() = " + request.getMethod()); //GET
System.out.println("request.getProtocal() = " + request.getProtocol()); //HTTP/1.1
System.out.println("request.getScheme() = " + request.getScheme()); //http
System.out.println("request.getRequestURL() = " + request.getRequestURL());
// http://localhost:8080/request-header
System.out.println("request.getRequestURI() = " + request.getRequestURI());
// /request-header
System.out.println("request.getQueryString() = " + request.getQueryString());
//username=hello
System.out.println("request.isSecure() = " + request.isSecure()); //https 사용 유무
Header 정보
// Header 모든 정보
private void printHeaders(HttpServletRequest request){
request.getHeaderNames().asIterator()
.forEachRemaining(
headerName -> System.out.println(headerName + ": " + request.getHeader(headerName)));
}
Header 편리한 조회
// Header 편리한 조회
// [Host]
System.out.println("request.getServerName() = " + request.getServerName()); //localhost
System.out.println("request.getServerPort() = " + request.getServerPort()); //8080
// [Accept-Language]
request.getLocales().asIterator()
.forEachRemaining(locale -> System.out.println("locale = " + locale))
// locale = ko
// locale = en_US ...
System.out.println("request.getLocale() = " + request.getLocale());
// ko
// [cookie]
if (request.getCookies() != null) {
for (Cookie cookie : request.getCookies()) {
System.out.println(cookie.getName() + ": " + cookie.getValue());
}
}
// [Content]
System.out.println("request.getContentType() = " + request.getContentType());
System.out.println("request.getContentLength() = " + request.getContentLength());
System.out.println("request.getCharacterEncoding() = " + request.getCharacterEncoding());
// UTF-8
댓글남기기