수업/JSP

4.JSP동작원리 5.요청과 응답

MDanderson 2024. 10. 2. 17:56

클라이언트가  서버에게 jsp페이지를 요청하면 웹컨테이너가 다음을 수행함

 

JSP라이프사이클

 

JSP페이지의 최초 요청을 처리할때 

- jsp페이지를 서블릿 자바 프로그램(. java)(서블릿클래스를 만듦) 으로 변환(번역)

-.java을 컴파일하여  서블릿클래스파일(.class)를 생성

- 서블릿(.class)을 실행하여 클라이언트 요청을 처리

 

이후 요청의 처리시 JSP파일에 상응하는 서블릿이 존재하면 변환과 컴파일을 하지않음

단 JSP페이지가 수정되면 다시 변환/컴파일 작업을 해야함

 

톰캣(웹컨테이너)가 서블릿을 실행

 

 

출력버퍼와 응답

 

 실행결과를 즉시 클라이언트로 보내는게 아니라 버퍼에 담는다

출력버퍼는 응답결과의 임시 저장소

응답을 만들 때 먼저 출력 버퍼에 기록함

Page지시어의 버퍼속성이 none이 아니어야함  - 기본값 true

기록이 끝나면 버퍼의 내용을 클라이언트에게 전달함

종료전에 버퍼가 차면 버퍼를 비우고 전달(flush)함 - page지시어의 autoFlush속성이 true여야함

 

버퍼를 사용하는 이유

- 데이터 전송 효율의 향상. 전송횟수가 줄어들어서.

- 실행 도중에 버퍼를 비우고 새로운 내용을 넣을 수 있음

-- 예를들어 실행 도중에 에러가 발생할 경우 다른 내용으로 바꿈

-아직 전송 전이면 버퍼에 있는 헤더의 내용도 변경할 수 있음

--헤더 정보는 응답 몸체를 전송하기 전에 먼저 전송됨

 

 

버퍼를 사용하지 않는 경우의 제한

  <jsp:forward>기능을 사용할수 없음  - 포워딩전에 이미 응답결과가 전송되었다면 오류가 생기기 때문

 버퍼를 쓰지않으면 포워딩 수행전에 결과가 클라이언트로 전송되었을 것이고 오류가 생김

에러 페이지(errorPage) 속성을 사용하는 경우에도 버퍼링이 필요

 

버퍼를 쓰지않는다면 출력된 결과를 변경 할 수 없음 

-즉시 전송되므로 도중에 오류가 생기면 이전 결과와 오류정보가 섞임

 

서블릿 프로그래밍

 

JSP기술은 서블릿 기술에 기초함

JSP페이지는 자바 서블릿 프로그램으로 변환되어 처리됨

톰캣은 JSP와 서블릿 규약을 구현한 서블릿컨테이너/JSP 컨테이너

 

실행될때 톰캣이 해당 클래스파일을 메모리상에 로드한 다음 객체를 생성하고 객체를 생성하는 순간

생성자, init() , service() , doGet()  or doPost()순으로 실행

 

 

 

클라이언트 요청이 있을 때 JSP 페이지의 처리 과정을 설명한 것이다. 다음 중 가장 먼저 수행되는 작업은 무엇인가?

1

JSP 페이지에 상응하는 서블릿 클래스 파일(.class)이 존재하는가 확인한다.

2

JSP 페이지를 변환하여 서블릿 자바 프로그램(.java)을 만든다.

3

서블릿 자바 프로그램(.java)을 컴파일한다.

4

서블릿 클래스 파일(.class)을 로드하여 객체를 생성한다.

오답입니다.
정답 : 1

기본적으로 JSP 컨테이너는 JSP 페이지를 구현한 서블릿 클래스 파일(.class)이 있는지 확인한다. 상응하는 서블릿이 없거나 JSP 페이지가 서블릿 클래스보다 새 것인 경우에 변환과 컴파일 작업을 수행한다.

 
 

서블릿 프로그램의 작성에 관한 설명이다. 잘못된 것은?

1

GET 방식의 요청을 처리하려면 서블릿 클래스에서 doGet()을 작성한다.

2

POST 방식의 요청을 처리하려면 서블릿 클래스에서 doPost()를 작성한다.

3

요청 방식에 따른 작업의 선별적 처리를 위해 service() 메소드를 재정의해야 한다.

4

추상 클래스 HttpServlet을 상속받는 클래스를 작성한다.

정답입니다.
정답 : 3

service() 메소드는 HTTP 요청 방식이 무엇이냐에 따라 적당한 메소드를 호출해 주는 기능을 하며 HttpServlet에 이미 정의되어 있다. 이것을 재정의할 이유는 거의 없다.

 

 

 

 

 

 

 

 

'수업 > JSP' 카테고리의 다른 글

7.모듈화된 jsp , 액션태그  (1) 2024.10.05
6. 내장객체, scope  (1) 2024.10.03
3강 JSP개요  (1) 2024.10.02
2강 eclipse개발환경  (0) 2024.10.01
1강 웹과 자바  (1) 2024.10.01