개발/servlet

Servlet Request 객체와 Response의 주요 메서드

함수형 인간 2025. 3. 5. 03:37

 

1. HttpServletRequest (요청 객체)

HttpServletRequest 객체는 클라이언트의 HTTP 요청 정보를 담고 있다.

  • 요청 정보 획득:
    • getMethod(): String - 요청 메서드(GET, POST, PUT, DELETE 등)를 반환.
    • getRequestURI(): String - 요청 URI(Uniform Resource Identifier)를 반환. (URL에서 호스트와 포트 부분을 제외한 경로)
    • getRequestURL(): StringBuffer - 전체 요청 URL을 반환.
    • getServletPath(): String - 서블릿 매핑 경로를 반환.
    • getQueryString(): String - URL의 쿼리 스트링(query string)을 반환. (예: ?name=value&param=value)
    • getProtocol(): String - 프로토콜 (예: HTTP/1.1) 반환
    • getServerName(): String - 서버의 호스트 이름을 반환.
    • getServerPort(): int - 서버의 포트 번호를 반환.
    • getRemoteAddr(): String - 클라이언트의 IP 주소를 반환.
    • getRemoteHost(): String - 클라이언트의 호스트 이름을 반환.
    • getRemotePort(): int - 클라이언트의 포트 번호
  • 요청 헤더 정보:
    • getHeader(String name): String - 지정된 헤더의 값을 반환.
    • getHeaders(String name): Enumeration - 지정된 헤더의 모든 값을 반환.
    • getHeaderNames(): Enumeration - 모든 헤더 이름들을 반환.
    • getIntHeader(String name): int - 지정된 헤더의 값을 int로 반환. (없으면 -1)
    • getDateHeader(String name): long - 지정된 헤더 값을 Date값으로 파싱해서 long 타입으로 반환 (없으면 -1)
  • 요청 파라미터 (Parameters):
    • getParameter(String name): String - 지정된 파라미터의 값을 반환. (값이 없으면 null)
    • getParameterValues(String name): String[] - 지정된 파라미터의 모든 값을 배열로 반환. (값이 없으면 null)
    • getParameterNames(): Enumeration - 모든 파라미터 이름들을 반환.
    • getParameterMap(): Map<String, String[]> - 모든 파라미터를 Map 형태로 반환.
  • 요청 본문 (Body):
    • getReader(): BufferedReader - 요청 본문을 텍스트로 읽기 위한 BufferedReader를 반환. (주로 JSON, XML 파싱에 사용)
    • getInputStream(): ServletInputStream - 요청 본문을 바이트 스트림으로 읽기 위한 ServletInputStream을 반환. (파일 업로드 등)
    • getContentLength(): int - 요청 본문의 길이(바이트)를 반환. (long 타입을 원하면 getContentLengthLong())
    • getContentType(): String - 요청 본문의 콘텐츠 타입(MIME 타입)을 반환.
    • getCharacterEncoding(): String - 요청 본문의 문자 인코딩을 반환
  • 속성 (Attributes):
    • setAttribute(String name, Object value): 요청에 속성(attribute)을 추가. (서블릿 간 데이터 공유에 사용)
    • getAttribute(String name): Object - 지정된 속성의 값을 반환. (없으면 null)
    • getAttributeNames(): Enumeration - 모든 속성 이름들을 반환.
    • removeAttribute(String name): 지정된 속성을 제거.
  • 세션 (Session):
    • getSession(): HttpSession - 현재 세션을 반환하거나, 없으면 새 세션을 생성.
    • getSession(boolean create): HttpSession - 현재 세션을 반환하거나, create가 true이면 새 세션을 생성하고, false이면 null을 반환.
  • 쿠키 (Cookie):
    • getCookies(): Cookie[] - 클라이언트가 보낸 모든 쿠키를 배열로 반환. (없으면 null)
  • 기타:
    • getLocale() : Locale - 클라이언트가 선호하는 로케일(언어, 국가)
    • getLocales() : 클라이언트가 사용 가능한 로케일 목록
    • isSecure(): boolean - 요청이 HTTPS를 사용하는지 여부를 반환.
    • getServletContext(): ServletContext - 웹 애플리케이션의 ServletContext 객체를 반환.

2. HttpServletResponse (응답 객체)

HttpServletResponse 객체는 클라이언트에 보낼 HTTP 응답을 생성하는 데 사용.

  • 응답 설정:
    • setStatus(int sc): 응답 상태 코드를 설정. (예: 200, 404, 500)
      • SC_OK, SC_NOT_FOUND 등 HttpServletResponse 상수를 사용할 수 있다.
    • sendError(int sc): 오류 상태 코드를 설정하고, 오류 메시지를 보냄.
    • sendError(int sc, String msg): 오류 상태 코드와 메시지를 설정.
    • sendRedirect(String location): 클라이언트를 지정된 URL로 리디렉션. (302 Found 응답)
  • 응답 헤더 설정:
    • setHeader(String name, String value): 지정된 헤더의 값을 설정.
    • addHeader(String name, String value): 지정된 헤더에 값을 추가.
    • setIntHeader(String name, int value): 지정된 헤더에 int 값을 설정.
    • setDateHeader(String name, long date): 지정된 헤더에 날짜 값을 설정.
    • containsHeader(String name): boolean - 지정된 헤더가 이미 설정되어 있는지 확인.
  • 응답 본문 (Body) 출력:
    • getWriter(): PrintWriter - 응답 본문을 텍스트로 출력하기 위한 PrintWriter를 반환. (HTML, JSON, XML 등)
    • getOutputStream(): ServletOutputStream - 응답 본문을 바이트 스트림으로 출력하기 위한 ServletOutputStream을 반환. (이미지, 파일 다운로드 등)
    • setContentType(String type): 응답 본문의 콘텐츠 타입(MIME 타입)을 설정. (예: text/html; charset=utf-8)
    • setCharacterEncoding(String charset): 응답 본문의 문자 인코딩을 설정. (예: UTF-8)
    • setContentLength(int len): 응답 본문의 길이(바이트)를 설정. (long 타입을 원하면 setContentLengthLong())
  • 쿠키 설정:
    • addCookie(Cookie cookie): 클라이언트에 쿠키를 설정.
  • 기타:
    • setLocale(Locale loc): 응답의 로케일(Locale)을 설정.