[JSP] 5. JSP의 처리과정
JSP의 처리과정을 간단하게라도 알아보자. servlet을 직접적으로 개발을 한적이나 전공자들처럼 책 내용들을 공부하고 시험을 본적이 없기에 좋은 나에게 좋은 포스트 내용들인 것 같다.
5. JSP의 처리과정
위에 사진처럼 클라이언트가 JSP페이지를 요청하면 웹 컨테이너가 아래와 같이 수행한다.
- JSP페이지가 컴파일된 적이 없거나 또는 컴파일 후 페이지가 수정 시
1-1. 웹 컨테이너는 JSP에 상응하는 서블릿이 존재하지 않을 경우 JSP페이지를 서블릿 자바소스 파일로 변환한다.
1-2. JSP페이지(.jsp)를 서블릿 프로그램 (.java)으로 변환
1-3. 서블릿 프로그램(.java)을 컴파일하여 서블릿(.class)을 생성
1-4. JSP페이지에 상응하는 서블릿이 존재하면 변환과 컴파일을 하지 않음
1-5. 서블릿(.class)을 실행하여 클라이언트 요청을 처리
- JSP페이지에 서블릿이 존재하는 경우 2-1. 서블릿 실행 클라이언트 요청을 처리
즉, 클라이언트가 요청 시 JSP가 직접적으로 처리하는게 아니라 자바 소스코드로 변환을 한 후 컴파일
해서 생성된 서블릿을 실행 한다는 것이다.
compile.jsp
<%@ page contentType="text/html; charset=euc-kr" %>
<HTML>
<BODY>
<% String str = "JSP Compile"; %>
<h3><%= str %></h3>
</BODY>
</HTML>
compile_jsp.java (설명하기 위한 소스)
public void _jspService (){
out.write("\r\n");
out.write("\r\n");
out.write("<HTML>\r\n");
out.write("<BODY> \r\n");
String str = "JSP Compile!";
out.write("\r\n");
out.write("<h3>");
out.print( str );
out.write("</h3>\r\n");
out.write("</BODY>\r\n");
out.write("</HTML>");
}
이래서 수정하고 서버에 배포할 때 jsp파일은 동적파일이기에 클래스 파일을 만들고 컴파일을 해야하기 때문에 서버를 재시작해야되고, resource 파일 정적파일들은 올리기만 하면 되는 것이다.
여러 이유가 있겠지만 웹 서비스가 SPA방식이 뜬 이유와 자바스크립트 더 발전한 이유 중 하나인 것 같다.