JSP - 4
JSP와 서블릿
- JSP 기술은 서블릿 기술에 기초
- JSP 페이지는 실행 전에 Java코드(서블릿)로 변환
- JSP 페이지와 서블릿은 상호 연동
- JSP 페이지가 서블릿의 실행 결과를 포함할 수 있으며 다른 서블릿으로 포워딩 가능
- 서블릿이 JSP 페이지의 실행 결과를 포함하거나 다른 JSP 페이지로 포워딩 가능
- 서블릿 프로그램을 작성하는 것보다 JSP 페이지를 작성하는 것이 훨씬 쉬움
JSP 처리 과정
변환: JSP 페이지로부터 서블릿 프로그램(.java) 생성
컴파일: 서블릿 프로그램을 컴파일하여 클래스 파일(.class) 생성
실행: 클래스 파일 실행
응답 과정에서 출력 버퍼 사용
- 응답을 출력 버퍼에 기록
- 기록이 끝나면 버퍼의 내용을 클라이언트에게 전달
- page 지시어의 autoFlush 속성을 이용(true: 종료 전 버퍼가 차면 버퍼를 비워 전달, false: 종료 전 버퍼가 차면 예외 발생)
버퍼 사용 이유
① 데이터 전송 효율 향상
② 실행 도중에 버퍼를 비우고 새로운 내용을 넣을 수 있음
③ 실행 도중 에러가 발생한 경우 다른 내용으로 바꿀 수 있음
④ 버퍼가 다 차기 전에 헤더 변경 가능
⑤ 헤더 정보는 실행 결과를 전송하기 전에 전송
버퍼 속성
- 버퍼의 크기 지정
- 기본값은 8kb
<%@ page buffer="4kb" %>
버퍼링을 사용하지 않는 경우
- <jsp:forward> 기능 사용 불가
- 전송 내용 취소 불가능
- 중간에 오류가 생기면 실제 내용과 오류 정보가 섞임
- 오류 페이지를 사용하는 경우 버퍼링 필요
<%@ page buffer="none" %>
autoFlush 속성
- true: 버퍼가 차면 버퍼를 비우고 작업 수행
- false: 버퍼가 차면 예외 발생
<%@ page buffer="4kb" autoFlush="false" %>
애플리케이션 배포(WAR로 배포: Eclipse에서 웹 프로젝트 배포)
① WebContent 폴더의 내용을 war 파일로 만들어 배포하는 방법
② 프로젝트 오른쪽 -> Export -> War file
③ 배포 위치: [톰캣 설치 폴더]\webapps
④ 프로젝트와 같은 이름의 폴더 생성(프로젝트 이름.war)
서블릿 프로그램
- 프로젝트 오른쪽 -> New -> Servlet
- 기본적으로 생성자, doGet(), doPost()를 가지고 있음
- doGet(): 서버가 서블릿을 통해 GET 요청을 처리하기 위해 호출하는 메서드(요청 데이터 읽기, 응답 헤더 작성, response.getWriter()를 이용하여 출력 스트림 만들기, 출력 스트림을 이용하여 응답 데이터 작성)
- doPost(): 서버가 서블릿을 통해 POST 요청을 처리하기 위해 호출하는 메서드. 클라이언트가 웹 서버에 많은 양의 데이터를 한 번에 보낼 때 사용(요청 데이터 읽기, 응답 헤더 작성, response.getWriter()를 이용하여 출력 스트림 만들기, 출력 스트림을 이용하여 응답 데이터 작성)
댓글
댓글 쓰기