Sh개발일기

Request, Response 객체 이해하기 본문

BoostCourse

Request, Response 객체 이해하기

Sh4869 2020. 2. 4. 14:21

학습 목표

  1. HttpServletRequest 객체를 이해한다.
  2. HttpServletResponse 객체를 이해한다.

핵심 개념

  • HttpServletRequest
  • HttpServletResponse

HttpServletRequest / HttpServletResponse

웹 브라우저에 url을 입력하고 전송하게 되면 웹 브라우저는 도메인과 포트 번호를 이용하여 서버에 접속한다. 이후 Path 정보, Client Id 등 다양한 정보를 포함한 요청 정보를 Server에 전송한다.

웹 브라우저로 부터 요청을 받으면 WAS는 HttpServletRequest, HttpServletResponse 라는 2개의 객체를 생성한다.

 

  • HttpServletRequest - 요청할 때 가지고 있는 다양한 정보 저장
  • HttpServletResponse - 현재 요청을 보낸 Client에게 보낼 정보를 저장

이렇게 생성된 두 객체는 해당하는 서블릿의 doGet, doPost 등의 메소드에 파라미터로 전달되게 된다.

 

위의 두 객체를 이용하여 서버에 요청이 들어올 때 어떠한 정보가 담겨 있는지 실습을 통해 알아보자.

Header

서버로 요청이 들어올 때 포함된 많은 정보에는 header라는 정보가 있다. HeaderServlet이라는 클래스를 생성하여 웹 브라우저가 전송한 모든 header의 이름과 값들을 출력하는 실습을 진행해보겠다.

request의 getHeaderNames를 이용하면 요청에 들어오는 모든 header의 name들을 enumerate하게 반환해준다. 위 코드는 이 값들을 자바를 이용하여 출력하는 코드이다. 결과는 다음과 같다.

* doPost()메소드는 default로 doGet()메소드를 호출하기 때문에 doGet()메소드만 코드를 수정하였다.

Parameter

Client가 Server에 url을 이용하여 요청을 보낼 때 url의 ?뒤에 들어오는 값들이 파라미터이다. 파라미터는 & 을 기준으로 구분된다. 이는 client가 넘겨주는 정보로 서버는 이 정보들을 읽어들여 사용한다.

두 번째 실습으로 파라미터를 읽어들여 출력하는 ParameterServlet을 만들어 보겠다.

request.getParameter("파라미터이름") 은 파라미터이름에 해당하는 값들을 반환 해주는 기능을 가지고 있는 코드이다. 결과는 다음과 같다.

위와 같이 url에 파라미터를 넘겨주지 않을 경우 파라미터 값이 null로 나온 것을 볼 수 있다. 파라미터는 url의 ?뒤에 입력하며 &를 기준으로 구분한다고 했으므로 다음과 같이 url을 수정한 결과를 확인해보자.

url에서 전달해준 파라미터에 따라 웹 페이지가 바뀌는 것을 볼 수 있다.

그 외의 요청 정보

Request를 이용하여 그 외에 다양한 정보를 출력하는 InfoServlet 클래스를 만들어 보겠다.
코드는 다음과 같다.

getReuestURI(), getReuestURL(), getContextPath(), getRemoteAddr() 등의 메소드를 이용하여 다양한 값들을 받아온다. 결과는 다음과 같다.

전달된 정보들의 의미는 다음과 같다.

 

  • uri - 포트번호 이하의 도메인명과 url mapping 정보

  • url - 요청 주소 전체

  • contentPath - 웹 어플리케이션과 매핑된 path (WAS에서 찾아가는 이름)

  • remoteAddr - Client의 주소 (현재는 local에서 접근한 값)

 

 

 

'BoostCourse' 카테고리의 다른 글

Browser Event, Event object, Event handler  (0) 2020.02.13
window객체와 DOM  (0) 2020.02.10
Servlet Life Cycle  (0) 2020.02.04
Java Web Application과 Servlet  (0) 2020.02.03
웹 서버와 WAS  (0) 2020.02.02