[JSP] 5. JSP의 처리과정



JSP의 처리과정을 간단하게라도 알아보자. servlet을 직접적으로 개발을 한적이나 전공자들처럼 책 내용들을 공부하고 시험을 본적이 없기에 좋은 나에게 좋은 포스트 내용들인 것 같다.



5. JSP의 처리과정


what-servlet s1


위에 사진처럼 클라이언트가 JSP페이지를 요청하면 웹 컨테이너가 아래와 같이 수행한다.

  1. JSP페이지가 컴파일된 적이 없거나 또는 컴파일 후 페이지가 수정 시
    1-1. 웹 컨테이너는 JSP에 상응하는 서블릿이 존재하지 않을 경우 JSP페이지를 서블릿 자바소스 파일로 변환한다.
    1-2. JSP페이지(.jsp)를 서블릿 프로그램 (.java)으로 변환
    1-3. 서블릿 프로그램(.java)을 컴파일하여 서블릿(.class)을 생성
    1-4. JSP페이지에 상응하는 서블릿이 존재하면 변환과 컴파일을 하지 않음
    1-5. 서블릿(.class)을 실행하여 클라이언트 요청을 처리


  1. 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방식이 뜬 이유와 자바스크립트 더 발전한 이유 중 하나인 것 같다.