본문 바로가기
java

JAVA Servlet 주요 인터페이스 정리 (GPT ver)

by 포잉띠 2024. 7. 4.

자바 서블릿 API의 주요 인터페이스

  1. Servlet
    1. 서블릿을 구현하기 위한 기본 인터페이스예요.
    2. 서블릿 생명주기를 정의하는 메서드들을 포함하고 있어요.
    3. 주요 메서드: init(), service(), destroy()
  2. ServletRequest
    1. 클라이언트의 요청 정보를 제공하는 인터페이스예요.
    2. 주요 메서드: getParameter(), getAttribute(), getInputStream()
  3. ServletResponse
    1. 서버가 클라이언트에게 응답을 보낼 때 사용되는 인터페이스예요.
    2. 주요 메서드: getWriter(), setContentType(), getOutputStream()
  4. HttpServletRequest
    1. ServletRequest를 확장하여 HTTP 프로토콜의 요청 정보를 제공하는 인터페이스예요.
    2. 주요 메서드: getSession(), getCookies(), getHeader()
  5. HttpServletResponse
    1. ServletResponse를 확장하여 HTTP 프로토콜의 응답 정보를 제공하는 인터페이스예요.
    2. 주요 메서드: sendRedirect(), addCookie(), setHeader()
  6. Filter
    1. 요청과 응답을 서블릿에 전달하기 전후에 처리할 수 있는 필터를 정의하는 인터페이스예요.
    2. 주요 메서드: init(), doFilter(), destroy()
  7. FilterChain
    1. 필터 체인을 통해 필터를 순차적으로 호출하는 데 사용되는 인터페이스예요.
    2. 주요 메서드: doFilter()
  8. ServletContext
    1. 서블릿 컨텍스트에 접근할 수 있게 해주는 인터페이스예요.
    2. 주요 메서드: getInitParameter(), getAttribute(), getResource()
  9. ServletConfig
    1. 서블릿 초기화 매개변수와 서블릿 컨텍스트에 접근할 수 있게 해주는 인터페이스예요.
    2. 주요 메서드: getServletName(), getInitParameter(), getServletContext()
  10. HttpSession
    1. 세션 정보를 제공하고 관리하는 인터페이스예요.
    2. 주요 메서드: getAttribute(), setAttribute(), invalidate()
  11. HttpSessionListener
    1. 세션의 생성 및 소멸 이벤트를 처리하는 인터페이스예요.
    2. 주요 메서드: sessionCreated(), sessionDestroyed()
  12. ServletContextListener
    1. 서블릿 컨텍스트의 초기화 및 종료 이벤트를 처리하는 인터페이스예요.
    2. 주요 메서드: contextInitialized(), contextDestroyed()
  13. ServletRequestListener
    1. 요청 객체의 생성 및 소멸 이벤트를 처리하는 인터페이스예요.
    2. 주요 메서드: requestInitialized(), requestDestroyed()
  14. AsyncListener
    1. 비동기 처리 시 발생하는 이벤트를 처리하는 인터페이스예요.
    2. 주요 메서드: onComplete(), onError(), onStartAsync(), onTimeout()
  15. ServletInputStream
    1. 서블릿 요청에서 입력 스트림을 읽기 위한 인터페이스예요.
    2. 주요 메서드: read(), isFinished(), isReady()
  16. ServletOutputStream
    1. 서블릿 응답으로 출력 스트림을 작성하기 위한 인터페이스예요.
    2. 주요 메서드: write(), setWriteListener()

 

 

추가로 SevletRequest, response와 HttpServletRequest, response의 차이점도 물어봤다.

 

ServletRequest와 ServletResponse

이 두 인터페이스는 서블릿 API의 기본 인터페이스로, 프로토콜에 독립적인 요청 및 응답을 처리하는 데 사용돼요.

ServletRequest

  • 역할: 클라이언트의 요청 정보를 제공해요.
  • 특징: 프로토콜에 독립적이에요. 즉, HTTP 뿐만 아니라 다른 프로토콜에서도 사용될 수 있어요.
  • 주요 메서드:
    • getParameter(String name): 요청 파라미터 값을 반환해요.
    • getAttribute(String name): 요청에 속성을 설정하고 가져와요.
    • getInputStream(): 요청 본문의 데이터를 읽기 위한 입력 스트림을 반환해요.
    • getReader(): 요청 본문을 읽기 위한 리더를 반환해요.

ServletResponse

  • 역할: 서버가 클라이언트에게 응답을 보낼 때 사용돼요.
  • 특징: 프로토콜에 독립적이에요. 즉, HTTP 뿐만 아니라 다른 프로토콜에서도 사용될 수 있어요.
  • 주요 메서드:
    • getWriter(): 응답을 작성하기 위한 PrintWriter 객체를 반환해요.
    • setContentType(String type): 응답의 콘텐츠 타입을 설정해요.
    • getOutputStream(): 응답 본문을 작성하기 위한 출력 스트림을 반환해요.
    • setContentLength(int len): 응답의 콘텐츠 길이를 설정해요.

HttpServletRequest와 HttpServletResponse

이 두 인터페이스는 ServletRequest와 ServletResponse를 확장하여 HTTP 프로토콜을 처리하기 위한 인터페이스예요.

HttpServletRequest

  • 역할: HTTP 요청 정보를 제공해요.
  • 특징: HTTP 프로토콜에 특화된 요청 정보를 다룰 수 있어요.
  • 주요 메서드:
    • getSession(): 현재 세션을 반환해요.
    • getCookies(): 요청에 포함된 쿠키 배열을 반환해요.
    • getHeader(String name): 요청 헤더 값을 반환해요.
    • getMethod(): HTTP 메서드(GET, POST 등)를 반환해요.
    • getQueryString(): 요청 URL의 쿼리 문자열을 반환해요.
    • getRequestURI(): 요청된 URI를 반환해요.
    • getContextPath(): 컨텍스트 경로를 반환해요.

HttpServletResponse

  • 역할: HTTP 응답 정보를 제공해요.
  • 특징: HTTP 프로토콜에 특화된 응답 정보를 다룰 수 있어요.
  • 주요 메서드:
    • sendRedirect(String location): 클라이언트를 다른 위치로 리다이렉트해요.
    • addCookie(Cookie cookie): 응답에 쿠키를 추가해요.
    • setHeader(String name, String value): 응답 헤더를 설정해요.
    • setStatus(int sc): 응답 상태 코드를 설정해요.
    • getOutputStream(): 응답 본문을 작성하기 위한 출력 스트림을 반환해요.
    • getWriter(): 응답을 작성하기 위한 PrintWriter 객체를 반환해요.

차이점 요약

  • ServletRequest와 ServletResponse는 프로토콜에 독립적인 요청 및 응답 인터페이스예요.
  • HttpServletRequest와 HttpServletResponse는 HTTP 프로토콜에 특화된 요청 및 응답 인터페이스예요.
  • HttpServletRequest와 HttpServletResponse는 HTTP의 구체적인 기능을 지원하는 메서드들을 추가로 제공해요.

 

 

'java' 카테고리의 다른 글

ExecutorService 기반 스레드 생명주기와 자원관리  (0) 2024.07.08
JAVA Beans 패턴  (0) 2024.07.05
System.arraycopy vs Arrays.copyOfRange  (0) 2024.06.27
내 마음의 위험한 배열  (0) 2024.06.27
ArrayList의 toArray()  (0) 2024.06.25