Latest web development tutorials

JSP 라이프 사이클

JSP 기본 기능을 이해하기위한 열쇠는 수명 준수 것을 이해한다.

JSP는 JSP 라이프 사이클도 JSP 파일 서블릿로 컴파일 포함하는 것을 제외하고는 서블릿주기 유사한 파괴로부터 생성 라이프 사이클이다.

다음은 JSP의 라이프 사이클은 여러 단계를 통과입니다 :

  • 상을 컴파일

    서블릿 서블릿 컨테이너 컴파일 소스 파일 생성 서블릿 클래스

  • 초기화 단계 :

    로드 및 해당 JSP 서블릿 클래스, 인스턴스를 생성 및 초기화 메소드를 호출

  • 구현 단계 :

    서비스의 예로는 서블릿과 JSP 해당 메소드를 호출

  • 파괴 단계 :

    파괴 메서드 호출하고 해당 JSP 서블릿 인스턴스는, 다음 서블릿 인스턴스를 파괴

분명히, JSP 및 서블릿 라이프 사이클의주기의 네 가지 주요 단계는 아래의 그림과 매우 유사하다 :


JSP 컴파일

브라우저가 JSP 페이지를 요청하면, JSP 엔진은 먼저 파일을 컴파일 여부를 확인해야합니다. 이 파일은 컴파일 또는 전회 변경된 후에 컴파일되지 않은 경우, JSP 파일을 컴파일한다.

컴파일 과정은 세 단계를 포함한다 :

  • JSP 파일을 구문 분석.
  • JSP는 서블릿으로 파일.
  • 컴파일 된 서블릿.

JSP 초기화

컨테이너가 JSP 파일을로드 한 후, 어떤 서비스를 제공하기 전에 요청 jspInit () 메소드를 호출한다. 이 같은 라인에 초기화 작업 JSP 사용자 정의 복제 jspInit () 메소드를 수행해야하는 경우 :

public void jspInit(){
  // 初始化代码
}

일반적으로, 프로그램은 한 번뿐만 서블릿 초기화. 정상적인 상황에서는, 당신은 jspInit () 메소드에서 데이터베이스 연결을 초기화 파일을 열고 쿼리 테이블을 만들 수 있습니다.


JSP 실행

이 단계가 파괴 될 때까지 상기 요청과 관련된 모든 상호 작용 JSP 라이프 사이클을 설명한다.

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

_jspService () 메소드는이 같은 HttpServletRequest의 객체 및 매개 변수로 HttpServletResponse를 객체가 필요합니다 :

void _jspService(HttpServletRequest request,
                 HttpServletResponse response)
{
   // 服务端处理代码
}

_jspService () 메소드는 각 요청에 대해 한 번씩 호출 및 응답 상응 발생에 대한 책임이며, 등등과 같은 GET, POST, 삭제 등 일곱 HTTP 방법에 대한 응답을 생성하고, 책임이 있습니다.


JSP 정리

컨테이너가 발생한에서 JSP 페이지가 제거 될 때 파괴 단계 JSP의 라이프 사이클은 모든 것을 설명합니다.

파괴 방법에 JSP 서블릿 동등한 jspDestroy () 메소드. 수행해야 할 때 어떤 정리 등등과 같은 데이터베이스 연결의 출시로, jspDestroy () 메소드를 복제하거나 폴더를 닫은.

다음과 같은 형식 jspDestroy () 메소드는 다음과 같습니다

public void jspDestroy()
{
   // 清理代码
}

다음과 같이 코드 예제의 JSP의 라이프 사이클은 다음과 같습니다 :

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
<title>life.jsp</title>
</head>
<body>

<%! 
  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>本教程 JSP 测试实例</h1>
<p><%=content1 %></p>
<p><%=content2 %></p>
<p><%=content3 %></p>

</body>
</html>

브라우저가 페이지를 열고, 출력은 :