out 내장 객체
웹 브라우저에 데이터를 전송하는 출력 스트림 객체.
JSP 컨테이너는 JSP 페이지에 사용되는 모든 표현문 태그와 HTM, 일반 텍스트 등을 out 내장 객체를 통해 웹 브라우저에 그대로 전달.
out 내장 객체 메소드의 종류
| out 내장 객체 메소드 | 반환 유형 | 설명 |
| print(String str) | void | 설정된 str 값을 웹 브라우저에 출력 |
| println(String str) | void | 설정된 str값을 웹 브라우저에 출력. ln으로 줄바꿈 되지 않으니 줄을 변경하고 싶다면 <br>을 사용해야함. |
| newLine( ) | void | 줄바꿈을 출력 |
| getBufferSize( ) | int | 현재 출력 버퍼의 크기를 가져옴. |
| getRemaining( ) | int | 현재 남아있는 출력 버퍼의 크기를 가져온다. |
| clear( ) | void | 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비운다. 만약 버퍼가 이미 플러시되었다면 IOException이 발생. |
| clearBuffer( ) | void | 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비운다. 만약 버퍼가 이미 플러시되었다면 IOException이 발생하지 않는다. |
| flush( ) | void | 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하고 비운다. |
| isAutoFlush( ) | boolean | 출력 버퍼가 채워졌을 때의 처리를 결정한다. 자동으로 플러시하는 경우 true를 반환하고, 그렇지 않은 경우 false를 반환. |
여기서 println( )메소드는 줄 바꿈이 적용되지 않기 때문에 줄 바꾸려면 <br>을 해야함.
버퍼(Buffer)
임시로 출력을 모아두는 곳( 임시 저장 공간)
JSP가 실행되면 서버는 브라우저(클라이언트)에게 보낼 HTML, 텍스트, 데이터 등을 만드는데요. 이때, 데이터를 한 글자 한 글자 만들 때마다 즉시 인터넷으로 쏘는 것은 매우 비효율적입니다.
이 비효율을 막기 위해, 서버 메모리에 '장바구니' 같은 공간을 하나 마련합니다. 이것이 바로 버퍼입니다.
버퍼의 크기(Buffer Size)
그 버퍼의 최대 용량을 의미합니다.
- 비유: "이 장바구니는 8kg까지만 담을 수 있습니다."와 같습니다.
- JSP에서는 보통 서버(예: 톰캣)가 기본 버퍼 크기를 설정해 둡니다. (예: 8KB)
getBufferSize() 메소드는 바로 이 설정된 최대 용량을 정수(int) 값으로 알려줍니다.
- 예시: 만약 기본 버퍼 크기가 8KB(킬로바이트)라면, getBufferSize()는 8192 (단위: 바이트)라는 숫자를 반환합니다.
- 동작: 버퍼에 데이터가 계속 쌓이다가 이 크기(예: 8192 바이트)를 넘어서게 되면, 버퍼는 "장바구니가 꽉 찼다!"고 판단하고 **자동으로 버퍼의 모든 내용을 브라우저로 전송(flush)**한 뒤, 자신을 비웁니다.
- 버퍼(Buffer): JSP가 브라우저에 보낼 HTML/데이터를 임시로 저장하는 메모리 공간 (장바구니)
- 버퍼 크기(Buffer Size): 그 임시 저장 공간의 최대 크기 (장바구니 용량)
- getBufferSize(): 설정된 최대 크기(용량)가 몇 바이트인지 알려주는 메소드
IOException(Input/Output Exception)
그대로 번역하면 입출력 예외 라는 뜻입니다.
프로그램이 외부와 데이터를 주고받으려 할 때, 예상치 못한 문제로 작업이 실패하거나 중단되면 발생하는 비상 신호(예외)
예외 발생 이유
이런 입출력 작업은 프로그램이 100% 통제할 수 없는 '외부 환경'에 의존합니다. 이 외부 환경에 문제가 생기면 IOException이 발생합니다.
- 파일이 없을 때:
- C:\\mytext.txt 파일을 읽으라고 명령했는데, 그 위치에 파일이 존재하지 않을 때 (정확히는 FileNotFoundException이 발생하며, 이는 IOException의 자식 클래스입니다.)
- 권한이 없을 때:
- 읽기 전용 파일에 데이터를 쓰려고 시도할 때
- 디스크 공간이 부족할 때:
- 파일을 저장하려는데 하드디스크가 꽉 찼을 때
- 네트워크 연결이 끊겼을 때:
- 웹사이트에서 데이터를 다운로드하는 중에 인터넷 연결이 끊겼을 때
- (조금 전 out 객체와 연결 지으면) 서버가 버퍼의 내용을 브라우저로 전송(write)하는 중에, 사용자가 갑자기 브라우저를 닫아버릴 때 (이때 "연결이 끊겼다"고 판단하여 IOException이 발생할 수 있습니다.)
URL vs URI
| 구분 | URL (Uniform Resource Locator) | URI (Uniform Resource Identifier) |
| 의미 | “어디 있는지(위치)”를 가리키는 주소 | “무엇인지(식별자)”를 나타내는 더 넓은 개념 |
| 포함관계 | 모든 URL은 URI | URI ⊃ URL ⊃ (또 다른 하위개념: URN) |
| 예시 | https://example.com/users?id=3 | https://example.com/...(URL), urn:isbn:9783161484100(URN) |
| 구성 | 스킴(scheme) + 권한부(authority) + 경로(path) + 쿼리(query) + 프래그먼트(fragment) | URI 문법은 URL/URN을 아우르는 상위 규격 |
| 실무 사용감 | 웹 주소를 가리킬 때 보통 “URL”이라고 말함 | 표준/이론 문맥이나 식별자 전반을 말할 때 “URI” 사용 |
- URL = “리소스의 위치(접속 방법+주소)”
- URI = “리소스를 식별하는 모든 표현(그중 하나가 URL, 다른 하나가 URN)”
HTTP vs HTTPS
| 구분 | HTTP | HTTPS |
| 보안 | 암호화 없음 → 내용이 평문으로 오감 | TLS(옛 SSL)로 암호화: 기밀성, 무결성, 서버 인증 |
| 기본 포트 | 80 | 443 |
| 인증서 | 없음 | 서버 인증서 필요(CA 발급, 도메인 소유 검증) |
| 혼합 콘텐츠 | 개념 없음 | HTTPS 페이지에서 HTTP 리소스 로드하면 차단/경고 |
| 성능/프로토콜 | HTTP/1.1, HTTP/2/3 일부 환경 | HTTP/2, HTTP/3는 사실상 TLS 위에서 주로 사용 (핸드셰이크 최적화, 0-RTT 등) |
| SEO/브라우저 정책 | 보통 | HTTPS 권장: 주소창 ‘안전하지 않음’ 경고 회피, HSTS 적용 가능 |
보안에서 얻는 것(HTTPS):
- 기밀성: 중간에서 패킷을 훔쳐봐도 내용을 해독 못 함
- 무결성: 전송 중 변조를 탐지/차단
- 인증: 접속한 서버가 진짜 그 도메인임을 검증(피싱/중간자 공격 방지)
'JSP' 카테고리의 다른 글
| [JSP] 폼(form) 태그 (0) | 2025.12.03 |
|---|---|
| [JSP] 기본 내장(Implicit) 객체 정리 (1) | 2025.12.03 |
| [JSP] 내장 객체_2 (0) | 2025.12.03 |
| [JSP] 자바빈즈 액션 태그 (0) | 2025.12.03 |
| [JSP] 스크립트 태그 (0) | 2025.12.03 |