JSP 기초 문법 - JSP 페이지의 구성 요소
JSP 기초 문법 - JSP 페이지의 구성 요소
JSP페이지를 작성하려면 다양한 요소들이 필요하다. JSP 페이지에 대한 정보를 지정해야 하고, 웹 브라우저가 전송한 데이터를 읽어오는 기능이 필요하며, JSP 페이지에서 사용할 데이터를 생성하는 실행 코드가 필요하고, 웹 브라우저에 문서 데이터를 전송해주는 기능이 필요하다. 이를 위해 JSP는 아래와 같은 것을 제공한다.
- 디렉티브(Directive)
- 스크립트 : 스크립트릿(Scriptlet), 표현식(Expression), 선언부(Declaration)
- 표현 언어(Expression Language)
- 기본 객체(Implicit Object)
- 정적인 데이터
- 표준 액션 태그(Action Tag)
- 커스텀 태그(Custom Tag)와 표준 태그 라이브러리(JSTL)
HTML과 JSP 주석문 기호
1. HTML 주석문 : <!--html 주석문 -->
2. JSP 주석문 : <%-- jsp 주석문 --%>
디렉티브(Directive)
디렉티브는 JSP 페이지에 대한 설정 저보를 지정할 때 사용되며, 다음과 같은 구문을 통해서 디렉티브를 선언할 수 있다.
<%@ 디렉티브 이름 속성1="값1" 속성2="값2" ... %>
<%@ page content ="text/html; charset=utf-8" %>
<%@를 지시자 또는 지시어라고 한다. JSP 파일 내에서 jsp를 실행할 때 웹서버에게 해당 페이지를 어떻게 처리할 것인지 정보를 지정해주는 데 사용한다.
두번째 줄의 코드는 JSP 페이지가 생성할 문서가 HTML이며, 문서의 character set 이 UTF-8인 것을 나타낸다. page 디렉티브라고 하며, JSP페이지가 생성할 문서의 타입 분만 아니라 다양한 정보를 지정할 수 있다.
JSP가 제공하는 디렉티브
디렉티브 | 설명 |
page | JSP 페이지에 대한 정보를 지정한다. JSP가 생성하는 문서의 타입, 출력 버펴의 크기, 에러 페이지 등 JSP페이지에서 필요로 하는 정보를 설정한다. |
taglib | JSP 페이지에서 사용할 태그 라이브러리를 지정한다. |
include | JSP 페이지의 특정 영역에 다른 문서를 포함 시킨다. |
스크립트 요소
JSP에서 문서의 내용을 동적으로 생성하기 위해 사용되는 것이 스크립트 요소이다. 스크립트 요소를 사용하면 사용자가 폼에 입력한 정보를 데이터베이스에 저장할 수 있으며, 데이터베이스로부터 게시글 목록을 읽어와 출력할 수도 있다. 또한 스크립트를 사용하면 자바가 제공하는 다양한 기능도 사용할 수 있다. JSP를 스크립트 언어라고 부르는 이유가 바로 막강한 스크립트 코드를 제공해주기 때문이다.
- 표현식(Expression) :값을 출력한다.
- 스크립트릿(Scriptlet) : 자바 코드를 실행한다.
- 선언부(Declaration) : 자바 메소드(함수)를 만든다.
표현 언어 (expression language)
JSP의 스크립트 요소는 자바 문법을 그대로 사용할 수 있기 때문에, 자바 언어의 특징을 그대로 사용할 수 있다는 장점이 있다. 하지만 스크립트 요소를 사용하면 JSP 코드가 다소 복잡해진다.
<%
int a=Integer.parseInt(request.getParameter("a"));
int b=Integer.parseInt(request.getParameter("b"));
%>
a*b=<%= a*b %>
위의 코드를 표현언어(expression language)를 사용하면 아래와 같이 간결하게 작성할 수 있다.
a*b=${param.a * param.b}
표현언어는 '${'와 '}'사이에 정해진 문법을 따르는 식(expression;값을 생성하는 코드)을 입력한다. JSP는 이 식을 분석해서 알맞은 기능을 실행한다. 위 코드에서 보는 것 처럼 JSP스크립트 코드를 사용하는 것 보다 표현언어를 사용하는 것이 코드를 간결하고 이해하기 좋게 만들어주기 때문에, 특별한 이유가 없는 표현 언어를 주로 사용한다.
기본 객체 (Implicit Object)
JSP는 웹 어플리케이션 프로그래밍을 하는데 필요한 기능을 제공해주는 '기본 객체(implicit object)'를 제공하고 있다. request, response, session, application, page 등 다수의 기본 객체가 존재하는데, 이들은 각각 요청 파라미터 읽어오기, 응답 결과 전송하기, 세션 처리하기, 웹 어플리케이션 정보 읽어오기 등의 기능을 제공하고 있다.
표준 액션 태그(Action Tag), 커스텀 태그(Custom Tag), 태그 라이브러리 (JSTL)
액션 태그는 JSP 페이지에서 특별한 기능을 제공한다. <jsp:include>가 액션 태그인데, 이 액션 태그는 특정한 페이지의 실행 결과를 현재 위치에 포함시킬때 사용한다.
액션 태그는 <jsp:액션태그이름>의 형태를 띄며 액션 태그 종류에 따라서 서로 다른 속성과 값을 갖는다.
커스텀태그는 JSP를 확장시켜주는 기능으로서, 액션 태그와 마찬가지로 태그 형태로 기능을 제공한다. 액션 태그와 차이점이 있다면 커스텀 태그는 개발자가 직접 개발해주어야 한다. 일반적으로 JSP 코드에서 중복되는 것을 모듈화하거나 스크립트 코드를 사용할 때 발생하는 소스 코드의 복잡함을 없애기 위해 커스텀 태그를 사용한다.
커스텀 태그 중에서 자주 사용하는 것들을 별도로 표준화한 태그 라이브러리가 JSTL(JavaServer Pages Standard Tag Library)이다. JSTL은 if-else조건문 그리고 for 구문과 같은 반복 처리를 커스텀 태그를 이용해서 구현할 수 있도록 해준다.