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 세부 기능이 필요할 때는 적합하지 않음.
'WEB' 카테고리의 다른 글
[Spring boot] Spring Security에 구글 로그인 연동하기 (1) | 2024.11.13 |
---|---|
[Spring Security] Session 기반 인증 방식 VS Token 기반 인증 방식 (1) | 2024.11.08 |
[Spring boot] h2 연결하기 (0) | 2024.10.28 |
[Docker] 도커의 정의와 기본 명령어 (1) | 2023.11.13 |
HTTP header - referer (0) | 2023.04.23 |