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()를 이용하여 출력 스트림 만들기, 출력 스트림을 이용하여 응답 데이터 작성)

댓글

가장 많이 본 글