JSP에 대한 이해

JSP의 가장 중요한 점 : 서블릿으로 바뀌어서 실행된다.

JSP이란

  • Java Server Page의 약어
  • Java를 이용한 서버 사이드 스크립트 언어
  • HTML코드에 Java코드를 넣어 동적 웹 페이지를 생성하는 웹 어플리케이션 도구
  • JSP가 실행되면 서블릿으로 변환되어 웹 어플리케이션 서버에서 동작한다.
    • JSP는 실제로 서블릿 기술을 사용
  • 웹 어플리케이션 : 웹에서 실행되는 응용프로그램

JSP 등장 배경

  • 마이크로소프트에서 ASP(Active Server Page)라는 쉽게 웹을 개발할 수 있는 스크립트(script) 엔진을 발표함 (1998년)
  • 1997년에 발표된 서블릿은 ASP에 비하여 상대적으로 개발 방식이 불편함
  • ASP에 대항하기 위하여 1999년 썬마이크로시스템즈에서 JSP를 발표


JSP Life Cycle

  1. 브라우저가 웹서버에 JSP에 대한 요청 정보를 전달한다.
  2. 브라우저가 요청한 JSP가 최초로 요청했을 경우만 JSP로 작성된 코드가 서블릿으로 코드로 변환한다. (java 파일 생성)
  3. 서블릿 코드를 컴파일해서 실행가능한 bytecode로 변환한다. (class 파일 생성)
  4. 서블릿 클래스를 로딩하고 인스턴스를 생성한다.
  5. 서블릿이 실행되어 요청을 처리하고 응답 정보를 생성한다.

서블릿과 JSP 라이프 싸이클에서 실행되는 메소드 비교

  • 서블릿 라이프 싸이클에서 실행되는 메소드
    • init(), service(), destroy()
  • JSP 라이프 싸이클에서 실행되는 메소드
    • _jspinit(), _jspservice(), _jspdestroy()


JSP 문법

선언문(Declaration)

  • 선언문 : <%! %>
  • 전역변수 선언 및 메소드 선언에 사용
1
2
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

스크립트릿(Scriptlet)

  • 스크립트릿 : <% %>
  • 가장 일반적으로 많이 쓰이는 스크립트 요소
  • 주로 프로그래밍의 로직을 기술할 때 사용
  • 스크립트릿에서 선언된 변수는 지역변수

표현식(Expression)

  • 표현식 : <%= %>
  • JSP페이지에서 웹 브라우저에 출력할 부분을 표현(즉, 화면에 출력하기 위한 것)

주석(Comment)

  • 주석 : <%--주석내용--%>

  • JSP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

<%
for(int i = 1; i <= 5; i++){
%>
<H<%=i %>> <%=i>번째 글자크기 </H<%=i %>>
<%
}
%>
</body>
</html>
  • HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Insert title here</title>
  </head>
  <body>
    <h1>1번째 글자크기</h1>

    <h2>2번째 글자크기</h2>

    <h3>3번째 글자크기</h3>

    <h4>4번째 글자크기</h4>

    <h5>5번째 글자크기</h5>
  </body>
</html>
  • 서블릿
for(int i = 1; i <= 5; i++){

      out.write('\n');
      out.write('<');
      out.write('H');
      out.print(i );
      out.write("> ");
      out.print(i );
      out.write("번째 글자크기 </H");
      out.print(i );
      out.write('>');
      out.write('\n');

}


JSP 내장객체

대표적인 JSP 내장객체 : response, request, application, session, out

* 내장객체 : 개발자가 선언하지 않아도 사용할 수 있는 미리 선언된 변수