반응형


jsp는 톰켓을통해 서블릿으로 만들어짐


경로 쉽게 찾는법

해당파일 마우스 우클릭->properties->location 뒤 아이콘 클릭


우리가 작성한파일

E:\eclipse_workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\firstweb 안에 jsp파일 


서블릿파일로 생성된 파일

E:\eclipse_workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\firstweb\org\apache\jsp안에 java파일 확인

이파일의 _jspService()메소드를 살펴보면 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엔진이 실행해줌)

1.브라우저가 웹서버에 JSP에 대한 요청 정보를 전달한다.

2.브라우저가 요청한 JSP가 최초로 요청했을 경우만

1) JSP로 작성된 코드가 서블릿으로 코드로 변환한다. (java 파일 생성)

2) 서블릿 코드를 컴파일해서 실행가능한 bytecode로 변환한다. (class 파일 생성)

3) 서블릿 클래스를 로딩하고 인스턴스를 생성한다.

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>

 

 <%! %>선언식

필드나 메서드를 지정하고 싶을때 이런 선언식 사용


jsp lfiecycle 참고링크

https://beginnersbook.com/2013/05/jsp-tutorial-life-cycle/

https://www.studytonight.com/jsp/lifecycle-of-jsp.php



서블릿 라이프 싸이클에서 실행되는 메소드와 JSP 라이프 싸이클에서 실행되는 메소드의 이름을 비교해 봅시다.


반응형

'웹개발 > 부스트코스(웹프로그래밍)' 카테고리의 다른 글

JSP 내장객체  (0) 2019.01.05
JSP 문법  (0) 2019.01.04
JSP (java server page)란?  (0) 2019.01.04
JavaScript Debugging  (0) 2019.01.03
Ajax통신의 이해  (0) 2019.01.03
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기