[JSP]Servlet request & response

DU·2025년 1월 14일
0

JSP

목록 보기
1/5
post-thumbnail

Servlet과 HttpServletRequest, HttpServletResponse의 역할

Servlet은 클라이언트의 요청을 처리하고 응답을 생성하는 Java 기반의 서버 측 프로그램입니다. 이 과정에서 HttpServletRequestHttpServletResponse는 각각 클라이언트와 서버 간의 데이터 흐름을 담당하며 핵심 역할을 합니다.


HttpServletRequest와 HttpServletResponse의 역할과 사용 시점

1. HttpServletRequest: 클라이언트 요청 처리

HttpServletRequest는 클라이언트가 서버로 보낸 요청 정보를 담고 있으며, 서버에서 이를 활용해 요청을 처리합니다.

사용 시점

  • 폼 데이터 처리: 클라이언트가 HTML 폼을 통해 보낸 데이터(예: 로그인 정보, 검색 키워드)를 읽어올 때.
  • 헤더 정보 분석: 요청 헤더에서 클라이언트의 정보(예: User-Agent, Accept-Language)를 분석할 때.
  • 세션 관리: 현재 사용자의 세션 정보를 가져오거나 새로운 세션을 생성할 때.
  • 쿠키 관리: 클라이언트가 보낸 쿠키 정보를 가져와 사용자의 상태를 파악할 때.
  • 파일 업로드: 멀티파트 요청에서 파일 데이터를 처리할 때.

예시 코드

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 폼 데이터 읽기
    String username = request.getParameter("username");
    String password = request.getParameter("password");

    // 세션 생성 및 설정
    HttpSession session = request.getSession();
    session.setAttribute("user", username);

    // 응답 처리
    response.getWriter().println("Welcome, " + username);
}

2. HttpServletResponse: 서버 응답 생성

HttpServletResponse는 서버에서 생성한 응답을 클라이언트로 전송하는 데 사용됩니다.

사용 시점

  • HTML 출력: 동적으로 생성한 HTML 페이지를 클라이언트에 전달할 때.
  • 리다이렉션: 클라이언트를 다른 URL로 이동시킬 때.
  • 상태 코드 설정: 응답 상태 코드(예: 200, 404, 500)를 설정할 때.
  • 파일 다운로드: 바이너리 데이터를 응답으로 전송해 파일 다운로드를 제공할 때.
  • 쿠키 전송: 서버가 클라이언트에 새 쿠키를 설정할 때.

예시 코드

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 쿠키 설정
    Cookie cookie = new Cookie("sessionId", "12345");
    cookie.setMaxAge(3600); // 1시간 유지
    response.addCookie(cookie);

    // 상태 코드 설정
    response.setStatus(HttpServletResponse.SC_OK);

    // HTML 응답 출력
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    out.println("<html><body><h1>Response Example</h1></body></html>");
}

HttpServletRequest의 상세 사용 예와 메서드

클라이언트의 요청 데이터를 처리하는 주요 메서드

메서드설명
getParameter(String name)단일 요청 파라미터 값을 가져옵니다.
getParameterNames()요청 파라미터 이름들의 열거형을 반환합니다.
getParameterValues(String name)동일한 이름의 다중 요청 파라미터 값을 배열로 반환합니다.
getCookies()클라이언트가 전송한 쿠키 배열을 반환합니다.
getSession()현재 세션을 반환하며 없으면 새로 생성합니다.
getHeader(String name)요청 헤더 값을 반환합니다.
getRequestURI()요청된 URI를 반환합니다.
getMethod()요청 방식(GET, POST 등)을 반환합니다.

HttpServletResponse의 상세 사용 예와 메서드

서버가 응답을 생성하는 주요 메서드

메서드설명
setContentType(String type)응답의 MIME 타입을 설정합니다.
setStatus(int sc)응답 상태 코드를 설정합니다.
addCookie(Cookie cookie)응답에 쿠키를 추가합니다.
sendRedirect(String location)클라이언트를 지정된 URL로 리다이렉트합니다.
getWriter()클라이언트에 텍스트 데이터를 출력하기 위한 PrintWriter를 반환합니다.
getOutputStream()바이너리 데이터를 출력하기 위한 OutputStream을 반환합니다.

Servlet, HttpServletRequest, HttpServletResponse의 상호작용

  1. 클라이언트 요청: 사용자가 브라우저를 통해 URL을 요청하거나 폼을 제출하면, 해당 요청은 HTTP 요청 형태로 서버로 전송됩니다.
  2. HttpServletRequest 활용: 서버는 요청 데이터를 HttpServletRequest 객체를 통해 분석하고 필요한 정보를 추출합니다.
  3. 서버 처리: 요청을 처리한 결과를 생성하며, 필요 시 세션, 쿠키 등을 설정합니다.
  4. HttpServletResponse 활용: 처리 결과를 HttpServletResponse 객체를 통해 클라이언트로 응답합니다.
  5. 클라이언트 응답: 클라이언트는 서버에서 전달된 응답 데이터를 화면에 렌더링하거나 추가 요청을 수행합니다.

Servlet 사용의 주요 이점

  1. 동적 콘텐츠 생성: 클라이언트 요청에 따라 맞춤형 데이터를 제공합니다.
  2. HTTP 프로토콜 지원: GET, POST, PUT 등 다양한 요청 방식을 처리합니다.
  3. 확장성: 요청당 스레드를 생성하여 대규모 트래픽도 안정적으로 처리할 수 있습니다.
  4. 다양한 API 지원: 세션 관리, 쿠키 처리 등 HTTP 기반의 다양한 기능을 제공합니다.

결론

HttpServletRequestHttpServletResponse는 웹 애플리케이션에서 클라이언트와 서버 간 데이터 흐름을 관리하는 핵심 도구입니다. 이를 효율적으로 사용하면 동적 웹 애플리케이션을 개발할 수 있으며, 사용자의 요구에 맞춘 동작 구현도 가능합니다🚀

0개의 댓글