JSP 라이프사이클

JSP 라이프사이클

JSP 라이프사이클이란 무엇입니까?

JSP 라이프사이클은 서비스 요청을 처리하기 위해 먼저 JSP 페이지를 서블릿으로 변환해야 하므로 JSP 페이지를 서블릿으로 변환하는 것으로 정의됩니다. 라이프사이클은 JSP의 생성으로 시작하여 JSP의 해체로 끝납니다.

JSP 라이프사이클의 다양한 단계

브라우저가 JSP를 요청하면 JSP 엔진은 먼저 페이지를 컴파일해야 하는지 여부를 확인합니다. JSP가 마지막으로 컴파일되었거나 최근 수정이 JSP에서 수행된 경우 JSP 엔진이 페이지를 컴파일합니다.

JSP 페이지의 컴파일 프로세스는 세 단계로 구성됩니다.

  • JSP 구문 분석
  • JSP를 서블릿으로 전환
  • 서블릿 컴파일

JSP 라이프사이클 다이어그램

JSP 라이프사이클은 아래 다이어그램에 설명되어 있습니다.

JSP 라이프사이클

다음 단계에서는 JSP의 수명 주기를 설명합니다.

  1. JSP 페이지 번역
  2. JSP 페이지 컴파일(JSP 페이지를 _jsp.java로 컴파일)
  3. 클래스 로딩(_jsp.java가 클래스 파일 _jsp.class로 변환됨)
  4. 인스턴스화(생성된 서블릿의 객체 생성)
  5. 초기화(_jspinit() 메소드는 컨테이너에 의해 호출됩니다)
  6. 요청 처리(_jspservice() 메소드는 컨테이너에 의해 호출됩니다)
  7. 파괴하다 (_jspDestroy() 컨테이너가 호출하는 메소드)

위의 사항에 대해 더 자세히 요약해 보겠습니다.

1) JSP 페이지 번역:

A Java 서블릿 파일은 JSP 소스 파일에서 생성됩니다. 이것이 JSP 라이프사이클의 첫 번째 단계입니다. 번역 단계에서 컨테이너는 JSP 페이지 및 태그 파일의 구문 정확성을 검증합니다.

  • JSP 컨테이너는 이 JSP 페이지에서 사용되는 표준 지시어와 동작, 태그 라이브러리를 참조하는 사용자 정의 동작(모두 JSP 페이지의 일부이며 이후 섹션에서 설명)을 해석합니다.
  • 위 그림 설명에서 첫 번째 단계에서는 데모.jsp가 데모_jsp.java로 변환됩니다.
  • 아래와 같이 “demo.jsp”의 예를 들어보겠습니다.

데모.jsp

<html>
<head>
<title>Demo JSP</title>
</head>
<%
int demvar=0;%>
<body>
Count is:
<% Out.println(demovar++); %>
<body>
</html>

Demo.jsp에 대한 코드 설명

코드 라인 1: HTML 시작 태그

코드 라인 2: 헤드 태그

코드 라인 3 – 4: 제목 태그, 즉 Demo JSP 및 닫는 헤드 태그

코드 라인 5 – 6: 변수 데모를 초기화하는 스크립틀릿 태그

코드 라인 7 – 8: body 태그에서 출력에 인쇄할 텍스트(개수: )

코드 라인 9: 증가된 값으로 변수 데모바를 인쇄하려는 스크립트 태그

코드 라인 10 – 11: 본문 및 HTML 태그가 닫혔습니다.

Demo JSP 페이지는 아래 코드에서 deco_jsp 서블릿으로 변환됩니다.

JSP 라이프사이클

Demo_jsp.java에 대한 코드 설명

코드 라인 1: 서블릿 클래스 데모_jsp는 상위 클래스 HttpServlet을 확장합니다.

코드 라인 2 – 3: HttpServletRequest 및 HttpServletResponse 개체를 매개 변수로 갖는 jsp, 즉 _jspservice의 서비스 메서드를 재정의합니다.

코드 라인 4: 개방 방식

코드 라인 5: 메소드 호출 getWriter() PrintWriterobject를 얻기 위한 응답 객체(객체의 형식화된 표현을 텍스트 출력 스트림에 인쇄)

코드 라인 6: 콘텐츠 유형을 설정하기 위해 응답 객체의 setContentType 메서드를 호출합니다.

코드 라인 7: 사용 write() HTML을 구문 분석하려는 PrintWriter 개체의 메서드

