서블릿 라이프 사이클
라이프 사이클이란 생명주기를 뜻합니다.
서블릿 클래스로부터 인스턴스화를 통해 객체를 만들고
객체를 초기화된 후 웹 브라우저에의해서 서블릿 클래스는 호출 됩니다.
즉, 요청을 바로 처리 할 수 있는 상태 서블릿 객체를 서블릿이라고 합니다,
웹 컨테이너에 의해서 위 그림과 같이 처리가 됩니다.
언제 웹 컨테이너는 서블릿을 제거할까요??
자신이 종료되기 전 또는 웹 에플리케이션 리로드 전에 제거를 하게 됩니다.
라이프에 걸쳐서 한 번만 실행 되어야 하는 코드는 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 |