■ 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>");
}
}
'JSP(Java Server Page)' 카테고리의 다른 글
filter 사용하기(흐름도 첨부) (0) | 2013.07.14 |
---|---|
서블릿에서 alert , html 사용하기 (0) | 2013.07.02 |
JSP 구성요소 (0) | 2013.07.02 |
request 객체 (0) | 2013.07.02 |
JSP/서블릿에서 데이터를 처리 하는 방식 ( GET / POST ) (0) | 2013.07.02 |