Request, Response 객체 이해하기

최준영·2021년 8월 28일
0
post-custom-banner

요청과 응답


  • WAS는 웹브라우저로부터 Servlet 요청을 받으면 HttpServletRequest, HttpServletResponse 객체를 생성한다.
  • 생성된 두 객체를 서블릿에게 전달한다.

HttpServletRequest

  • http 프로토콜의 request 정보를 서블릿에게 절달하기 위한 목적으로 사용한다.
  • 헤더정보, 파라미터, 쿠키, URI, URL 등의 정보를 클라이언트로부터 읽어들이는 메소드를 가지고 있다.
  • Body의 Stream을 읽어 들이는 메소드를 가지고 있다.

HttpServletResponse

  • WAS는 어떤 클라이언트가 요청을 보냈는지 알고 있고, 해당 클라이언트에게 응답을 보내기 위해 해당 객체를 생성하여 서블릿에게 전달한다.
  • 서블릿은 해당 객체를 이용하여 content type, 응답코드, 응답 메세지 등을 전송한다.

헤더 정보 읽어 들이기


Enumeration<String> headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
	String headerName = headerNames.nextElement();
	String headerValue = request.getHeader(headerName);
	out.println(headerName + " : " + headerValue + " <br> ");
}		
  • 요청이 들어오면 모든 정보들은 WAS가 HttpServletRequest라는 객체를 만들어서 request 객체 안에 담아둔다. 즉, request로부터 어떤 정보가 들어왔는지 확인할 수 있다.
  • request의 메서드 중 getHeaderNames()라는 메서드로 모든 헤더 이름을 enumeration 객체로 반환한다.
  • while문을 사용하면 헤더의 이름을 알 수 있고, request.getHeader(헤더의 이름)을 사용하면 헤더의 값 정보를 알아낼 수 있다.

파라미터 읽어 들이기


  • http://localhost:8080/firstweb/param?name=kim&age=5 해당 URL에서 ? 뒤에 나오는 name은 파라미터 이름, kim은 파라미터 값이다. &로 여러개의 파라미터를 서버로 보낼 수 있다.
String name = request.getParameter("name");
String age = request.getParameter("age");
  • getParameter(파라미터이름)메서드를 사용하면 ? 뒤에 기입한 순서대로 파라미터값을 받을 수 있다.
  • 이런 파라미터는 반드시 URL에 직접 기입해야만 넘어오는 것이 아니고, HTML form의 자식태그 input이라는 태그를 사용하면 똑같은 메커니즘으로 서버로 파라미터 값을 넘길 수 있다.

그외의 요청정보 출력

String uri = request.getRequestURI();
StringBuffer url = request.getRequestURL();
String contentPath = request.getContextPath();
String remoteAddr = request.getRemoteAddr();
  • request는 다양한 get메서드를 가지고있다.
  • URI는 도메인과 포트번호(http://localhost:8080) 이하의 값을 말한다.(/firstweb/info)
  • url는 요청 주소 전체가 해당된다.
  • ContextPath는 웹 애플리케이션과 매핑된 path라고 보면된다.
  • getRemoteAddr는 클라이언트의 주소를 리턴한다.
profile
do for me
post-custom-banner

0개의 댓글