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
'백엔드 개발 > 서블릿 & MVC' 카테고리의 다른 글
04. 서블릿 활용 - 요청 & 응답(request, response) (0) | 2023.12.24 |
---|---|
03. 웹브라우저 - WAS - 서블릿의 구조 (0) | 2023.12.24 |
02. 서블릿 (1) | 2023.12.23 |