본문 바로가기

WEB

[WEB] HttpServletRequest / ServletRequest

HttpServletRequest와 ServletRequest는 둘 다 서블릿이 클라이언트로부터 요청을 받을 때 이를 표현하는 인터페이스이다.

 

1. ServletRequest

  • 인터페이스: ServletRequest는 모든 종류의 요청을 처리할 수 있도록 설계된 일반적인 인터페이스입니다.
  • 프로토콜에 독립적: HTTP뿐만 아니라 다른 프로토콜(Gopher, FTP 등)도 처리할 수 있도록 일반적인 요청 기능을 제공합니다.
  • 메서드 기능: 요청에 포함된 데이터를 읽거나(파라미터 등), 요청 속성에 접근하는 기본적인 메서드를 제공합니다.
  • 주 사용처: 웹 서버가 제공하는 모든 종류의 서블릿을 위한 요청을 표현할 때 사용됩니다. HTTP에 특화되지 않은 부분이기 때문에 직접 사용하기보다는 상위 인터페이스인 HttpServletRequest를 더 자주 사용합니다.
public interface ServletRequest {
    String getParameter(String name);
    String getCharacterEncoding();
    // 일반적인 요청 정보에 대한 메서드
}

 

 

2. HttpServletRequest

  • ServletRequest를 상속: HttpServletRequest는 ServletRequest를 상속하며, HTTP 요청에 특화된 기능들을 추가로 제공합니다.
  • HTTP 관련 기능 제공: HTTP 메서드(GET, POST 등), 헤더 정보, 세션 관리, 쿠키, 경로 관련 정보 등을 제공하는 메서드를 포함합니다.
  • 메서드 기능: getHeader(), getCookies(), getSession() 등과 같이 HTTP 요청에 필요한 다양한 정보를 제공하는 메서드들이 추가로 있습니다.
  • 주 사용처: HTTP 프로토콜을 사용하는 웹 애플리케이션에서 사용되며, 거의 모든 서블릿 기반의 웹 애플리케이션에서 요청을 처리할 때 기본적으로 사용됩니다.
public interface HttpServletRequest extends ServletRequest {
    String getHeader(String name);
    Cookie[] getCookies();
    HttpSession getSession();
    // HTTP에 특화된 메서드
}

 

  ServletRequest HttpServletRequest
프로토콜 프로토콜에 독립적 HTTP 프로토콜에 특화
제공하는 기능 요청 파라미터, 인코딩 정보 등 기본 기능 HTTP 메서드, 헤더, 세션 등 HTTP 관련 기능
사용 용도 모든 종류의 요청 처리 HTTP 요청 처리

 

 

* 대부분의 웹 애플리케이션은 HTTP를 통해 요청을 받기 때문에, HttpServletRequest를 주로 사용.

ServletRequest는 HttpServletRequest의 상위 인터페이스로 사용되지만, 프로토콜 특화된 기능이 없어 HTTP 세부 기능이 필요할 때는 적합하지 않음.