English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JSP 생명주기

JSP의 하부 기능을 이해하는 열쇠는 그들이 따르는 생명주기를 이해하는 것입니다

JSP 생명주기는 생성부터 소멸까지의 전 과정을 의미하며, servlet 생명주기와 유사하지만 JSP 생명주기는 JSP 파일을 servlet로 컴파일하는 부분도 포함됩니다

아래는 JSP 생명주기에서 거쳐간 몇 가지 단계입니다:

  • 컴파일 단계:

    servlet 컨테이너가 servlet 소스 파일을 컴파일하여 servlet 클래스를 생성합니다

  • 초기화 단계:

    JSP에 대응하는 servlet 클래스를 로드하고 예제를 생성하여 초기화 메서드를 호출합니다

  • 실행 단계:

    JSP에 대응하는 servlet 예제의 서비스 메서드를 호출합니다

  • 소멸 단계:

    JSP에 대응하는 servlet 예제의 소멸 메서드를 호출한 후 servlet 예제를 소멸합니다

JSP의 네 가지 주요 생명주기 단계는 servlet의 생명주기와 매우 유사합니다. 다음은 그 그래프입니다:

JSP 컴파일

브라우저가 JSP 페이지를 요청할 때, JSP 엔진은 이 파일이 컴파일되었는지 확인합니다. 이 파일이 컴파일되지 않았거나 이전 컴파일 이후 변경되었으면, JSP 파일을 컴파일합니다.

컴파일 과정은 세 단계로 구성됩니다:

  • JSP 파일을 해석합니다。

  • JSP 파일을 servlet로 변환합니다。

  • servlet을 컴파일합니다。

JSP 초기화

컨테이너가 JSP 파일을 로드한 후, 요청에 대한 서비스를 제공하기 전에 jspInit() 메서드를 호출합니다. 사용자 정의 JSP 초기화 작업을 수행하려면 jspInit() 메서드를 오버라이드하면 됩니다. 다음과 같이 사용할 수 있습니다:

public void jspInit(){
  // 초기화 코드
}

일반적으로 프로그램은 한 번만 초기화되며, servlet도 마찬가지입니다. 일반적으로 데이터베이스 연결을 초기화하거나 파일을 열고 쿼리 테이블을 생성하는 jspInit() 메서드에서 초기화할 수 있습니다.

JSP 실행

이 단계는 JSP 생명주기에서 요청과 관련된 모든 상호작용 행위를 설명하며, 소멸될 때까지입니다.

JSP 웹 페이지가 초기화가 완료되면, JSP 엔진은 _jspService() 메서드를 호출합니다.

_jspService() 메서드는 HttpServletRequest 객체와 HttpServletResponse 객체를 매개변수로 필요하며, 다음과 같이 사용됩니다:

void _jspService(HttpServletRequest request,
                 HttpServletResponse response)
{
   // 서버 측 처리 코드
}

_jspService() 메서드는 각 request에 대해 한 번 호출되며, 해당 response를 생성하고, 모든7HTTP 메서드의 응답, 예를 들어 GET, POST, DELETE 등입니다.

JSP 정리

JSP의 생명주기에서 소멸 단계는 JSP 웹 페이지가 컨테이너에서 제거될 때 발생하는 모든 일을 설명합니다.

jspDestroy() 메서드는 JSP에서 servlet의 소멸 메서드와 동일합니다. 데이터베이스 연결을 해제하거나 폴더를 닫는 등의 정리 작업을 수행해야 할 때, jspDestroy() 메서드를 오버라이드하여 정리 작업을 수행합니다.

jspDestroy() 메서드의 형식은 다음과 같습니다:

public void jspDestroy()
{
   // 정리 코드
}

온라인 예제

JSP의 생명주기 코드 예제는 다음과 같습니다:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>


life.jsp
</head>

<%! 
  private int initVar=0;
  private int serviceVar=0;
  private int destroyVar=0;
%>
  
<%!
  public void jspInit(){
    initVar++;
    System.out.println("jspInit(): JSP被初始化了"+initVar+"회

  }
  public void jspDestroy(){
    destroyVar++;
    System.out.println("jspDestroy(): JSP被销毁了"+destroyVar+"회

  }
%>
<%
  serviceVar++;
  System.out.println("_jspService(): JSP는 총 "+serviceVar+"요청");
  String content1="초기화 횟수: "+initVar;
  String content2="고객 요청 응답 횟수: "+serviceVar;
  String content3="소멸 횟수: "+destroyVar;
%>
<h1>기본 튜토리얼(oldtoolbag.com) JSP 테스트 예제</h1>
<p><%=content1 %></p>
<p><%=content2 %></p>
<p><%=content3 %></p>
</body>
</html>

브라우저에서 이 페이지를 엽니다, 출력 결과는 다음과 같습니다: