[JSP] 지시어, 스크립트요소, 내장객체
▶ JSP 코드 구조
● JSP 코드
- JSP란 HTML문서에 내부적으로 Java 문법을 사용할 수 있게 하는 웹페이지 스크립트 언어
- HTML태그안에 자바 코드가 삽입됨, 확장자가 .jsp
- JSP는 뷰(view) 페이지를 만들때 사용, 뷰는 단순히 클라이언트가 보는 화면으로서 클라이언트로부터 요청받거나 처리된 결과를 보여주는 페이지
● JSP 코드 구조
▶ 지시어 (Directive)
- JSP 페이지를 서블릿(자바) 코드로 변환 하는데 필요한 정보를 JSP 엔진에게 알려줌
- 지시어 종류는 다음 세가지 존재
● page 지시어 - JSP 페이지에 대한 정보를 설정
● include 지시어 - 외부 파일을 현재 JSP 페이지에 포함
● taglib 지시어 - EL(표현 언어)에서 사용할 자바 클래스의 메서드를 호출하거나 JSTL(JSP 표준 태그 라이브러리)을 사용하기 위해 선언
▶ page 지시어
- JSP 페이지에 대한 정보를 설정
- 문서의 타입, 에러 페이지, MIME 타입과 같은 정보를 설정
▷ page 지시어의 속성들
속성 |
내용 |
기본값 |
info | 페이지에 대한 설명을 입력 | 없음 |
language | 페이지에서 사용할 스크립팅 언어를 지정 | java |
contentType | 페이지에서 생성할 MIME 타입을 지정 | 없음 |
pageEncoding | charset과 같이 인코딩을 지정 | ISO-8859-1 |
import | 페이지에서 사용할 자바 패키지와 클래스를 지정 | 없음 |
session | 세션 사용 여부를 지정 | true |
buffer | 출력 버퍼의 크기를 지정. 버퍼를 사용하지 않으려면 "none"으로 지정 | 8KB |
autoFlash | 출력 버퍼가 모두 채워졌을 때 자동으로 비울 지를 결정. buffer 속성이 none일 때 false로 지정하면 에러 발생 |
true |
trimDirectiveWhitespaces | 지시어 선언으로 인한 공백을 제거할지 여부를 지정 | false |
errorPage | 해당 페이지에서 에러가 발생했을 때 에러 발생 여부를 보여줄 페이지를 지정 | 없음 |
isErrorPage | 해당 페이지가 에러를 처리할지 여부를 지정 | false |
● language, contentType , pageEncoding 속성
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
- language: 스크립팅 언어는 자바를 사용
- contentType: 문서의 타입, 즉 MIME 타입은 text/html이고, 캐릭터셋은 EUC-KR
- pageEncoding: 소스의 인코딩 방식은 EUC-KR
(EUC-KR 캐릭터셋과 인코딩 방식은 한글이 깨질 수 있으므로 UTF-8로 설정해야함 추후 인코디 방식 지정 챕터에서 설명)
● import 속성
- JSP 파일은 자바 파일로 변환, 자바에서 외부 클래스를 사용하려면 import문으로 해당 패키지나 클래스를 가져와야 하듯이 JSP 파일에서도 필요한 클래스가 있으면 import 해야함
● erroPage, isErrorPage 속성
- JSP는 실행 도중에 에러가 발생하면 "HTTP Status 500" 에러 화면을 웹 브라우저에 표시
- 개발을 진행하는 중이라면 어떤 에러가 발생되었는지 확인할 수 있으므로 도움이됨
- 하지만 실제 서비스 하는 도중 에러 화면이 뜬다면 고객의 신뢰를 잃는 요인이며 에러가 발생한 코드가 노출된다면 보안 측면에서도 좋지 않음
● trimDirectiveWhitespaces 속성
- 앞의 예제을 실행한 후 → 마우스 우클릭 → [페이지 원본 보기]를 클릭해서 보면 상단의 공백 존재
- 이는 page 지시어가 있던 부분이며 page 지시어가 웹 서버에서 처리된 후 공백으로 남게 되는 것
- 일반적으로 큰문제가 없지만 안드로이드와 같은 외부 기기와 연동 시 가끔 문제 일으킴
- 때문에 지시어 때문에 생성된 불필요한 공백을 제거하고 싶다면 trimDirectiveWhitespaces 속성을 사용
- 지시어에 trimDirectiveWhitespaces="true"로 설정
▶ include 지시어
- 많은 웹 사이트에서 상단 메뉴나 하단 정보가 여러 페이지에서 반복되오 사용되는 것을 볼 수 있음
- 뒤에서 학습할 세션 확인과 같은 작업도 모든 페이지에 삽입해야하는 경우 발생
- 이럴 때 반복되는 부분을 별도의 파일에 작성해두고 필요한 페이지에서 include 지시어로 포함시킬 수 있음
▶ taglib 지시어
- EL(표현 언어)에서 자바 클래스의 메소드를 호출하거나 JSTL(JSP 표준 태그 라이브러리)을 사용하기위한 지시어
→ 지금 다루기에 어렵기때문에 추후 챕터에서 설명
▶ 스크립트 요소(Script Elements)
- 스크립트 요소는 JSP에서 자바 코드를 직접 작성할 수 있게 해줌. 용도에 따라 선언부, 스크립틀릿, 표현식으로 나눠짐
● 선언부 (Declaration)
- 스크립틀릿이나 표현식에서 사용할 멤버 변수나 메서드를 선언
- 서블릿으로 변환 시 _jspService() 메서드 '외부'에 선언
● 스크립틀릿(Scriptlet)
- JSP 페이지가 요청을 받았을 때 실행돼야 할 자바 코드를 작성하는 영역
- 서블릿으로 변환 시 _jspService() '내부'에 그대로 기술
● 표현식(Expression)
- 프로그래밍 언어에서 표현식은 '실행 결과로 하나의 값이 남는 문장'. 즉 상수,변수, 연산자를 사용한 식, '변환값이 있는' 메서드 호출 등이 모두 표현식에 속함
- JSP의 표현식도 마찬가지이며, 주로 변수의 값을 웹 브라우저 화면에 출력할 때 사용
- 스크립틀릿 안에서 변수를 출력할 때는 out.print()를 사용해야 하지만, 표현식은 좀 더 단순한 방법으로 출력하기 위해 사용