4. Request, Response 객체 이해하기 - accidentlywoo/legacyVue GitHub Wiki

4. Request, Response 객체 이해하기

  • 들어가기 전에 이번 파트를 학습하다 보면 '요청','응답'이라는 용어가 많이 등장합니다. 이번 학습에서는 클라이언트가 서버에게 보낸 요청을 추상화한 객체 HttpServletRequest 와 서버가 클라이언트에게 응답하기 위한 정보를 추상화한 객체 HttpServletResponse에 대해서 알아봅니다.

학습 목표

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

핵심 개념

  • HttpServletRequest
  • HttpServletResponse

학습하기

요청과 응답

WAS는 웹 브라우저로부터 Servlet요청을 받으면,

  • 요청할 때 가지고 있는 정보를 HttpServletRequest객체를 생성하여 저장합니다.
  • 웹 브라우저에게 응답을 보낼 때 사용하기 위하여 HttpServletResponse객체를 생성합니다.
  • 생성된 HttpServletRequest, HttpServletResponse 객체를 서블릿에게 전달합니다.

HttpServletRequest

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

HttpServletResponse

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

실습 코드

HeaderServlet.java `package examples;

import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration;

import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class HeaderServlet */ @WebServlet("/header") public class HeaderServlet extends HttpServlet { private static final long serialVersionUID = 1L;

    /**

    • @see HttpServlet#HttpServlet() */ public HeaderServlet() { super(); // TODO Auto-generated constructor stub }

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(""); out.println("

      <title>form</title>"); out.println("");

      Enumeration headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements()) { String headerName = headerNames.nextElement(); String headerValue = request.getHeader(headerName); out.println(headerName + " : " + headerValue + "
      "); }

      out.println(""); out.println(""); }

    /**

    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); }

}`

실습 코드

ParameterServlet.java `package examples;

import java.io.IOException; import java.io.PrintWriter;

import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class ParameterServlet */ @WebServlet("/param") public class ParameterServlet extends HttpServlet { private static final long serialVersionUID = 1L;

    /**

    • @see HttpServlet#HttpServlet() */ public ParameterServlet() { super(); // TODO Auto-generated constructor stub }

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(""); out.println("

      <title>form</title>"); out.println("");

      String name = request.getParameter("name"); String age = request.getParameter("age");

      out.println("name : " + name + "
      "); out.println("age : " +age + "
      ");

      out.println(""); out.println(""); }

}`

실습 코드

InfoServlet.java `package examples;

import java.io.IOException; import java.io.PrintWriter;

import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class InfoServlet */ @WebServlet("/info") public class InfoServlet extends HttpServlet { private static final long serialVersionUID = 1L;

    /**

    • @see HttpServlet#HttpServlet() */ public InfoServlet() { super(); // TODO Auto-generated constructor stub }

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(""); out.println("

      <title>info</title>"); out.println("");

      String uri = request.getRequestURI(); StringBuffer url = request.getRequestURL(); String contentPath = request.getContextPath(); String remoteAddr = request.getRemoteAddr();

      out.println("uri : " + uri + "
      "); out.println("url : " + url + "
      "); out.println("contentPath : " + contentPath + "
      "); out.println("remoteAddr : " + remoteAddr + "
      ");

      out.println(""); out.println(""); }

}`

⚠️ **GitHub.com Fallback** ⚠️