본문 바로가기
웹 프로그래밍/Servlet & JSP

JSP 페이지 작성과 실행

by 안드레날린 2022. 4. 17.

첫 번째 JSP 페이지 작성

C:\apache-tomcat-9.0.62\webapps\ROOT\date.jsp

<%@ page contentType="text/html;charset=utf-8" %>
<%@ page import="java.util.*" %>

<html>
<head>
<title>Date</title>
</head>
<body>
<%
    Date day = new Date();
    out.println("오늘 날짜는 " + day);
%>
</body>
</html>

 

첫 번째 JSP 페이지 요청 및 응답

웹 브라우저를 이용해 아래 URL을 입력하고 JSP 페이지를 요청하면 된다.

http://localhost:8080/date.jsp

 

서블릿 변환 과정

C:\apache-tomcat-9.0.62\work\Catalina\localhost\ROOT\org\apache\jsp

 

1. 웹 브라우저에서 웹 애플리케이션 서버로 date.jsp 페이지 요청

2. 웹 애플리케이션 서버는 요청된 페이지가 JSP 페이지 이므로 JSP 컨테이너에 전달

3. JSP 컨테이너는 JSP 페이지를 date_jsp.java > date_jsp.class 파일로 변환 및 컴파일

(서블릿 : 변환된 자바 클래스 파일)

4. 아래는 date_jsp.java 파일의 일부를 발췌한 내용이다.

 - 아래 date_jsp.java 소스를 자세히 살펴보면 서블릿은 html 태그를 out.write() 메소드를 사용해서 자바 프로그램으로 변환시킨 자바 클래스 파일이다.

 - JSP 컨테이너는 JSP 페이지를 변환할 때 java.lang.*, javax.servlet.*, javax.servlet.http.*, javax.servlet.jsp.* 패키지의 클래스 파일들을 자동으로 import 한다.

/*
 * Generated by the Jasper component of Apache Tomcat
 * Version: Apache Tomcat/9.0.62
 * Generated at: 2022-04-17 11:25:02 UTC
 * Note: The last modified time of this file was set to
 *       the last modified time of the source file after
 *       generation to assist with modification tracking.
 */
package org.apache.jsp;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.util.*;

public final class date_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent,
                 org.apache.jasper.runtime.JspSourceImports {

  private static final javax.servlet.jsp.JspFactory _jspxFactory =
          javax.servlet.jsp.JspFactory.getDefaultFactory();

  private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;

  private static final java.util.Set<java.lang.String> _jspx_imports_packages;

  private static final java.util.Set<java.lang.String> _jspx_imports_classes;

  static {
    _jspx_imports_packages = new java.util.HashSet<>();
    _jspx_imports_packages.add("javax.servlet");
    _jspx_imports_packages.add("java.util");
    _jspx_imports_packages.add("javax.servlet.http");
    _jspx_imports_packages.add("javax.servlet.jsp");
    _jspx_imports_classes = null;
  }
  
  ...
  ...
  ...
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("<html>\r\n");
      out.write("<head>\r\n");
      out.write("<title></title>\r\n");
      out.write("</head>\r\n");
      out.write("<body>\r\n");

    Date day = new Date();
    out.println("오늘은 날짜는 " + day);

      out.write("\r\n");
      out.write("</body>\r\n");
      out.write("</html>");
    } catch (java.lang.Throwable t) {
      if (!(t instanceof javax.servlet.jsp.SkipPageException)){
        out = _jspx_out;
        if (out != null && out.getBufferSize() != 0)
          try {
            if (response.isCommitted()) {
              out.flush();
            } else {
              out.clearBuffer();
            }
          } catch (java.io.IOException e) {}
        if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
        else throw new ServletException(t);
      }
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
}

'웹 프로그래밍 > Servlet & JSP' 카테고리의 다른 글

JSP 태그 #2 - JSP 태그 종류 및 include 지시어  (0) 2022.04.18
JSP 태그 #1 - JSP 태그 종류 및 page 지시어  (0) 2022.04.17
JSP 시작하기  (0) 2022.04.17
JSP 개요  (0) 2022.04.17