일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 기술면접
- Service
- Spring Framework
- was
- 부스터2기
- request
- servlet
- DI
- Callback
- 다이나믹 프로그래밍
- IOC
- 서블릿
- Spring
- 자바스크립트
- 비동기
- Promise
- 파이썬
- 면접
- 알고리즘
- JSP
- 웹
- response
- 백준
- 부스트코스
- controller
- 코딩테스트
- 네이버
- Spring MVC
- DP
- 다이나믹프로그래밍
- Today
- Total
Sh개발일기
Request, Response 객체 이해하기 본문
학습 목표
- HttpServletRequest 객체를 이해한다.
- 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 |