[JSP 2-1] page Directive

임승현·2022년 12월 6일
0

JSP

목록 보기
4/20

◈ webapp 폴더에 directive 폴더 생성

🐧지시어(Directive)

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

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

📌Include Directive : JSP 문서에 외부파일의 코드를 포함하도록 지시

→ <%@include file="URL" %>

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

→ <%@taglib prefix="namespace" uri="tldId" %>

📃directive.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>지시어(Directive)</h1>
	<hr>
	<p>Page Directive : JSP 문서에 필요한 정보를 제공하도록 지시</p>
	<p>&lt;%@page 속성="속성값" 속성="속성값" ... %&gt;</p>
	<p>Include Directive : JSP 문서에 외부파일의 코드를 포함하도록 지시</p>
	<p>&lt;%@include file="URL" %&gt;</p>
	<p>taglib Directive : JSP 문서에 태그 라이브러리 파일(커스텀 태그)을 포함하도록 지시</p>
	<p>&lt;%@taglib prefix="namespace" uri="tldId" %&gt;</p>
	<p></p>
	<p></p>
	<p></p>
	<p></p>
</body>
</html>

🐧page Directive - contentType 속성

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

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

🔊 "text/html; → "application/msword; 변경시 워드 파일로 열림

📃page_contentType.jsp

<%--<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%> --%>
<%@ page language="java" contentType="application/msword; charset=UTF-8"
    pageEncoding="UTF-8"%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
<style type="text/css">
table {
	border: 1px solid black;
	border-collapse: collapse;
}
td {
	border: 1px solid black;
	text-align: center;
	width: 200px;
	padding: 2px;
}
</style>
</head>
<body>
	<h1>page Directive - contentType 속성</h1>
	<hr>
	<p>contentType 속성에는 JSP 문서를 요청하여 응답받을 수 있는 파일형식(MimeType)과 파일의 문자형태(CharacterSet - Encoding)를 속성값으로 설정</p>
	<hr>
	<table>
		<tr>
			<td>학번</td><td>이름</td><td>주소</td>
		</tr>
		<tr>
			<td>1000</td><td>홍길동</td><td>서울시 강남구 역삼동</td>
		</tr>
		<tr>
			<td>2000</td><td>임꺽정</td><td>인천시 월미구 상당동</td>
		</tr>
		<tr>
			<td>3000</td><td>전우치</td><td>수원시 팔달구 구래동</td>
		</tr>
	</table>
</body>
</html>

🐧page Directive - import 속성

📌 import 속성에는 JSP 문서에서 사용할 클래스 또는 인터페이스를 속성값으로 설정
→ 클래스 또는 인터페이스의 패키지를 명확하게 표현하여 제공

📌 page Directive에서는 동일한 속성을 다른 속성값으로 중복 선언할 경우 JSP 문서 실행시 500 에러 발생 - import 속성 제외

<%@page import="java.util.List, java.util.ArrayList"%>

📌 page Directive의 import 속성은 자동 완성 기능 사용

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>

📃page_import.jsp

<%-- page Directive에서는 동일한 속성을 다른 속성값으로 중복 선언할 경우 JSP 문서 실행시 500 에러 발생 - import 속성 제외 --%>
<%--<%@page import="java.util.List, java.util.ArrayList"%>--%>
<%-- page Directive의 import 속성은 자동 완성 기능 사용 --%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	//java.util.List<java.lang.String> nameList=new java.util.ArrayList<java.lang.String>();//정석
	List<String> nameList=new ArrayList<String>();//List 입력후 [ctrl] + [space]
	//
	nameList.add("홍길동");
	nameList.add("임꺽정");
	nameList.add("전우치");
	nameList.add("일지매");
	nameList.add("장길산");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
</head>
<body>
	<h1>page Directive - import 속성</h1>
	<hr>
	<p>import 속성에는 JSP 문서에서 사용할 클래스 또는 인터페이스를 속성값으로 설정</p>
	<p>→ 클래스 또는 인터페이스의 패키지를 명확하게 표현하여 제공</p>
	<hr>
	<ul>
	<% for(String name:nameList) {%>
		<li><%=name %></li>
	<% } %>
	</ul>
</body>
</html>

🌟page Directive - errorPage 속성

📌 방법1) errorPage 속성에는 JSP 문서 실행시 에러(예외)가 발생될 경우 클라이언트에게 500 에러코드 대신 에러 페이지로 응답하기 위한 웹문서의 URL 주소를 속성값으로 설정
→ 클라이언트의 URL 주소 미변경

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

🔊errorPage="page_error.jsp" 추가

📃page_errorPage.jsp

