JSP(Java Server Page)란?
HTML 내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어이다.
실행 시에 자바 서블릿으로 변환된 후 실행되므로 서블릿과 거의 유사하다고 볼 수 있다.
하지만, 서블릿과는 달리 HTML 표준에 따라 작성되므로 웹 디자인에 편리하다.
JSP 개발배경
1998년 마이크로소프트에서 ASP(Active Server Page)라는 웹을 쉽게 개발할 수 있는 스크립트 엔진을 발표하였다.
1997년에 발표되었던 서블릿은 ASP에 비하여 상대적으로 개발방식이 불편하였고, 이에 대항하기 위해
1999년 썬마이크로시스템즈에서 JSP를 발표하였다. JSP는 실제 서블릿 기술을 사용한다.
JSP 라이프 싸이클
WAS는 웹 브라우저로부터 JSP에 대한 요청을 받게 되면, JSP 코드를 서블릿 소스코드로 변환한 후 컴파일하여 실행된다.
서블릿으로 컴파일되어 실행될 때, 상황에 따라서 어떤 메소드들이 실행되는지를 잘 알아야 JSP를 알맞게 작성할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <%@ 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>sum10</title> </head> <body> <% int total = 0; for(int i = 1; i <= 10; i++){ total = total + i; } %> 1부터 10까지의 합 : <%=total %> </body> </html> | cs |
위와 같이 sum10.jsp 파일을 작성한 후 아래의 경로로 들어가 java 파일을 확인해보면 서블릿으로 변경된 것을 볼 수 있다.
프로젝트 경로/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/Catalina/localhost
/프로젝트명/org/apache/jsp/jsp파일명과 동일한 java파일
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | 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); } } | cs |
jsp파일의 내용이 _jspService() 메서드 안에 변환되서 들어가있는 것을 확인할 수 있다.
위의 java파일은 서블릿 소스로 자동으로 컴파일되면서 실행되서 그 결과가 브라우저에 보여지게 된다.
_jspService()가 아닌 필드에 선언하고 싶은 경우에는 아래와 같이 <%! %>를 이용하면 된다.
1 2 3 4 5 | <%! public void jspInit() { System.out.print("jspInit()"); } %> | cs |
JSP 실행순서
1. 브라우저가 웹 서버에 JSP에 대한 요청 정보를 전달한다.
2. 브라우저가 요청한 JSP가 최초 요청일 경우에만
1) JSP로 작성된 코드가 서블릿 코드로 변환된다.(java 파일 생성)
2) 서블릿 코드를 컴파일해서 실행가능한 binarycode로 변환한다.(class 파일 생성)
3) 서블릿 클래스를 로딩하고 인스턴스를 생성한다.
3. 서블릿이 실행되어 요청을 처리하고 응답 정보를 생성한다.
참고자료
https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94%EC%84%9C%EB%B2%84_%ED%8E%98%EC%9D%B4%EC%A7%80
'Web > JSP' 카테고리의 다른 글
[JSP] JSP 내장객체 (0) | 2018.12.03 |
---|---|
[JSP] JSP 문법 (0) | 2018.12.03 |