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); // <%=total%>
    

    JSP의 실행순서

    1. 브라우저가 웹서버에 JSP에 대한 요청 정보를 전달한다.
    2. 브라우저가 요청한 JSP가 최초로 요청했을 경우만 JSP로 작성된 코드가 서블릿으로 코드로 변환한다. (java 파일 생성)
    3. 서블릿 코드를 컴파일해서 실행가능한 bytecode로 변환한다. (class 파일 생성)
    4. 서블릿 클래스를 로딩하고 인스턴스를 생성한다.
    5. 서블릿이 실행되어 요청을 처리하고 응답 정보를 생성한다.

    lifecycle.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    hello
    <%
    	System.out.println("_jspService()");
    %>
    
    <%!
    public void jspInit() {
    	System.out.println("jspInit()!");
    }
    
    public void jspDestroy() {
    	System.out.println("jspDestroy()");
    }
    %>
    
    </body>
    </html>

    처음 요청시 init 요청되었다.

    두번째 요청시 service만 요청

    수정이 되었거나 was가 종료가 되어서 다시 시작할 경우 

    ㅡ> Destroy init service 순서로 생성 된다.

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading