서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 HTTP 요청 메시지를 파싱한다.
그 결과를 HTTPServletRequest 객체에 담아서 제공한다.
Post / save HTTP/1.1 ==> START LINE
- HTTP 메소드
- URL
- 쿼리 스트링
- 스키마, 프로토콜
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded ==> 헤더
- 헤더 조회
username=kim&age=20 ==> 바디
- form 파라미터 형식 조회
- message body 데이터 직접 조회
HTTPServletRequest 객체는 추가로 여러가지 부가기능도 함께 제공
임시 저장소 기능
- 해당 HTTP요청이 시작부터 끝날 때 까지 유지되는 임시 저장소 기능
- 저장 : request.setAttribute(name, value)
- 조회 : request.getAttribute(name)
세션 관리 기능
- request.getSession(create:true)
기본 사용법
Start Line 정보
- localhost:8080/request-header로 접속
헤더 정보
방법 1
- 과거에 자주 사용하던 방식인데 getHeaderNames를 사용하면 모든 헤더정보가 return된다.
- localhost:8080/request-header로 접속했을 때 콘솔창 화면
- 모든 헤더 정보 출력
방법 2
- 최신 문법을 활용하여 헤더정보를 출력하는 코드이다. 람다식을 사용하여 간결하게 표현
- 결과는 위와 똑같음.
헤더 편리한 조회 방법
- request.getLocale()를 하면 맨 위에 있는 언어 정보 즉, 웹 브라우져가 가장 선호하는 언어 1개가 출력됨
- 현재는 getLocales를 통해 모든 언어 정보를 가져오고 위에서부터 하나씩 출력했음
- 쿠키또한 HTTP헤더에 담긴다.
- HTTP 메서드가 GET방식이기때문에 ContentType이 null임, 화면에 아무것도 담겨있지 않으므로
Content를 포스트맨을 사용하여 테스트해보자.
- 위와 같이 localhost:8080/request-header로 post방식으로 body에 다음 텍스트를 담아 테스트를 해보자.
- body에 담긴 내용이 post방식으로 전달되어 getContentType이 text/plain으로
- body에 담긴 글자수가 getContentLength()를 통해 반환되는 것을 확인할 수 있다.
기타정보
- Remote정보는 요청이 온 것에 대한 정보이고 Local정보는 현재 나의 서버에 대한 정보
- 이것은 HTTP메시지에서 온 것이 아니라, 네트워크 커넥션 정보를 가지고 가져온 것
반응형
'Spring > Spring MVC' 카테고리의 다른 글
HTTP 요청 데이터 - API 메시지 바디 (0) | 2021.04.04 |
---|---|
HTTP 요청 데이터 GET / POST (0) | 2021.04.04 |
Hello!! Servlet (0) | 2021.04.03 |
자바 백엔드 웹 기술 역사 (0) | 2021.04.03 |
HTML, HTTP API, CSR, SSR (0) | 2021.04.02 |