1.1 JSP 소개

서블릿을 작성하는 두 가지 일반적인 방법이 있습니다: 명령형선언형 . 우리는 이미 첫 번째 것을 다루었습니다. 이것은 사실 서블릿입니다. 두 번째는 JSP(Java Server Pages)라고 하며 지금부터 이에 대해 알아보겠습니다.

서블릿 JSP 예:


<html> 
    <body> 
        <% out.print(2*5); %> 
    </body> 
 </html> 

우리에게 익숙한 고전적인 서블릿과 별로 비슷하지 않습니까? 이것은 사실입니다. JSP는 Java 코드 삽입(녹색으로 강조 표시됨)이 있는 HTML 페이지입니다 .

서블릿에 자바 코드가 많고 HTML 코드가 적다면 클래식 서블릿을 사용하는 것이 더 편할 것 입니다 . 하지만 서버에서 몇 줄만 변경되는 큰 HTML 페이지가 필요한 경우에는 어떻게 해야 할까요?

이 경우 가장 간단한 방법은 이 HTML 페이지를 만들고 어떻게든 서버에서 바로 그 페이지에서 Java 코드를 실행하는 것입니다.

1.2 JSP 컴파일

다른 예를 살펴보겠습니다.


<html> 
  <body> 
    <%
        double num = Math.random();
        if (num > 0.95) {
     %>
         <h2>You are lucky, user!</h2><p>(<%= num %>)</p>
    <%
        }
    %> 
  </body> 
</html> 

임의의 숫자를 얻고 0.95보다 크면 "You're lucky, user!"라는 텍스트를 인쇄합니다.

여기에서 Java 코드는 파란색으로 강조 표시됩니다 . 일반(강조 표시되지 않음) - HTML 코드 및 빨간색 - 서비스 태그 Java 코드가 있는 위치와 HTML이 있는 위치를 이해하는 데 도움이 됩니다.

이상한 점이 보이시나요? 닫는 중괄호 "}"는 다른 "code block". 그러한 코드를 작성하는 올바른 방법은 무엇입니까? 어떻게 작동합니까?

대답은 매우 간단합니다 :)

웹 서버는 JSP 파일을 찾은 후 이를 클래식 서블릿으로 컴파일합니다. 위의 JSP 페이지를 기반으로 이 서블릿이 생성됩니다.

public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)  throws Exception {
    PrintWriter out = response.getWriter();
    out.print("<html> ");
    out.print("<body>");
        double num = Math.random();
        if (num > 0.95) {
            out.print("<h2>You're lucky user! </h2><p>(" + num + ")</p>");
        }
    out.print("</body>");
    out.print("</html>");
    }
}

웹 컨테이너는 HTML이 텍스트로 바뀌고 Java 코드 삽입이 일반 Java 코드가 되는 서블릿 코드를 생성했습니다!