◈ webapp 폴더에 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>→ <%@page 속성="속성값" 속성="속성값" ... %></p> <p>Include Directive : JSP 문서에 외부파일의 코드를 포함하도록 지시</p> <p>→ <%@include file="URL" %></p> <p>taglib Directive : JSP 문서에 태그 라이브러리 파일(커스텀 태그)을 포함하도록 지시</p> <p>→ <%@taglib prefix="namespace" uri="tldId" %></p> <p></p> <p></p> <p></p> <p></p> </body> </html>
📌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>
📌 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>
📌 방법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>