Spring/Spring MVC

HTTPServletRequest

민철킹 2021. 4. 4. 16:47

서블릿은 개발자가 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