본문 바로가기

개발/Spring

HttpSession, HttpServletRequest, HttpServletResponse의 차이점 톺아보기

📌 자바에서 Session, Request, Response 차이점

자바 웹 개발(Spring Boot, Servlet 등)에서 session, request, response는 모두 클라이언트와 서버 간의 통신을 다룰 때 사용되는 객체다. 각각의 역할과 차이점을 톺아보자.


1️⃣ HttpSession (세션)

👉 특정 클라이언트(사용자)와 서버 간의 상태를 유지하는 객체

특징

  • 클라이언트가 서버에 접속하면 고유한 세션 ID가 생성됨.
  • 세션에 데이터를 저장하면 여러 요청(request)에서도 유지 가능 (로그인 정보 등).
  • 보통 session.invalidate()를 호출하거나 일정 시간이 지나면 세션이 만료됨.

예제 (세션 저장 & 가져오기)

HttpSession session = request.getSession(); // 세션 가져오기 (없으면 생성) 
session.setAttribute("username", "BG"); // 세션에 데이터 저장 

String username = (String) session.getAttribute("username"); // 세션에서 데이터 가져오기 
session.invalidate(); // 세션 삭제

 

언제 사용할까?

  • 로그인한 사용자의 정보를 여러 페이지에서 유지할 때
  • 쇼핑몰에서 장바구니 같은 기능을 구현할 때

2️⃣ HttpServletRequest (요청)

👉 클라이언트가 서버로 보내는 HTTP 요청 정보를 담고 있는 객체

특징

  • 사용자가 입력한 폼 데이터, URL 파라미터 등을 읽을 수 있음.
  • GET, POST 같은 HTTP 메서드 정보를 확인할 수 있음.
  • 요청 헤더, 쿠키, 세션 등 다양한 정보를 제공함.

예제 (요청 파라미터 & 헤더 가져오기)

String name = request.getParameter("name"); // URL 또는 폼에서 name 파라미터 받기 
String userAgent = request.getHeader("User-Agent"); // 요청 헤더 가져오기
 

언제 사용할까?

  • 클라이언트가 입력한 데이터를 서버에서 받을 때 (request.getParameter())
  • 로그인 요청 처리, 게시글 등록 등

3️⃣ HttpServletResponse (응답)

👉 서버가 클라이언트에게 보내는 HTTP 응답을 처리하는 객체

특징

  • 브라우저(클라이언트)에게 데이터를 보낼 수 있음.
  • HTTP 응답 코드, 헤더, 쿠키 등을 설정 가능.
  • 리디렉션(sendRedirect()), JSON 응답, 파일 다운로드 등 다양한 용도로 사용됨.

예제 (응답 데이터 보내기 & 리디렉트)

response.setContentType("text/html"); // 응답 타입 설정 
response.setCharacterEncoding("UTF-8"); // 문자 인코딩 설정 

PrintWriter out = response.getWriter(); 
out.println("<h1>Hello, BG!</h1>"); // HTML 응답 출력 

response.sendRedirect("home.jsp"); // 다른 페이지로 리디렉트
 

언제 사용할까?

  • 웹 브라우저에 데이터를 출력할 때 (response.getWriter())
  • 특정 페이지로 이동시킬 때 (response.sendRedirect())
  • API에서 JSON 데이터를 응답할 때

🛠 정리 (한눈에 비교)

객체역할주요 기능예제
Session 클라이언트 상태 유지 로그인 정보 저장, 장바구니 session.setAttribute("key", value);
Request 클라이언트의 요청 정보 URL 파라미터, 헤더 읽기 request.getParameter("name");
Response 서버의 응답 처리 HTML 출력, 리디렉트 response.sendRedirect("home.jsp");

🎯 결론

  • session → 사용자 정보를 유지할 때 (로그인 등)
  • request → 클라이언트가 서버에 보낸 데이터를 가져올 때
  • response → 서버가 클라이언트에게 데이터를 보낼 때