티스토리 뷰
D+24 (2) [필수 이해 요소, JSP 처리 과정, 출력 버퍼, page 디렉티브 buffer 속성, autoFlush 속성]
구일일구 2022. 8. 25. 16:19JSP 처리 과정
0. 클라이언트에서 요청을 보내옴
1. JSP에 해당하는 서블릿이 존재하지 않을 경우 : JSP 페이지를 컴파일하여 서블릿을 생성한 후, 생성된 서블릿을 사용해 클라이언트 요청을 처리함
2. JSP에 해당하는 서블릿이 존재하는 경우, 곧바로 서블릿을 사용하여 클라이언트의 요청을 처리함
> 즉, JSP 페이지를 요청하는 것은 JSP를 직접적으로 실행하는 것이 아니다.
JSP ➡️ 자바 소스 코드로 변환 ➡️ 컴파일 ➡️ 생성된 서블릿을 실행하는 것!
변환(translation) 단계 : JSP페이지 => 자바 코드로 변경
컴파일(compile) 단계 : 자바 코드 => 서블릿 클래스로 변경
> JSP가 자바 소스 코드로 변환 : 클래스로 바뀜 (물론, 메서드도 클래스에 들어가게 됨)
> 스크립트릿(JSP 페이지에서 자바 코드를 실행할 때 사용되는 코드의 블록 <% 자바 코드 %>) 내부에 들어간 것들은 'jspService'라는 메서드 안에 들어가게 됨 : 멤버 메서드가 됨
> <%=> : out.print로 바뀜
> JSP는 그 자체로 실행되는 것이 아니라, 자바파일로 바뀌고, 컴파일된 클래스가 실행된다는 것을 알아둬야 함
servelet 서블렛이란?
Dynamic Web Page를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술
웹을 만들 땐 다양한 요청(Request)와 응답(Response)가 있음. 그리고 이 요청과 응답에는 규칙이 존재한다.
서블릿은 이러한 요청과 응답을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해주는 기술
- Server - project-오른쪽버튼-clean module work directory : 내가 JSP로 실행한 컴파일된 자바 파일들이 모두 삭제됨
출력 버퍼와 응답
출력 버퍼 : JSP가 생성한 응답 결과를 임시로 저장
JSP 페이지는 생성된 결과를 곧바로 웹 브라우저에 전송하지 않는다.
출력 버퍼(buffer)로 불리는 곳에 임시로 출력 결과를 저장했다가 한 번에 웹 브라우저로 전송한다.
출력 버퍼의 장점
- 데이터 전송 성능 향상: 작은 단위X, 한 번에 큰 단위로 데이터를 전송하기 때문.
- 버퍼가 다 차기 전까지 헤더 변경 가능 : 그러나 일단, 버퍼 내용이 웹 브라우저에 전송되면 그 이후로는 헤더 정보 변경해도 적용X
- JSP 실행 도중 버퍼를 비우고 새 내용 전송 가능 : JSP 실행 과정에서 에러가 발생할 경우, 지금까지 생성 내용을 버퍼에서 지우고 에러 화면을 출력할 수 있음
page 디렉티브의 buffer 속성
buffer 속성
- <%@ page buffer="8kb" %> : 버퍼 크기를 8KB로 지정
- <%@ page buffer="none" %> : 버퍼 사용 안함
- <jsp:forward> 기능사용 못함
- 출력 내용 취소 불가
버퍼 처리 과정
page 디렉티브의 autoFlush 속성
버퍼가 다 찼을 때 처리 방식 지정
- true : 버퍼가 다 찼을 경우, 버퍼를 플러시하고 계속해서 작업을 진행함 (기본값)
- false : 버퍼가 다 찼을 경우 예외 발생시키고 작업을 중지함
웹 어플리케이션 디렉터리 구성
wepapp 안에 WEB-INF는 매우 중요
- lib : 라이브러리
- web.xml : 내 웹어플리케이션에 대한 설정을 할 수 있음
- 실제 리얼은 ➡️ 톰캣 안에 ➡️ 웹앱 안에 들어가서 확인할 수 잇음
- 그러나 이클립스 쓰는 동안엔 옆에 뜨는거 보면 됨
Export 방법
- export : WAR file : wep archive : 아웃풋 ➡️ 파일 경로 지정하고 export source files 체크 ➡️ finish 하면 ezen.war 가 익스포트 됨
import 방법
import ➡️ war file ➡️ 선택하고 finish...! 하면 끝..!
Git은 더 편함..!!!
notepad++ : 메모장 보다 소스 보기 좋음
'Language > JSP' 카테고리의 다른 글
D+28 (1) [페이지 모듈화(include)] (0) | 2022.08.31 |
---|---|
D+24(3) [기본 객체와 영역] (0) | 2022.08.25 |
D+24(1) [자바 언어 주석, JSP 주석, HTML 주석] (0) | 2022.08.25 |
D+23(3) [Request기본객체] (0) | 2022.08.24 |
D+23(2) [Page 디렉티브, 스크립트 요소] (0) | 2022.08.24 |
- Total
- Today
- Yesterday
- StringBuffer 클래스
- Math 클래스
- Pattern 클래스
- FALSE
- 요소선택
- 기본 API 클래스
- 딕셔너리
- Format 클래스
- 리스트
- StringBuilder 클래스
- 스레드 스케줄링
- not_in
- 역반복문
- Random 클래스
- 프로그램
- 문자열함수
- Date 클래스
- Arrays 클래스
- 파이썬
- StringTokenizer 클래스
- 함수
- 순환할당
- 자료형
- IndexError
- java.time.package
- Objects 클래스
- 포장 클래스
- Calendar 클래스
- 리스트연산자
- python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |