[JSP] 2. JSP(Java Server Page) 라이프사이클

gyrud02·2022년 1월 10일
0

이론(THEORY)

목록 보기
20/24

2. JSP(Java Server Page) 라이프사이클

1) JSP의 실행순서

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

2) JSP 라이프사이클

JSPCycle

3) 실습코드 - 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>
  • 실행 후 위 코드 워크스페이스 경로 :\workspace\jsp6.metadata.plugins\org.eclipse.wst.server.core\tmp1\work\Catalina\localhost\firstweb\org\apache\jsp에 들어가서 java 파일을 열어본다.
public final class lifecycle_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent,
                 org.apache.jasper.runtime.JspSourceImports {

 // 선언문
	public void jspInit(){ 
    // Init메서드 내용이 jspService() 밖에 있는 것을 볼 수 있다.
	
		System.out.println("jspInit()");	
}

	public void jspDestroy(){ 
    // Destroy 메서드 내용이 jspService() 밖에 있는 것을 볼 수 있다.

		System.out.println("jspDestroy()");
}

.
.
.
// Service 메서드
public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
        throws java.io.IOException, javax.servlet.ServletException {

final java.lang.String _jspx_method = request.getMethod();
if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD");
return;
}

    final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;
    javax.servlet.jsp.JspWriter _jspx_out = null;
    javax.servlet.jsp.PageContext _jspx_page_context = null;


    try {
      response.setContentType("text/html; charset=UTF-8");
      pageContext = _jspxFactory.getPageContext(this, request, response,
      			null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;

      out.write("\r\n");
      out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
      out.write("<html>\r\n");
      out.write("<head>\r\n");
      out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
      out.write("<title>Insert title here</title>\r\n");
      out.write("</head>\r\n");
      out.write("<body>\r\n");
      out.write("\r\n");
      out.write("hello~~~\r\n");
      out.write("\r\n");
 System.out.println("jspService()"); 
      out.write("\r\n");
      out.write("\r\n");
      out.write(" \r\n");
      out.write("</body>\r\n");
      out.write("</html>");
profile
Back-End Engineer

0개의 댓글

관련 채용 정보