1. HttpServletRequest 역할

2. Start Line 정보 조회

private void printStartLine(HttpServletRequest request) {
    System.out.println("--- REQUEST-LINE - start ---");
    System.out.println("request.getMethod() = " + request.getMethod()); // GET
    System.out.println("request.getProtocol() = " + request.getProtocol()); // HTTP/1.1
    System.out.println("request.getScheme() = " + request.getScheme()); // http
    System.out.println("request.getRequestURL() = " + request.getRequestURL()); // 전체 URL
    System.out.println("request.getRequestURI() = " + request.getRequestURI()); // URI
    System.out.println("request.getQueryString() = " + request.getQueryString()); // 쿼리 파라미터
    System.out.println("request.isSecure() = " + request.isSecure()); // HTTPS 사용 여부
    System.out.println("--- REQUEST-LINE - end ---");
}

출력 예시

--- REQUEST-LINE - start ---
request.getMethod() = GET
request.getProtocol() = HTTP/1.1
request.getScheme() = http
request.getRequestURL() = <http://localhost:8080/request-header>
request.getRequestURI() = /request-header
request.getQueryString() = username=hello
request.isSecure() = false
--- REQUEST-LINE - end ---

3. 헤더 정보 전체 조회

헤더 정보 전체를 반복문을 이용해 출력한다.

private void printHeaders(HttpServletRequest request) {
    System.out.println("--- Headers - start ---");
    request.getHeaderNames().asIterator()
        .forEachRemaining(headerName -> 
            System.out.println(headerName + ": " + request.getHeader(headerName))
        );
    System.out.println("--- Headers - end ---");
}

출력 예시

--- Headers - start ---
host: localhost:8080
connection: keep-alive
accept-language: ko,en-US;q=0.9,en;q=0.8
accept: text/html,application/xhtml+xml
--- Headers - end ---