2013년 3월 8일 금요일

[JSP] JSP

JSP의 등장배경과 그 쓰임에 대해서는 앞에서 언급하였다. JSP는 HTML문서에 JSP 문법의 코드가 삽입되는 형태로 작성된다.
JSP 페이지에 있는 HTML 코드는 웹 브라우저로 그대로 전송되지만, JSP문법의 코드는 웹 컨테이너 쪽에서 실행되고 그 결과만 웹 브라우저로 전송된다.

웹 컨테이너는 JSP페이지 전체를 서블릿 클래스의 소스코드로 변환하고, 다음에 소스 코드를 컴파일 후 결과를 가지고 서블릿 객체를 만든다. 그 뒤 서블릿 객체를 초기화해서 서블릿을 만든다. 따라서 웹 브라우저로부터 URL이 왔을 때 실행 되는 것은 서블릿이다.

JSP문법의 세가지 형태
1. <%로 시작%>로 끝나는 형태
2. ${로 시작}로 끝나는 형태
3. <jsp:forward>나 <C:if>와 같은 XML태그 형태

세가지 형태 중 첫 번째 문법에서 지시자와 스크립팅 요소로 나눠진다.
우선 스크립팅 요소부터 살펴보자. 스크립팅 요소에도 세가지 문법이 있다.
1. 스크립틀릿
2. 익스프레션
3. 선언부

스크립틀릿은 <% %>사이에 자바 명령문이 들어갈 수 있으며, 명령문은 웹 서버쪽에서 실행 되는 코드이다.

익스프레션은 <%= %>로 표현하고 그 사이에 자바의 결과값을 출력하는 문법이다. 따라서 변수나, 식, 함수를 넣어줄 수 있으며 그 결과값을 출력해 준다.

선언부는 <%! %>이며 사이에 변수 선언이나 메서드 선언을 쓸 수 있다. 자바에서 멤버 변수 또는 메서드라고 할 수 있다. 따라서 자바의 public, private, protected, final, static과 같은 키워드를 그대로 사용할 수 있다. 하지만 JSP는 스레드 기반으로 작동하는 서블릿으로 변환될 것이므로 인스턴스 변수를 선언해서는 안된다. 그리고 점점 JSP에서 자바 코드와 같은 로직을 처리해 주는 코드를 점점 없애려는 추세이기 때문에 자주 쓰이는 형태는 아니다.

지금까지 스크립팅에 대해 알아보았다. 다음으로 지시자에 대해 알아보자.
지시자는 웹 컨테이너가 JSP페이지를 서블릿 클래스로 변환할 때 필요한 정보들을 기술하기 위해 사용하는 문법이다. 세가지의 지시자가 있다.
1. Page지시자
2. Include지시자
3. Taglib지시자

지시자는 <%@ %>로 표현하며 첫 번째 요소로 지시자의 이름이 오고 다음으로는 속성들이 올 수 있다.
예)<%@page 속성 속성 %>

page지시자
JSP페이지 전체에 적용되는 정보를 기술하여 WAS에게 전달.

page지시자 속성
contentType : JSP페이지가 생성하는 문서의 종류, 그 문서를 웹 브라우저로 전송할 때 사용되는 인코딩 타입
import : 스크립팅 요소 안에서 사용할 자바 클래스와 인터페이스를 임포트
buffer : 출력 버퍼 크기
autoFlush : 출력 버퍼가 찼을 때의 동작
isThreadSafe : JSP페이지가 싱클 또는 스레드 모드로 작동하도록 설정
session : JSP페이지의 세션 참여 여부
errorPage : 에러를 처리할 JSP페이지의 URL
isErrorPage : 에러를 처리하는 JSP페이지인지 여부
isELIgnored : 익스프레션 언어의 무시 처리 여부
pageEncoding : JSP페이지의 인코딩 타입
info : JSP페이지에 대한 설명
extends : JSP페이지로부터 생성되는 서블릿 클래스의 슈퍼클래스
language : 항상 java로 설정되어 있으며 스크립팅을 구현할 언어 설정

include지시자
다른 JSP페이지나 HTMl문서를 불러다가 현재 JSP페이지의 일부로 만들기 위해 서용한다.
예)<%@include file="A.jsp"%>

위의 예처럼 불러온 대상은 file이라는 애트리뷰트를 이용해서 지정할 수 있으며, 속성값은 지시자가 속하는 JSP페이지를 기준으로 상대적인 URL로 해석된다.
이처럼 include지시자를 사용함으로써 중복이 되는 JSP페이지를 만들 필요없이 include시켜줌으로써 개발 시간을 단축시키는 등의 이점을 잘 알아두자.
include지시자와 <jsp:include>액션 태그의 차이가 있으니 잠시 언급하겠다.


Taglib지시자
JSP페이지에 사용할 태그 라이브러리를 지정. 표준화된 태그 라이브러리를 JSTL이라고 한다. JSTL을 사용하기 위해서 태크라이브러리 지시자를 꼭 써야한다.
예) <%@taglib profix="c" uri="http://java.sun.com/jsp/jstl/core"%>

 Taglib를 이용하여 JSP페이지 내에 불필요한 자바 코드를 줄일 수 있다. 자바 코드를 줄임으로써 웹 어플리케이션의 표현과 비즈니스 로직을 구분하기 위함이다. 특히 액션 태그를 많이 활용할 것이다. 액션 태그를 살펴보자.

액션태그
<jsp:include page="A.jsp"/> A.jsp페이지를 현제 페이지로 include(페이지 모듈화를 통해 템플릿을 만들기 수월하다)
<jsp:forward page="A.jsp"/> 현제 페이지의 제어를 A.jsp로 전달
<jsp:useBean scope="page" id="cls" class="xx.MyBean"/> xx페키지의 MyBean 클래스를 class로 page 범위에서 사용할 것

댓글 없음:

댓글 쓰기