[JSP] JSP 동작 과정 / JSP 태그 / JSP 내장 객체


JSP 동작 과정


클라이언트가 웹브라우저로 JSP 파일 요청 (Request)

요청에 해당하는 브라우저의 명령어 실행 (URL 입력 및 전송)

WAS의 JSP컨테이너가 실행할 JSP 파일을 Servlet 파일 (자바 파일)로 변환 (Translation)

컨테이너가 변환된 자바 파일(.java)을 클래스 파일(.class)로 컴파일 (Compile) (실행을 위해 메모리에 올라가기 위해서)

컨테이너는 빌드된 class 파일을 실행, 그 결과를 HTML 파일(브라우저에서 실행 가능한 클라이언트용 소스)로 변경, 브라우저로 응답(Response)해 출력



JSP 태그


    • Servlet은 Java 언어를 이용하여 문서 작성, 출력 객체(ex) PrintWriter)를 이용해 HTML 코드 삽입

    • JSP는 HTML코드에 Java 언어를 삽입


디렉티브(지시자, Directive) 태그


  • 지시자 (Directive) : <%@ %> - page / include / taglib

    • page

      • 페이지 관련 설정

      • <%@ page language="java" contentType="text/html; charset=UTF-8"
            pageEncoding="UTF-8"%>
        

        language, contentType, pageEncoding 세 항목은 반드시 작성해야 한다

    • include

      • 다른 두 개의 페이지(파일)을 결합하여 출력

      • 정적으로 다른 페이지를 현재 페이지에 추가할 때 사용

      • 해당 페이지의 코드가 현재 페이지에 그대로 삽입된 후 실행하는 결과를 나타냄

      • include ex)

        • include.jsp

            <%@ page language="java" contentType="text/html; charset=UTF-8"
                pageEncoding="UTF-8"%>
            <!DOCTYPE html>
            <html>
            <head>
            <meta charset="UTF-8">
            <title>Include 지시자</title>
            </head>
            <body>
                <h1>include.jsp 페이지</h1>
                <%@include file="includeTest.jsp" %>
            </body>
            </html>
          
        • includeTest.jsp

            <%@ page language="java" contentType="text/html; charset=UTF-8"
                pageEncoding="UTF-8"%>
            <!DOCTYPE html>
            <html>
            <head>
            <meta charset="UTF-8">
            <title>Include 지시자</title>
            </head>
            <body>
                <h1>includeTest.jsp 페이지</h1>
            </body>
            </html>
          
        • 실행결과

            include.jsp 페이지
                          
            includeTest.jsp 페이지
          
        • => include : header나 footer와 같이 매 페이지마다 반복되는 부분에 사용!


스크립트(Script) 태그


  • 주석 (Comment) : <%-- --%>

  • 표현식 (Expression) : <%= %> - 결과값 출력

    • 표현식에서의 주석 : <%//= %>
  • 선언 (Declaration) : <%! %> - 변수, 메서드 선언 (전역 성질을 지님)

    • ex)

        <%@ page language="java" contentType="text/html; charset=UTF-8"
            pageEncoding="UTF-8"%>
        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="UTF-8">
        <title>선언문/표현식</title>
        </head>
        <body>
            <%!
                int i = 10;
                String str = new String("JSP");
                      
                public int add(int x, int y){
                    return x + y;
                }
            %>
                  
            <%=i %>
            <br>
            <%=str %>
            <br>
            <%=add(10, 31) %>
      
            <%!
                public int sum(){
                  
                    int sum = 0;
                    for(int i = 1; i <=50; i++){
                        sum += i;
                    }
                    return sum;
                }
            %>
            <%
                String txt = "1부터 50까지의 합";
            %>
            <p><%=txt %><i><%=sum() %></i>입니다.</p>
            <p><%=txt %> 나누기 10은 <i><%=sum() / 10.0 %></i>입니다.</p>
      
        </body>
        </html>
      
      • 실행결과

          10 
          JSP 
          41 
          1부터 50까지의 합은 1275입니다.
        
          1부터 50까지의 합 나누기 10은 127.5입니다.
        
  • 스크립트릿 (Scriptlet) : <% %> - JAVA 코드 입력

    • ex) 구구단 출력하기

        <%@ page language="java" contentType="text/html; charset=UTF-8"
            pageEncoding="UTF-8"%>
        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="UTF-8">
        <title>구구단</title>
        </head>
        <body>
            <%
                for (int i = 2; i < 10; i++){
                          
                    for (int j = 1; j < 10; j++){
                        out.print(i + "*" + j + "=" + i*j + "\t");
                    }
                          
                    out.print("<br>");
                }
            %>
        </body>
        </html>
      


액션(Action) 태그


  • 액션태그 (Action Tag) : <jsp:action> </jsp:action> - 자바빈(클래스, 객체) 연결

    • XML규칙을 반드시 따라야 함



JSP 내장 객체


  • request

    • javax.servlet.http.HttpServletRequest

    • 클라이언트의 http 요청 정보를 저장

  • response

    • javax.servlet.http.HttpServletResponse

    • http 요청에 대한 응답 정보를 저장

  • out

    • javax.servlet.jsp.JspWriter

    • 응답 페이지 전송을 위한 출력 stream

  • session

    • javax.servlet.http.HttpSession

    • 클라이언트가 서버에 접속했을 때 세션정보를 저장

  • application

    • javax.servlet.ServletContext

    • 컨텍스트 정보 저장

  • pageContext

    • javax.servlet.jsp.PageContext

    • 응답 페이지 실행에 필요한 Context 정보 저장

  • page

    • java.lang.Object

    • JSP 페이지의 서블릿 인스턴스를 저장

  • config

    • javax.servlet.ServletConfig

    • JSP 페이지에 대한 설정 정보를 저장

  • exception

    • java.lang.Exception

    • 예외 발생 시 예외 처리

Categories:

JSP/Servlet