Spring_08_Tomcat Session

OngTK·2025년 9월 14일

Spring

목록 보기
8/25

🐱 Apache Tomcat

1) 정의

  • 자바 기반의 웹 애플리케이션 서버 (WAS: Web Application Server)
  • JSP, Servlet 기반의 웹 애플리케이션 실행 환경 제공
  • Spring Boot에 내장된 웹 서버로 사용 가능 (Embedded Tomcat)

🧩 Servlet

1) 정의

  • 자바 기반의 동적 웹 페이지를 만들기 위한 클래스

2) 역할

  • HTTP 요청(Request)을 수신하고, HTTP 응답(Response)을 생성하여 전달

3) 사용처

  • Spring MVC의 @Controller는 내부적으로 Servlet 기반으로 동작

4) 환경

  • Tomcat 서버 내의 Servlet 컨테이너에서 실행됨

5) 관련 키워드 · 메서드

(1) HttpServletRequest 클래스

  • Tomcat 서버의 Servlet 컨테이너에서 요청 정보를 담는 클래스
  • 컨트롤러 메서드의 매개변수로 사용 가능
// 예시
public String example(HttpServletRequest request) {
    String ip = request.getRemoteAddr();
    int port = request.getRemotePort();
    String userAgent = request.getHeader("User-Agent");
    HttpSession session = request.getSession();
}
  • 주요 메서드:
    • .getRemoteAddr() : 요청 클라이언트의 IP 주소 반환
    • .getRemotePort() : 요청 클라이언트의 포트 번호 반환
    • .getHeader("User-Agent") : 브라우저 정보 반환
    • .getSession() : 세션 객체 반환

(2) HttpServletResponse 클래스

  • 서버의 응답 정보를 담는 클래스
  • 응답 헤더 설정, 리다이렉트, 출력 스트림 등 제공

🧠 Tomcat Session

1) 정의

  • Tomcat 서버 내에서 사용자별 데이터를 저장·관리할 수 있는 메모리 공간

2) 목적

  • 상태 및 데이터 관리
  • 사용자 인증 및 권한 관리

3) 주요 사용처

  • 로그인 정보 유지
  • 비회원 장바구니
  • 자동 로그인
  • 사용자 테마 설정
  • 웹 게임 등 휘발성 정보 저장

⚠️ 실무에서는 세션 과부하 및 메모리 관리에 주의 필요

4) 특징

  • 브라우저마다 별도의 세션 객체가 생성됨
  • 사용자마다 고유한 세션 ID가 부여됨

5) 관련 키워드 · 메서드

HttpSession 클래스

  • 세션 정보를 저장하고 관리하는 클래스
// HttpServletRequest로부터 세션 객체 얻기
HttpSession session = request.getSession();

// 또는 컨트롤러 메서드에서 직접 주입
public String example(HttpSession session) {
    ...
}
  • 주요 메서드:
    • .setAttribute("name", value) : 세션에 데이터 저장 (Object 타입)
    • .getAttribute("name") : 세션에서 데이터 조회
    • .removeAttribute("name") : 특정 속성 제거
    • .invalidate() : 세션 무효화 (모든 속성 제거)
    • .getId() : 세션 고유 ID 반환
    • .getCreationTime() : 세션 생성 시간 (ms)
    • .getLastAccessedTime() : 마지막 접근 시간 (ms)
    • .setMaxInactiveInterval(seconds) : 세션 유효 시간 설정 (초)
    • .getMaxInactiveInterval() : 세션 유효 시간 확인
    • .getAttributeNames() : 모든 속성 이름 반환 (Enumeration → 반복문 사용 가능)
profile
2025.05.~K디지털_풀스택 수업 수강중

0개의 댓글