JSP
[JSP] 22. JSP 라이프 사이클
Song hyun
2024. 7. 3. 10:52
728x90
반응형
[JSP] 22. JSP 라이프 사이클
1. JSP 라이프 사이클이란?
=> JSP 페이지가 요청을 처리하는 일련의 과정을 의미한다.
(1) JSP 페이지 번역
-.jsp 파일 -> _jsp.java
(2) JSP 페이지 컴파일
-_jsp.java -> _jsp.class
(3) 클래스 로딩
-컴파일된 클래스 파일을 JVM으로 로드한다.
(4) 인스턴스화
-서블릿 클래스의 객체를 생성한다.
(5) 초기화
-서블릿 객체를 초기화한다. (init() 메서드 작동)
(6) 요청 처리
-클라이언트의 요청을 처리하고, 응답을 생성한다.
(7) 소멸
-서블릿 객체가 소멸될 때 자원을 해제한다. (destroy() 메서드 작동)
WAS (웹 애플리케이션 서버)
│├── 웹 컨테이너 (Web Container)
│ │ │ ├── 서블릿 컨테이너 (Servlet Container)
│ │ ├── 서블릿 클래스 로딩
│ │ ├── 서블릿 인스턴스 생성
│ │ ├── 서블릿 초기화 (init)
│ │ ├── 요청 처리 (service, doGet, doPost)
│ │ └── 서블릿 소멸 (destroy)
│ │ │ └── JSP 컨테이너 (JSP Container)
| |
│ ├── JSP 페이지 번역 (Translation)
│ ├── JSP 페이지 컴파일 (Compilation)
│ ├── 클래스 로딩 (Class Loading)
│ ├── 인스턴스화 (Instantiation)
│ ├── 초기화 (jspInit)
│ ├── 요청 처리 (jspService)
│ └── 소멸 (jspDestroy)
│ │ └── ...
2. 시나리오 코드
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
// http://localhost:8080/jsp/example.jsp
// 초기화 단계(jspInit 역할)
if(application.getAttribute("initialized")==null){
application.setAttribute("initialized", true);
application.setAttribute("initializedTime", new Date());
out.println("JSP가 초기화 되었습니다. <br>");
}
out.println("요청이 완료 되었습니다. <br>");
out.println("현재 시간 : "+new Date()+" <br>");
%>>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
// http://localhost:8080/jsp/example.jsp
// 초기화 단계(jspInit 역할)
if(application.getAttribute("initialized")==null){
application.setAttribute("initialized", true);
application.setAttribute("initializedTime", new Date());
out.println("JSP가 초기화 되었습니다. <br>");
}
out.println("요청이 완료 되었습니다. <br>");
out.println("현재 시간 : "+new Date()+" <br>");
// 세션이라는 전역 메모리지에 데이터를 저장하고 확인해 보자.
String message=(String)session.getAttribute("message");
if(message != null){
out.println("세션 메세지 : "+message);
} else {
out.println("저장된 세션 메세지가 없습니다.");
}
// 세션이라는 메모리에 key,value를 할당하자.
session.setAttribute("message","안녕! 세션에 저장한 메세지야");
%>>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%
// http://localhost:8080/jsp/example.jsp
// 초기화 단계(jspInit 역할)
if(application.getAttribute("initialized")==null){
application.setAttribute("initialized", true);
application.setAttribute("initializedTime", new Date());
out.println("JSP가 초기화 되었습니다. <br>");
}
out.println("요청이 완료 되었습니다. <br>");
out.println("현재 시간 : "+new Date()+" <br>");
// 세션이라는 전역 메모리지에 데이터를 저장하고 확인해 보자.
String message=(String)session.getAttribute("message");
if(message != null){
out.println("세션 메세지 : "+message);
} else {
out.println("저장된 세션 메세지가 없습니다.");
}
// 세션이라는 메모리에 key,value를 할당하자.
session.setAttribute("message","안녕! 세션에 저장한 메세지야");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>JSP 라이프 사이클 확인</h1>
<p>이 페이지의 학습 목적은 JSP 동작 방식에 대한 이해와 라이프 사이클입니다.</p>
</body>
</html>
<%
// 소멸 단계 확인 (jspDestroy)
if(application.getAttribute("initialized")!=null){
application.removeAttribute("initialized");
application.removeAttribute("initializedTime");
out.println("jsp 객체(서블릿)가 소멸되었습니다 ㅠㅠ <br>");
}
%>
728x90
반응형