ServletInputStream은 서블릿 컨테이너에 의해 생성되는 입력 스트림 객체입니다. 이 객체는 클라이언트에서 서버로 전송된 HTTP 요청 본문의 바이트 스트림을 읽을 수 있도록 합니다.
ServletInputStream은 다음과 같은 메서드를 제공합니다.
int read()
: 입력 스트림으로부터 바이트 하나를 읽고 반환합니다. 읽은 바이트가 없으면 -1을 반환합니다.int read(byte[] b)
: 입력 스트림으로부터 최대 b.length
바이트를 읽고, b
배열에 저장한 후 읽은 바이트 수를 반환합니다. 읽은 바이트가 없으면 -1을 반환합니다.int read(byte[] b, int off, int len)
: 입력 스트림으로부터 최대 len
바이트를 읽고, b
배열의 off
위치부터 저장한 후 읽은 바이트 수를 반환합니다. 읽은 바이트가 없으면 -1을 반환합니다.int available()
: 입력 스트림으로부터 읽을 수 있는 바이트 수를 반환합니다.void close()
: 입력 스트림을 닫습니다.ServletInputStream은 ServletRequest 객체의 getInputStream()
메서드를 호출하여 가져올 수 있습니다. 예를 들어, 다음과 같은 코드로 ServletInputStream을 가져올 수 있습니다.
ServletInputStream inputStream = request.getInputStream();
ServletInputStream은 주로 클라이언트에서 전송된 HTTP 요청 본문을 읽어들이는 용도로 사용됩니다. 이를 통해 클라이언트에서 전송된 데이터를 파싱하거나 처리할 수 있습니다.
StreamUtils는 Spring Framework에서 제공하는 유틸리티 클래스 중 하나입니다. 이 클래스는 InputStream 또는 Reader와 같은 스트림을 처리하는 데 도움이 되는 다양한 메서드를 제공합니다.
StreamUtils는 다음과 같은 메서드를 제공합니다.
copy(InputStream in, OutputStream out)
: 입력 스트림에서 읽은 데이터를 출력 스트림으로 복사합니다.copy(byte[] in, OutputStream out)
: 바이트 배열에서 읽은 데이터를 출력 스트림으로 복사합니다.copy(Reader in, Writer out)
: 입력 문자 스트림에서 읽은 데이터를 출력 문자 스트림으로 복사합니다.copy(String in, Charset charset, OutputStream out)
: 문자열에서 읽은 데이터를 지정된 문자 인코딩으로 인코딩하여 출력 스트림으로 복사합니다.copy(InputStream in, OutputStream out, int bufferSize)
: 입력 스트림에서 읽은 데이터를 출력 스트림으로 복사하며, 지정된 버퍼 크기를 사용합니다.copy(byte[] in, OutputStream out, int offset, int length)
: 바이트 배열에서 읽은 데이터를 출력 스트림으로 복사하며, 지정된 오프셋과 길이를 사용합니다.