- 클라이언트의 요청
- JSP페이지로부터 자바 코드 생성
- 자바 소스 코드 컴파일 -> 서블릿 클래스 생성
- 서블릿에 요청 전달
- 서블릿이 요청처리 결과를 응답으로 생성
- 응답을 웹 브라우저로 전달
- 서블릿 클래스가 있을 경우 2, 3과정은 생략
JSP페이지는 응답결과를 곧바로 브라우저에 전송하지 않고 출력 버퍼에 임시로 저장해두었다가 한번에 전송함
장점
1) 데이터 전송 성능 향상
: 한 번에 큰 단위로 데이터를 전송하는 것이 가능하기 때문
2) JSP 실행 도중에 버퍼를 비우고 새로운 내용 전송 가능
: <jsp:forward>기능이나 에러페이지 처리 기능 사용 가능
3) 버퍼가 다 차기 전 까지 헤더 변경 가능
<%@ page buffer = "4kb" %>
버퍼 속성 값을 지정하지 않으면 최소 8KB 이상의 크기를 갖는 버퍼를 사용하도록 규정하고 있고,
속성 값을 none으로 설정하면 JSP가 출력하는 내용을 바로 웹 브라우저로 전송함
이에 따라 <jsp:forward>기능을 사용할 수 없고, 출력한 내용을 취소할 수 없음
true : 버퍼가 다 차면 버퍼를 플러쉬하고 계속해서 작업을 진행(기본값)
false : 버퍼가 다 차면 예외를 발생시키고 작업 중지
*flush : 버퍼가 다 찼을 경우, 버퍼에 쌓인 데이터를 전송되거나 저장되어야 할 곳에 전송하고 버퍼를 비우는 것
*한 웹 어플리케이션은 한 개의 폴더를 차지함
WEB-INF : web.xml파일이 위치
WEB-INF/classes : 클래스 파일이 위치
WEB-INF/lib : jar파일이 위치
톰캣\webapps\웹경로 -> http://host:port/웹경로
예) webapps/ch02 -> http://localhost:8082/ch02
여기서 /ch02(웹 어플리케이션 경로)를 컨텍스트 경로라고 함(루트 웹 어플리케이션의 경우 " ")
컨텍스트 경로를 얻는 메소드 : request.getContextPath()
웹 어플리케이션을 만들게 되면 JSP파일이 엄청나게 많아지므로 기능별로 분류하는 것이 효과적
1) 대상 폴더에 직접 복사
톰캣의 webapps/하위폴더 에 JSP파일을 직접 복사하여 배포
2) war파일로 묶어서 배포
war(Web Application Archive) : 웹 어플리케이션의 구성요소를 하나로 묶어 놓은 파일
방법 1. 직접 명령어 입력
/usr/local/Cellar/tomcat/9.0.41/libexec/webapps/ch04>jar cvf ch04.war*
방법 2. 이클립스 사용
프로젝트 우클릭 > export > warFile 클릭 > 경로 지정 후 완료
최범균의 2.3 웹 프로그래밍 - 기초부터 중급까지