[boostcourse] 2.3. JSP - BE

1. JSP란?

- JavaServer Pages

- HTML 코드에 Java 코드를 넣어 동적인 웹 페이지를 생성하는 웹 애플리케이션 도구

- JSP는 실제로 Servlet 기술을 사용

- WAS는 JSP 코드를 Servlet 코드로 변환한 후 컴파일하여 실행함

- 가장 상단의 <%@ %> 태그에서 JSP 파일이 어떻게 구성되어 있는지 정보를 알려줌

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>1부터 10까지 더하는 페이지</title>
    </head>
    <body>
        <%      // Scriptlet: 여기 안에는 Java 코드를 입력할 수 있음
            int total = 0;
            for(int i = 1; i <= 10; i++) {
                total += i;
            }
        %>
        1부터 10까지의 합 : <%=total%>
    </body>
</html>

 

2. JSP 라이프사이클

sumTen.jsp 가 실행될 때 벌어지는 일

- .metadata 폴더에 sumTen_jsp.java 파일이 생성됨

- 해당 파일의 _jspService() 메소드 안을 살펴 보면, jsp 파일의 내용이 변환되어 들어있는 것을 확인할 수 있음

- sumTen_jsp.java는 Servlet 소스로 자동으로 컴파일 되어 실행돼서 그 결과가 브라우저에 보여짐

JSP의 실행 순서

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

2. 브라우저가 요청한 JSP가 최초로 요청됐을 경우일 때,

  2.1. JSP로 작성된 코드가 Servlet 코드로 변환됨 (Java 파일 생성)

  2.2. Servlet 코드를 컴파일해서 실행가능한 bytecode로 변환함 (class 파일 생성)

  2.3. Servlet 클래스를 로딩하고 인스턴스를 생성함

3. Servlet이 실행되어 요청을 처리하고 응답 정보를 생성함

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP 라이프 사이클 확인 페이지</title>
    </head>
    <body>
        Hello!
        <%
            System.out.println("서블릿의 Service 메소드에 들어감");
        %>

        <%!     // 느낌표 추가함
            public void jspInit() {
                System.out.println("서블릿의 Init 메소드에 들어감");
            }

            public void jspDestroy() {
                System.out.println("서블릿의 Destroy 메소드에 들어감");
            }
        %>
    </body>
</html>

 

3. JSP 문법

스크립트 요소

JSP 페이지에서는 다음과 같이 3가지의 스크립트 요소를 제공함

1. 선언문 (Declaration)

<%! %> : 전역 변수 선언 및 메소드 선언에 사용

2. 스크립트릿 (Scriptlet)

<% %> : 프로그래밍 코드 기술에 사용

3. 표현식 (Expression)

<%= %> : 화면에 출력할 내용 기술에 사용

 

주석

JSP 페이지에는 HTML 주석, Java 주석, JSP 주석을 사용할 수 있음

1. HTML 주석

<!-- -->

2. JSP 주석

<%-- --%>

3. Java 주석

//

/* */

 

4. JSP 내장 객체

- JSP를 실행하면 Servlet 소스가 생성됨

- 대부분은 _jspService() 메소드 안에 삽입되는데, 여기에 미리 선언된 객체들이 있음

- 해당 객체들은 JSP에서도 사용할 수 있음

- response, request, application, session, out과 같은 변수를 내장 객체라고 함

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>내장 객체 실습 페이지</title>
    </head>
    <body>
        내장 객체 실습 페이지 <br>
        <%
            StringBuffer url = request.getRequestURL();
            out.print("url : " + url.toString());
            out.print("<br>");
        %>

    </body>
</html>