# request & response 객체
요청과 응답을 다루는 내장 객체 request와 response
---
<a name="request-response"></a>
### 요청과 응답
우리는 앞서 웹서비스의 동작원리를 배웠습니다. 이는 요청과 응답의 메커니즘을 통해 동작한다는 내용입니다. (http://cloudstudying.kr/lectures/58#web-service)
![Imgur](https://i.imgur.com/kvuq6xA.png)
JSP는 클라이언트로부터 들어오는 요청을 처리하기위해 request 객체를 제공하고있습니다. 또한 서버에서 클라이언트로 응답을 다루는 response 객체를 제공합니다.
---
<a name="request-api"></a>
### HttpServletRequest API
request 객체는 클라이언트가 전송하는 모든 정보들을 가지는 객체입니다. request 객체는 다양한 API를 제공합니다. (참조: [request API](https://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/http/HttpServletRequest.html))
많은 API들중 몇 가지를 정리하면 다음과 같습니다.
| 메쏘드 | 설명 |
|:-----|:----|
| getRequestURL() | 요청받은 URL 주소를 구한다. |
| getRemoteAddr() | 클라이언트의 네트워크 주소를 구한다. |
| getServerName() | 서버의 이름을 구한다. |
| getParameter(String name) | 해당 이름의 파라메터 값을 구한다. |
| getParameterNames() | 모든 파라메터의 이름을 구한다. |
---
<a name="response-api"></a>
### HttpServletResponse API
response 객체는 JSP 페이지의 실행결과를 클라이언트(웹브라우저)로 전송시 사용하는 객체입니다. response 객체 또한 여러 API를 제공합니다. (참조: [response API](https://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/http/HttpServletResponse.html))
핵심이 되는 메쏘드를 정리해 봅시다.
| 메쏘드 | 설명 |
|:-----|:----|
| sendRedirect(String url) | 클라이언트가 해당 URL주소로 재요청을 보내도록 한다. |
---
<a name="request-practice"></a>
### request API 실습
프로젝트를 생성합니다.
![Imgur](https://i.imgur.com/8Fmt0YO.png)
![Imgur](https://i.imgur.com/JLQM0ao.png)
생성된 프로젝트의 폴더구조 입니다.
![Imgur](https://i.imgur.com/E4frdXT.png)
JSP 파일 생성합니다. (WebContent 폴더 우클릭 > New > JSP File)
![Imgur](https://i.imgur.com/VXuMP3J.png)
![Imgur](https://i.imgur.com/VPaxhML.png)
JSP파일을 작성합니다.
```html
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>Request API</h1>
<ul>
<li>접속자 IP주소: <%= request.getRemoteAddr() %></li>
<li>서버 이름: <%= request.getServerName() %></li>
<li>요청 방식: <%= request.getMethod() %></li>
<li>프로토콜: <%= request.getProtocol() %></li>
<li>요청 URL: <%= request.getRequestURL() %></li>
</ul>
</body>
</html>
```
서버 실행 결과
![Imgur](https://i.imgur.com/i7QWY2u.png)
---
### 핵심 키워드
+ [요청과 응답](#request-response)
+ [HttpServletRequest API](#request-api)
+ [HttpServletResponse API](#response-api)
+ [request API 실습](#request-practice)
---
### Next..
form 태그를 이용한 로그인/로그아웃 프로그램을 만들어봅시다.