본문으로 바로가기

서블릿의 라이프 사이클

category 웹/JSP 2018. 10. 24. 22:14

서블릿 라이프 사이클

라이프 사이클이란 생명주기를 뜻합니다.

 

서블릿 클래스로부터 인스턴스화를 통해 객체를 만들고

객체를 초기화된 후 웹 브라우저에의해서 서블릿 클래스는 호출 됩니다.

 

즉, 요청을 바로 처리 할 수 있는 상태 서블릿 객체를 서블릿이라고 합니다,

 

웹 컨테이너에 의해서 위 그림과 같이 처리가 됩니다.

 

언제 웹 컨테이너는 서블릿을 제거할까요??

자신이 종료되기 전 또는 웹 에플리케이션 리로드 전에 제거를 하게 됩니다.

 

라이프에 걸쳐서 한 번만 실행 되어야 하는 코드는 init 메소드와 destroy 메소드에 쓰면됩니다.

마찬가지로

JSP코드에서는 jspInit()메소드와 jspDestroy()메소드에 쓰면 됩니다.

 

init 메소드와 destroy 작성방법

파라미터 없이 public으로 선언합니다.

public void init() throws ServletException{

서블릿 클래스의 초기화 작업중 실행 코드 작성

}

public void destroy(){

 

}

 

다른 방법으로

서블릿의 초기화 파라미터라는 것이 있습니다,

즉 이는 서블릿을 초기화 할때 필요한 데이터를 의미합니다.

 

<servlet>

        <servlet-name>agreement-servlet</servlet-name>

        <servlet-class>AgreementServlet</servlet-class>

        <init-param>

              <param-name>FILE_NAME</param-name>

              <param-value>agreement.txt</param-value>

         </init-param>

</servlet>

와 같이 사용합니다.

장점으로 하나의 클래스에 두 개 이상의 파라미터를 넘겨 줄 수 있습니다.

이를 클래스에서 가져오려면 getInitParameter메서드를 호출합니다,

String filename=getInitParameter("FILE_NAME");

 

JSP에서의 init과 destroy

JSP에서는 jspInit() 메소드와 jspDestroy()메소드를 사용합니다.

방법은 서블릿과 비슷합니다.

다만 차이점은 서블릿에서는 init()메소드에 throws를 할 수있었지만 jsp에서의 init()메서드에는 할 수 없습니다.

<%!

public void jspInit()

{
}

%>

------------------------------------

<%!

public void jspDestroy()

{
}

%>

예제

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@page import="java.util.*" %>
<%@page import="java.io.*" %>

<!DOCTYPE html>
<%!
private PrintWriter logFile;
public void jspInit(){
 String filename="c:\\data\\datetimelo.txt";
 try{
  logFile=new PrintWriter(new FileWriter(filename,true));
 }catch(IOException e)
 {
  System.out.printf("%TT %s파일을 열수 없습니다.%n",new GregorianCalendar(),filename);
  
 }
}
%>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
 <%
 GregorianCalendar now=new GregorianCalendar();
 String date=String.format("현재 날짜:%TY 년 %Tm 월 %Te 일",now,now,now);
 String time=String.format("현재 시각:%TI 시 %Tm 분 %TS 초",now,now,now);
 out.println(date+"<BR/>");
 out.println(time+"<BR/>");
 if(logFile!=null)
  logFile.printf("%TF %TT에 호출 됐다",now,now);
 %>
 
 
 %>
</body>
</html>
<%!
public void jspDestroy()
{
 if(logFile!=null)
  logFile.close();
}
%>

위 코드는 예제코드로 현재 날짜와 현재 시각을 파일에 써주는 코드입니다. 초기화로 파일을 열어주고 destroy로 파일을 닫아줍니다.

 

 

' > JSP' 카테고리의 다른 글

익스프레션 언어  (0) 2018.10.29
서블릿의 라이프 사이클(2)  (0) 2018.10.29
JSP의 기초(2)  (0) 2018.10.03
JSP의 기초  (0) 2018.09.19
서블릿에 대해(2)  (0) 2018.09.12