<%--<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="page_error.jsp"%>--%>
<%-- [web.xml] 파일에서 모든 웹프로그램의 요청과 실행에 의해 발생되는 에러코드(4XX 도는 5XX)를 클라이언트에게 전달하는 대신 에러페이지로 응답되도록 설정 가능 --%>
<%-- → 클라이언트 URL 주소 미변경 --%> 
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>  
<%
	//String text="ABCDEFG";
	String text=null;
	//
	//int num=10/0;//ArithmeticException 예외 발생
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
</head>
<body>
	<h1>page Directive - errorPage 속성</h1>
	<hr>
	<p>errorPage 속성에는 JSP 문서 실행시 에러(예외)가 발생될 경우 클라이언트에게 500 에러코드 대신 에러 페이지로 응답하기 위한 웹문서의 URL 주소를 속성값으로 설정</p>
	<p>→ 클라이언트의 URL 주소 미변경</p>
	<hr>
	<p>문자열의 문자갯수 = <%=text.length() %></p>
</body>
</html>

📃page_error.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="page_error.jsp"%>
<%
	//String text="ABCDEFG";
	String text=null;
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
</head>
<body>
	<h1>page Directive - errorPage 속성</h1>
	<hr>
	<p>errorPage 속성에는 JSP 문서 실행시 에러(예외)가 발생될 경우 클라이언트에게 500 에러코드 대신 에러 페이지로 응답하기 위한 웹문서의 URL 주소를 속성값으로 설정</p>
	<p>→ 클라이언트의 URL 주소 미변경</p>
	<hr>
	<p>문자열의 문자갯수 = <%=text.length() %></p>
</body>
</html>

◈ webapp 폴더에 error 폴더 생성
📌 방법2) [web.xml] 파일에서 모든 웹프로그램의 요청과 실행에 의해 발생되는 에러코드(4XX 도는 5XX)를 클라이언트에게 전달하는 대신 에러페이지로 응답되도록 설정 가능
→ 클라이언트 URL 주소 미변경

🎨web.xml 파일 생성

📍 error-page : 에러페이지를 등록하기 위한 엘리먼트
📍 exception-type : 웹프로그램 실행시 발생되는 예외에 대한 예외클래스를 설정하기 위한 엘리먼트
📍 location : 에러코드 대신 응답될 에러페이지의 URL 주소를 설정하는 엘리먼트

<error-page>
  	<!-- exception-type : 웹프로그램 실행시 발생되는 예외에 대한 예외클래스를 설정하기 위한 엘리먼트 -->
  	<exception-type>java.lang.NullPointerException</exception-type>
  	<!-- location : 에러코드 대신 응답될 에러페이지의 URL 주소를 설정하는 엘리먼트 -->
  	<location>/error/error_null.jsp</location>
</error-page>

📍 error-code : 에러코드를 설정하기 위한 엘리먼트

<error-page>
  	<!-- error-code : 에러코드를 설정하기 위한 엘리먼트 -->
  	<error-code>500</error-code>
  	<location>/error/error_500.jsp</location>
  </error-page>

📃web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
  <display-name>jsp</display-name>
  <!--  -->
  <!-- error-page : 에러페이지를 등록하기 위한 엘리먼트 -->
  <error-page>
  	<!-- exception-type : 웹프로그램 실행시 발생되는 예외에 대한 예외클래스를 설정하기 위한 엘리먼트 -->
  	<exception-type>java.lang.NullPointerException</exception-type>
  	<!-- location : 에러코드 대신 응답될 에러페이지의 URL 주소를 설정하는 엘리먼트 -->
  	<location>/error/error_null.jsp</location>
  </error-page>
  <!--  -->
  <error-page>
  	<!-- error-code : 에러코드를 설정하기 위한 엘리먼트 -->
  	<error-code>500</error-code>
  	<location>/error/error_500.jsp</location>
  </error-page>
  <!--  -->
  <error-page>
  	<error-code>400</error-code>
  	<location>/error/error_400.jsp</location>
  </error-page>
  <!--  -->
   <error-page>
  	<error-code>404</error-code>
  	<location>/error/error_404.jsp</location>
  </error-page>
  <!--  -->
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

📃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>에러페이지(NullPointerException)</h1>
	<hr>
	<p>요청한 프로그램 실행시 예기치 못한 오류가 발생 되었습니다.
	빠른 시일내로 조치 하겠습니다.</p>
</body>
</html>

📃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>에러페이지(500)</h1>
	<hr>
	<p>요청한 프로그램 실행시 예기치 못한 오류가 발생 되었습니다.
	빠른 시일내로 조치 하겠습니다.</p>
</body>
</html>

📃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>에러페이지(400)</h1>
	<hr>
	<p>비정상적인 방법으로 프로그램 요청을 시도 하였습니다.
	정상적인 방법으로 사이트를 이용해 주세요.</p>
</body>
</html>

📃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>에러페이지(404)</h1>
	<hr>
	<p>원하시는 페이지의 주소가 잘못 입력되었거나,
	변경 혹은 삭제되어 요청하신 페이지를 찾을 수가 없습니다.</p>
</body>
</html>

0개의 댓글