JSP에는 page, include, taglib 3가지 종류의 지시자가 있다. JSP페이지에 대한 전체 속성을 지정한다. JSP문서의 제일 윗부분에 위치한다.
<%@ 지시자 속성="값" ... %>
<%@ page 속성="값" ... %>
속성에는 language, extends(JSP페이지가 특정 클래스로부터 상속받을 때), import(자바의 import와 동일 목적)등이 있다.
아래는 예시 - 오늘 날짜 출력하기.
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.Calendar" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//자바 코드를 적는 스크립틀릿
Calendar date = Calendar.getInstance();
SimpleDateFormat today = new SimpleDateFormat("yyyy년 MM월 dd일");
SimpleDateFormat now = new SimpleDateFormat("hh시 mm분 ss초");
%>
오늘은 <b> <%= today.format(date.getTime()) %></b>입니다. <br>
지금 시각은 <b> <%= now.format(date.getTime()) %></b>입니다.
</body>
</html>
session 속성
기본적으로 true. 세션을 사용할 지 여부를 결정한다. 웹 서비스를 받는 사용자를 구분하는 단위
그 외에도 buffer, autoFlush, isThreadSafe, info 속성 등이 있다.
errorPage 속성
JSP페이지에서 에러가 발생하였을 때 보여줄 에러페이지를 설정한다.
<%@ page errorPage="error.jsp" %>
<%@ page isErrorPage="true" %>
divide.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- JSP 페이지에서 에러가 발생하였을 때 보여줄 에러 페이지로 error.jsp --%>
<%@ page errorPage="error.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
</head>
<body>
---고의로 에러를 발생시키는 페이지---
0으로 나누는 것은 불능입니다.
<%-- 강제로 예외를 발생시킴 --%>
<%= 2/0 %>
</body>
</html>
error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- 현재 페이지가 에러 페이지임을 설정 --%>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
다음과 같은 에러가 발생하였습니다.
<%= exception.getMessage() %>
</body>
</html>
현재 페이지에 다른 HTML문서나 JSP페이지의 내용을 삽입할 때 사용. include 지시자의 유일한 속성인 file에는 삽입할 파일의 URL을 기술한다.
JSP페이지에 include지시자를 사용하면 서블릿 컨테이너가 file로 적은 파일을 JSP파일 안으로 포함시킨다.
다음은 페이지 하단의 저작권 표시를 footer.jsp에 저장해 include지시자로 포함시키는 예.
footer.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<hr>
<div id="copyright">
All contents Copyright .... All contents Copyright .... All contents Copyright .... All contents Copyright .... All contents Copyright .... All contents Copyright .... All contents Copyright ....
</div>
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3> 프론트 페이지 </h3>
<a href="P170_sub.jsp"> 서브 페이지로 이동하기 </a><br>
<%@ include file="P170_footer.jsp" %>
</body>
</html>
sub.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3> 서브 페이지 </h3>
<a href="P170_main.jsp"> 메인 페이지로 되돌아가기 </a><br>
<%@ include file="P170_footer.jsp" %>
</body>
</html>