본문 바로가기

백엔드 개발/서블릿 & MVC

05. HTTPServletRequest

What is : HTTPServletRequest 

 

  • HTTPServletRequest: 서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다. 그리고 그 결과를 HttpServletRequest 객체에 담아서 제공한다. 즉, 우리로선 굉장히 편리한 기능이라는 것!!

 

HttpServletRequest만 있으면, 아래와 같은 HTTP요청메세지를 편리하게 조회할 수 있다!

POST /save HTTP/1.1
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
username=kim&age=2
  • HttpServletRequest가 가진 몇 가지 부가기능들

1.임시 저장소 기능 - 해당 HTTP요청이 시작할때부터 끝날 때까지 유지되는 임시 저장소 기능

  • 저장 : request.setAttribute(name, value)
  • 조회 : request.getAttribute(name)

2. 세션 관리 기능 - 세션 : 로그인 유지 기능 등등을 제공하는 기

  • request.getSession(crate:true);
How : HttpServletRequest 

 

과제1. HTTP요청메세지의 가장 첫번째 라인 정보(startline 정보)를 불러오기

   private static void printStartLine(HttpServletRequest request) {
       //내부 생략
    }
}

출력값

 

과제2. header 정보 출력해보기 (두가지 방법 ㅇ)

2-1) 옛날 방식 - Enumeration 활용

  //첫번째 : 옛날 방식 - Enumeration 활용
        Enumeration<String> headerNames = request.getHeaderNames();
        //리턴값이 Enumeration으로임
        
        while (headerNames.hasMoreElements()) { //Enumeration인 headerNames에서 그 다음에 다음 요소가 있니? 있으면
            String headerName = headerNames.nextElement(); //그 요소 nextElement()로 꺼내서 headerName 변수에 넣어라
            System.out.println(headerName + ": " + headerName); //그리고 그 요소 한 줄 한 줄 출력해봐라
        }

 

2-2) 요즘 방식 - 람다식 & asIterator() 활용

 

    //두번째 : 요즘 방식
        request.getHeaderNames().asIterator()
                        .forEachRemaining(headerName -> System.out.println(headerName + ": " + headerName));

 

request.getHeaderNames() 메서드 : HTTP 요청에 포함된 모든 헤더의 이름을 나타내는 메서드이고, 구)버전의 Enumeration<String>을 리턴값으로 반환함

 

asIterator() : Enumeration를 Iterator로 변환하는 인터페이스 (즉, 컬렉션 내 각 요소에 접근할 수 있게 하는 인터페이스), 유연성 UP & 보다 더 안전하고 간결한 반복을 지향하고 제공함

 

.forEachRemaining(headerName -> System.out.println(headerName + ": " + headerName)) : 변환된 Iterator를 사용하여 헤더 이름을 headerName + ": " + headerName 담음새에 맞게 출력하는 부분임

forEachRemaining() 메서드는 변환된 Itrerator에 남아있는 모든 요소에 대해서 적힌 람다 표현식을 반복수행함

 

 

 

 

 

 

 

 

출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard 

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 강의 - 인프런

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., 원

www.inflearn.com

김영한 스프링 MVC 1