JSP 라이프싸이클 - accidentlywoo/legacyVue GitHub Wiki
- 들어가기 전에 WAS는 웹 브라우저로 부터 JSP에 대한 요청을 받게 되면, JSP 코드를 서블릿 소스코드로 변환한 후 컴파일하여 실행되게 됩니다. 서블릿으로 컴파일 되어 실행될 때 상황에 따라서 어떤 메소드들이 실행되는지 잘 알아야, JSP를 알맞게 작성할 수 있습니다.
- JSP의 라이프 사이클을 이해한다.
- JSP를 이용해서 init, destroy 메소드를 이용할 수 있다.
- JSP라이프 사이클
1에서 10까지 출력하는 jsp가 서블릿으로 변경 된 파일입니다. `public void _jspInit() { }
public void _jspDestroy() { }
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException {
.....
try {
.....
out.write("\n");
out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n");
out.write("<html>\n");
out.write("<head>\n");
out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n");
out.write("<title>sum10</title>\n");
out.write("</head>\n");
out.write("<body>\n");
out.write("\n");
int total = 0;
for(int i = 1; i <= 10; i++){
total = total + i;
}
out.write("\n");
out.write("\n");
out.write("1부터 10까지의 합 : ");
out.print(total );
out.write("\n");
out.write("\n");
out.write("</body>\n");
out.write("</html>");
} catch (java.lang.Throwable t) {
.....
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}스크립틀릿 부분이라고 Java 코드를 입력한 부분은 다음과 같이 입력되어 있습니다.
int total = 0;
for(int i = 1; i <= 10; i++){
total = total + i;
}표현식으로 출력한 부분은 다음과 같습니다.
out.print(total);`
- 브라우저가 웹서버에 JSP에 대한 요청 정보를 전달한다.
- 브라우저가 요청한 JSP가 최초로 요청했을 경우만 JSP로 작성된 코드가 서블릿으로 코드로 변환한다.(Java 파일 생성)
- 서블릿 코드를 컴파일해서 실행가능한 bytecode로 변환한다.(class 파일 생성)
- 서블릿 클래스를 로딩하고 인스턴스를 생성한다.
- 서블릿이 실행되어 요청을 처리하고 응답 정보를 생성한다.
<title>Insert title here</title> hello <% System.out.println("_jspService()"); %>lifecycle.jsp `<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%! public void jspInit() { System.out.println("jspInit()!"); }
public void jspDestroy() { System.out.println("jspDestroy()"); } %>
`- 서블릿 라이프 싸이클에서 실행되는 메소드와 JSP 라이프 싸이클에서 실행되는 메소드의 이름을 비교해 봅시다.