본문 바로가기
SSR/Servlet & JSP

HttpServletRequest/Response

by oncerun 2020. 5. 9.
반응형

서블릿을 공부하다 보면 요청, 응답이라는 용어가 많이 등장합니다.

 

클라이언트가 서버에게 보낸 요청을 추상화한 객체 HttpServletRequset와 서버가 클라이언트에게 응답하기 위한 정보를 추상화한 객체 HttpServletResponse에 대해서 공부합니다.

 

 

요청 / 응답

 

웹 브라우저에 URL을 입력하고 Enter을 입력하면 웹 브라우저는 도메인과 포트 번호를 이용해 서버에 접속합니다.

그다음 path정보, 클라이언트의 다양한 정보를 포함한 요청 정보를 서버에게 전송합니다.

 

WAS는 웹 브라우저로부터 Servlet요청을 받게 되면  Requset , Response라는 객체를 생성합니다.

Requset 객체에는 요청할 때 가지고 들어온 다양한 정보들을 담습니다.

또 WAS는 요청을 보낸 클라이언트에게 전 송하기 위해서 정보를 담을 수 있는 Response객체를 생성해 주게 됩니다.

그렇게 생성된 두 개의 객체를  요청 정보에 있는 PATH로 매핑된 서블릿에게 전달하게 됩니다.

이렇게 전달된 객체는 service(), doGet(), doPost()와 같은 메서드의 파라미터로 전달되어 사용되게 됩니다.

 

HttpServletRequset

 

http프로토콜의 requset정보를 서블릿에게 전달하기 위한 목적으로 사용됩니다.

사용자가 요청할 때 가지고 있는 정보들 헤더 정보, 파라미터, 쿠키, URI, URL 등의 정보를 읽어 들이는 메서드를 가지고 있습니다.

Body의 Stream을 읽어 들이는 메서드도 가지고 있습니다.

 

HttpServletResponse

 

WAS는 어떤 클라이언트가 요청을 보냈는지 알고 있고 , 해당 클라이언트에게 응답을 보내기 위한 Response객체를 생성하여 서블릿에게 전달합니다.

서블릿은 해당 객체를 이용하여 content type, 응답 코드, 응답 메시지 등을 전송합니다.

 

 

클라이언트가 서버에게 요청을 보낼 때에는 굉장히 많은 정보를 가지고 요청을 하게 됩니다.

들어오는 요청정보들에 대해 알아봅니다.

 

1. 헤더 정보

웹브라우저가 요청정보에 담아서 보내는 header값을 읽어 들여 브라우저 화면에 출력합니다.

정보를 알아보는 방법.

Public void doGet(HttpServletRequset request, HttpServletResponse reponse) throws ServlestException
, IOexception{
response.setContentType("text/html; charset=UTF-8"); 타입을 정해준뒤 인코딩방식을 보냅니다.
PrintWriter out = response.getWriter(); //전달하기위한 통로

바디
Enumeration<String> headerNames = request.getHeaderNames();
//메소드를 통해 클라이언트가 요청한 헤더 이름을 가져와 Enumeration객체로 받습니다.
while(headerNames.hasMoreElements()){
String headerName = headerNames.nextElement();
String headerValue = request.getHeader(headerName) 
//헤더의 이름으로 값정보를 받습니다.
out.println(headerName + ": " + headerValue + "<br>");
}
바디
}

 

밑의 사진은 네이버 서버에 요청할 때 개발자 도구에서 볼 수 있는 화면입니다.

제가 요청했을 때 가지고 들어온 헤더 정보입니다.

 

2. 파라미터 읽어 들이기

 

url을 보실 때? 기준으로 뒤에 있는 키워드를 우리는 파라미터라고 합니다.

중간에 &는 기준점입니다. 여러 개의 파라미터를 연결해주며

=기준으로 앞은 파라미터 뒤는 값을 의미합니다.

 

요청된 피라미터를 받아 다시 웹브라우저에게 출력하는 코드.

만약 URL이 http://localhost:8080/프로젝트/매핑 값? name=dongho&age=14라면

Public void doGet(HttpServletRequset request, HttpServletResponse reponse) throws ServlestException
, IOexception{
response.setContentType("text/html; charset=UTF-8"); 타입을 정해준뒤 인코딩방식을 보냅니다.
PrintWriter out = response.getWriter(); //전달하기위한 통로

<바디>

String name = requset.getParameter("name");
String age = requset.getParameter("age");
//메소드를 통해 값을 읽어와 변수에 저장합니다.
out.println(name +"<br>")
out.println(age +"<br>")

}
</바디>
}

 

출력은 dongho  14라는 값이 브라우저에 출력됩니다.

 

아래 사진은 네이버에 hi라는 값을 검색했을 때입니다. 

밑의 query라는 파라미터와 값을 확인할 수 있습니다.

 

그 외 다양한 요청정보를 출력할 수 있습니다.

 

즉requset는 클라이언트가 요청할 때 보내준 모든 정보를 가지고 있으며 우리는 그것을 활용할 수 있습니다.

반응형

'SSR > Servlet & JSP' 카테고리의 다른 글

DBCP를 이용해서 커넥션 풀 사용하기  (0) 2020.05.20
JSP SCOPE  (0) 2020.05.13
JSTL  (0) 2020.04.28
View page 은닉하기.  (0) 2020.04.28
JSP MVC model 1  (0) 2020.04.27

댓글