기본 구문
<%@ 지시어종류 속성1="값1" 속성2="값2" ... %>
속성 | 내용 | 기본값 |
---|---|---|
info | 페이지에 대한 설명을 입력 | 없음 |
language | 페이지에서 사용할 스크립팅 언어를 지정 | java |
contentType | 페이지에서 생성할 MIME 타입을 지정 | 없음 |
pageEncoding | charset과 같이 인코딩을 지정 | ISO-8859-1 |
import | 페이지에서 사용할 자바 패키지와 클래스를 지정 | 없음 |
session | 세션 사용 여부를 지정 | true |
buffer | 출력 버퍼의 크기를 지정. 버퍼를 사용하지 않으려면 "none"으로 지정 | 8KB |
autoFlush | 출력 버퍼가 모두 채워졌을 때 자동으로 비울 지를 결정. buffer 속성이 none일 떼 false로 지정하면 에러가 발생 | true |
trimeDirectiveWhitespaces | 지시어 선언으로 인한 공백을 제거할지 여부를 지정 | false |
errorPage | 해당 페이지에서 에러가 발생했을 때 에러 발생 여부를 보여줄 페이지를 지정 | 없음 |
isErrorPage | 해당 페이지가 에러를 처리할지 여부를 지정 | false |
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.text.SimpleDateFormat"%>
<%@ page import="java.util.Date"%>
java에서 사용하는 SimpleDateFormat와 Date를 JSP파일에 임포트
JSP 실행중 에러가 발생하면 에러화면이 이렇게 뜬다.
이러한 상황은 사용자에게 서비스에 대한 신뢰도를 떨어뜨리기에 방지하여야한다.
errorPage,isErrorPage 속성을 사용하여 개발자가 지정한 JSP 화면을 보여줄 수있다.
ErrorPage.jsp
<%@ page errorPage="IsErrorPage.jsp"%>
IsErrorPage.jsp
<%@ page isErrorPage="true"%>
errorPage 속성에 에러시 출력할 페이지를 지정하고 isErrorPage를 true로 설정하면 IsErrorPage가 출력된다.
사진처럼 페이지 소스 보기를하면 공백이 있다.
그 이유는 page 지시어가 있는 공간이 공백으로 처리되었기 때문이다.
<%@ page trimDirectiveWhitespaces="true"%>
trimDirectiveWhitespaces 속성을 true 로 하면 공백을 제거할 수 있다.
JSP 파일은 서블릿 코드로 변환된 후 컴파일되어 class 파일로 만들어진다.
이를 실행한 결과물을 HTML 형태로 웹브라우저에 보내 화면에 출력하는 과정을 거친다.
이 과정에서 웹 브라우저로 즉시 전송하지 않고, 출력할 내용을 버퍼에 저장했다가 일정량이 되었을 때 전송한다.
JSP는 버퍼를 사용함으로써 포워드와 에러 페이지 처리를 한다.
JSP가 생성한 결과를 일단 버퍼에 저장하고 실행도중 에러가 발생하면 버퍼에 저장된 내용을 삭제하고 에러 화면을 표시한다.
<%@ page buffer="1kb"%>
<%@ page buffer="none"%>
버퍼의 크기를 설정할 수 있고
버퍼를 사용하고 싶지 않다면 none 로 설정한다.
<%@ page autoFlush="true"%>
true 이면 버퍼가 채워지면 자동으로 플러시하고
false 이면 버퍼가 채워지면 예외를 발생시킨다.
<%@ include file="포함할 파일의 경로">
<%! 멤버 변수나 메서드 선언 %>
선언부에서는 멤버 변수나 메서드를 선언한다.
서블릿으로 변환 시 _jspService() 메서드 외부에 선언된다.
<% 자바 코드 %>
JSP 페이지가 요청을 받을 때 실행돼야 할 자바 코드를 작성하는 영역.
서블릿으로 변환 시 _jspService() 메서드 내부에 기술된다.
<%= 자바 표현식 %>
실행 결과로 하나의 값이 남는 문장을 뜻한다.
상수, 변수, 연산자를 사용한 수식, 반환값이 있는 메서드 호출등이다.
스크립트요소를 사용한 예시이다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%! // 선언부(메서드 선언)
public int add(int num1 , int num2) {
return num1 + num2;
}
%>
<html>
<head><title>스크립트 요소</title></head>
<body>
<% // 스크립틀릿(자바 코드)
int result = add(10, 20);
%>
덧셈 결과 1 : <%= result %> <br /> // 표현식(변수)
덧셈 결과 2 : <%= add(30, 40) %> // 표현식(메서드 호출)
</body>
</html>