본문 바로가기

JSP(Java Server Page)

JSP Life Cycle // init,service,destroy // 서블릿에서 자바스크립트 사용하기

■ JSP Life Cycle

   - JSP가 실행되기 위해서는 먼저 JSP 파일을 Servlet 파일로 변환하는 과정을 거친다.

   - Servlet 파일로 변환하는 과정은 처음 클라이언트의 요청이 있을 때 또는 JSP 파일이 변경 되었을 때 이루어진다.

   - JSP 변환 서블릿 프로그램은 _jspInit(), _jspService(), _jspDestroy()의 세 가지 메소드에 의해서 초기화, 서비스, 파괴의 과정을 거친다.

   -  _jspInit() 메소드는 단 한번 호출되며 Servlet의 초기화 작업을 진행한다.

   -  _jspService() 메소드는 클라이언트의 서비스 요청이 있을 때마다 호출하게 된다.

   -  서블릿 객체가 더 이상 서비스를 하지 않고 있는 경우 메모리에서 제거 되며 이때 호출되어지는 메소드는 _jspDestroy() 메소드이다. _jspDestroy() 메소드가 호출되면 가비지 콜렉터는 객체의 메모리를 제거하게 된다.

   - 즉, _jspInit() 과 _jspDestroy() 는 단 한번 호출하게 되며 클라이언트의 요청에 따라 _jspService() 메소드는 요청이 있을 때 마다 호출하게 된다.


===================================================================================================================================================


import java.io.IOException;

import java.io.PrintWriter;

import java.util.Calendar;


import javax.servlet.GenericServlet;

import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;


public class FirstServlet extends GenericServlet { // GenericServlet 추상클래스라 재정의가 필요

private static final long serialVersionUID = 1L;

private int cnt;


@Override

public void destroy() {

// 서블릿이 제거 되기 전 한번 호출 // 서블릿이 메모리에서 제거하는 메소드

}


@Override

public void init(ServletConfig config) throws ServletException {

super.init(config);

// 서블릿이 메모리에 로딩되면서 단 한번 호출 // 서버에 최초에 들어왔을 때 한번만 생성, 여러명 들어오면 쓰레드 작업

// 일반적으로 초기화 작업

cnt=0;

}


@Override

public void service(ServletRequest req, ServletResponse resp) // 각각의 클라이언트의 다른 요청을 쓰레드를 이용하여 처리하는 메소드, 즉 요청할때마다 호출되는 메소드다, 만번 호출하면 만번 실행

throws ServletException, IOException {

// 클라이언트가 요청 할 때 마다 호출

// ServletRequest : 요청받은 정보를 갖고 있는 객체

// SwrvletRespons : 응답할 정보를 갖고 있는 객체

Calendar cal=Calendar.getInstance();

String str=String.format("%tF %tT", cal, cal);

cnt++;

resp.setContentType("text/html;charset=utf-8"); // 어떤 타입으로 출력할것인지 명시하였다.

PrintWriter out=resp.getWriter(); //getWriter() 출력스트림. 응답할 정보를 갖고 있는 객체에 출력스트림을 써서 out 객체에 담았다.

out.println("<html>");

out.println("<body>");

out.println("<지금 날짜 및 시간 : " + str +"<br/>");

out.println("이 서블릿 실행 횟수 : " + cnt +"<br/>");

out.println("</body>");

out.println("</html>");

}

}