코드 라인 8: Devar 변수를 0으로 초기화 중

코드 라인 9: 전화 중 write() 텍스트를 구문 분석하는 PrintWriter 객체의 메서드

코드 라인 10: 전화 중 print() 0+1=1에서 변수 devar를 증가시키는 PrintWriter 개체의 메서드이므로 출력은 1이 됩니다.

코드 라인 11: 사용 write() HTML을 구문 분석하려는 PrintWriter 개체의 메서드

출력:

JSP 라이프사이클

  • 여기 스크린샷에서 demvar가 1으로 초기화된 다음 0+0=1로 증가하기 때문에 출력이 1이라는 것을 알 수 있습니다.

위의 예에서

  • 데모.jsp는 하나의 변수가 초기화되고 증가되는 JSP입니다. 이 JSP는 JSP 엔진이 JSP 페이지를 로드하고 서블릿 컨텐츠로 변환하는 서블릿(demo_jsp.class)으로 변환됩니다.
  • 변환이 발생하면 모든 템플릿 텍스트가 다음으로 변환됩니다. println() 진술과 모든 것 JSP 요소 변환됩니다 Java 암호.

이것이 간단한 JSP 페이지가 서블릿 클래스로 변환되는 방법입니다.

2) JSP 페이지 편집

  • 생성된 Java 서블릿 파일은 Java 서블릿 클래스로 컴파일됩니다.
  • Java 소스 페이지를 구현 클래스로 변환하는 작업은 JSP 페이지를 컨테이너에 배포하는 단계와 JSP 페이지를 처리하는 단계 사이에 언제든지 발생할 수 있습니다.
  • 위의 그림 설명에서 데모_jsp.java는 클래스 파일 데모_jsp.class로 컴파일됩니다.

3) 클래스 로딩

  • JSP 소스에서 로드되었던 서블릿 클래스가 이제 컨테이너에 로드됩니다.

4) 인스턴스화

  • 이 단계에서는 객체, 즉 클래스의 인스턴스가 생성됩니다.
  • 컨테이너는 요청 및 기타 이벤트에 대한 응답으로 이 클래스의 인스턴스를 하나 이상 관리합니다. 일반적으로 JSP 컨테이너는 서블릿 컨테이너를 사용하여 구축됩니다. JSP 컨테이너는 JSP와 서블릿을 모두 지원하는 서블릿 컨테이너의 확장입니다.
  • 컨테이너가 제공하는 JSPPage 인터페이스는 init() 그리고 destroy() 방법.
  • HTTP 요청을 처리하는 HttpJSPPage 인터페이스가 있으며 여기에는 서비스 메서드도 포함되어 있습니다.

5) 초기화

public void jspInit()
{
	//initializing the code
}
  • _jspinit() 메소드는 JSP에서 생성된 서블릿 인스턴스를 시작하고 이 단계에서 컨테이너에 의해 호출됩니다.
  • 인스턴스가 생성되면 즉시 init 메소드가 호출됩니다.
  • JSP 라이프사이클 동안 한 번만 호출되며 초기화 방법은 위와 같이 선언됩니다.

6) 요청 처리

void _jspservice(HttpServletRequest request HttpServletResponse response)
{
	//handling all request and responses
}
  • _jspservice() 메소드는 라이프사이클 동안 JSP 페이지에서 발생하는 모든 요청에 ​​대해 컨테이너에 의해 호출됩니다.
  • 이 단계에서는 위의 모든 단계를 거쳐야 하며 이후에는 서비스 메소드만 호출할 수 있습니다.
  • 요청 및 응답 객체를 전달합니다.
  • 이 메서드는 재정의될 수 없습니다.
  • 메소드는 위에 표시되어 있습니다. GET, POST 등의 모든 HTTP 메소드 생성을 담당합니다.

7) 파괴

public void _jspdestroy()
{
            //all clean up code
}
  • _jspdestroy() 메서드는 컨테이너에서도 호출됩니다.
  • 이 메소드는 컨테이너가 요청을 처리하기 위해 더 이상 서블릿 인스턴스가 필요하지 않다고 결정할 때 호출됩니다.
  • destroy 메소드 호출이 이루어지면 서블릿은 가비지 수집 준비가 됩니다.
  • 이것이 수명주기의 끝입니다.
  • 우리는 재정의할 수 있습니다 jspdestroy() 데이터베이스 연결을 해제하거나 열려 있는 파일을 닫는 등의 정리 작업을 수행할 때 메서드를 사용합니다.