본문 바로가기

학원/복기

[JSP] 지시어(Directive) - page

지시어(Directive)

 

 

page : JSP 문서에 필요한 정보를 제공하도록 지시

<%@page 속성="속성값" 속성="속성값" ... %>

 

include  : JSP 문서에 외부파일의 소스코드(SourceCode)를 포함하도록 지시

<%@include file="URL" %>

 

taglib : JSP 문서에 태그 라이브러리 파일(커스텀 태그)을 포함하도록 지시

<%@tablib prefix="namespace" uri="tldId" %>

page Directive 

1. contentType 속성 

page Directive의 contentType 속성에는 JSP 문서를 요청하여 응답 받을 수 있는 파일형태(MimeType)와 파일의 문자형태(CharacterSet - Encoding)를 속성값으로 설정한다.

 

 

예시1)  JSP 페이지의 콘텐츠 유형을 HTML로 지정하고, 파일의 문자형태를 UTF-8 로 설정

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

 

예시2) JSP 페이지의 콘텐츠 유형을 MS Word 문서(.doc)로 지정하고, 파일의 문자형태를 UTF-8 로 설정

<%@ page language="java" contentType="application/msword; charset=UTF-8" pageEncoding="UTF-8"%>

2. import 속성 

 

page Directive의 import 속성에는 JSP 문서에서 사용할 클래스 또는 인터페이스를 속성값으로 설정한다. import 속성을 사용하는 이유는 클래스 또는 인터페이스의 패키지를 사용하여 명확하게 표현하기 위해서이다. 

 

page 디렉티브에서는 import 속성을 제외하고, 다른 속성값이 저장된 동일한 속성을 여러번 선언할 경우 500 에러가 발생한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ contentType="text/html; charset=UTF-8" %>

<!--500 에러 발생-->

 

page 디렉티브의 import 속성과 속성값은 자동 완성 기능을 사용한다.

 

 

예제)

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	List<String> nameList=new ArrayList<>();
	nameList.add("김민지");
	nameList.add("강해린");
	nameList.add("김태리");
	nameList.add("강하늘");
	nameList.add("박서준");
	nameList.add("구교환");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
</head>
<body>
	<h1>import 속성</h1>
	<hr>
	<% for(String name : nameList) { %>
		<li><%= name %></li>
	<% } %>
</body>
</html>

 


 

3. errorPage 속성 

 

page Directive의 errorPage 속성에는 JSP 문서 실행시 에러(예외)가 발생될 경우 클라이언트에게 500 상태코드 대신 에러페이지로 응답하기 위한 웹문서의 URL 주소를 속성값으로 설정한다. (클라이언트 URL 주소는 변경되지 않는다.)

 

 

예제) JSP 페이지에서 예외가 발생하면 page_error.jsp 페이지로 이동하여 오류를 처리하도록 설정

 

[page_errorPage.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="page_error.jsp"%>
<%
	String text=null;
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
</head>
<body>
	<h1>page Directory - errorPage 속성</h1>
	<hr>
	<p>문자열의 문자 갯수 = <%=text.length() %></p>
</body>
</html>

 

 

[page_error.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
</head>
<body>
	<h1>에러페이지</h1>
	<hr>
	<p>요청한 프로그램 실행시 예기치 못한 오류가 발생되었습니다. 
	빠른 시일내로 조치 하겠습니다.</p>
</body>
</html>

 

 


이처럼 JSP 문서에서 page Directive의 errorPage 속성을 이용하여 JSP 문서 실행시 예외가 발생되면 에러페이지로 응답처리되도록 설정할 수 있지만 JSP 문서마다 속성을 errorPage 설정해야하는 문제점이 발생한다.

 

이 때 WAS 프로그램에 의해 에러코드(4XX or 5XX)가 전달될 때 에러페이지로 응답되도록 설정이 가능하다.

[web.xml] 파일에 에러코드 대신 응답될 에러페이지의 URL 주소를 설정하여 프로젝트에서 작성된 모든 웹프로그램 실행시 발생되는 에러코드 대신 에러페이지로 응답 처리할 수 있다. 

 

web.xml 위치
error 폴더 생성

 

 

error-page : 예외(Exception) 또는 에러코드 대신 응답될 에러페이지를 설정하기 위한 엘리먼트

exception-type : 예외클래스를 설정하기 위한 엘리먼트

→ 웹프로그램 실행시 해당 예외가 발생될 경우 에러페이지로 응답하기 위해 설정

location : 에러코드 대신 응답될 웹문서의 URL 주소를 설정하기 위한 엘리먼트 

 

 

예제) java.lang.NullPointerException 예외가 발생했을 때 /error/error_null.jsp 페이지로 이동하여 오류를 처리하도록 설정

 

[web.xml]

<error-page>
	  <exception-type>java.lang.NullPointerException</exception-type>
	  <location>/error/error_null.jsp</location>
</error-page>

 

[error_null.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
</head>
<body>
	<h1>에러페이지</h1>
	<hr>
	<p>요청하신 웹프로그램 실행시 NullPointerException이 발생 하였습니다. 
	빠른 시일내로 조치 하겠습니다.</p>
</body>
</html>

 

[page_errorPage.jsp] 의 errorPage 속성을 없애야 한다.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

 


error-code 

<error-code> 엘리먼트를 사용하여 특정 HTTP 오류 코드에 해당하는 오류 페이지를 설정할 수 있다.

 

 

예제1) 500 오류 코드에 대한 오류 페이지를 설정

 

[web.xml]

<error-page>
	<error-code>500</error-code>
	<location>/error/error_500.jsp</location>
</error-page>

 

[error_500.jsp] 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
</head>
<body>
	<h1>에러페이지</h1>
	<hr>
	<p>요청한 프로그램 실행시 예기치 못한 오류가 발생되었습니다.
	빠른 시일내로 조치 하겠습니다.</p>
</body>
</html>

 

예제2) 400 오류 코드에 대한 오류 페이지를 설정

 

[web.xml]

<error-page>
	<error-code>400</error-code>
	<location>/error/error_400.jsp</location>
</error-page>

 

[error_400.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
</head>
<body>
	<h1>에러페이지</h1>
	<hr>
	<p>비정상적인 방법으로 프로그램을 요청 하였습니다.
	정상적인 방법으로 사이트를 이용해 주세요.</p>
</body>
</html>

 

 

 

예제3) 404 오류 코드에 대한 오류 페이지를 설정

 

[web.xml]

<error-page>
	<error-code>404</error-code>
	<location>/error/error_404.jsp</location>
</error-page>

 

[error_404.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
</head>
<body>
	<h1>에러페이지</h1>
	<hr>
	<p>원하시는 페이지의 주소가 잘못 입력되었거나, 변경 혹은 삭제되어 요청하신
	페이지를 찾을 수 없습니다.</p>
</body>
</html>