[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
-
예외 발생 시 예외 처리
-